Jump to content
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Скачивание файла в новом окне в Downloads

Ребята, всем привет!

В общем, поставил себе IPS 4.5.3, сделал загрузку файлов в Downloads по ссылке, потому как требуется именно так. Но проблема в том, что не могу никак сделать, чтобы при клике на кнопку Скачать, сайт открывался в новом окне, а не в этом же.

Пробовал в код шаблона ставить на эту кнопку банальный target="_blank", так же пробовал через js onclick, ничего короче не работает. Посоветуйте гуру, как решить данную проблему? Заранее благодарен за помощь.

Featured Replies

target blank должен был сработать. Возможно не к тому элементу добавился. Нужно точно убедится в его наличие или в исходном коде или в инспекторе элементов. Можно попробовать также добавить rel="external" (если его нету).

  • Author
1 минуту назад, siv1987 сказал:

target blank должен был сработать. Возможно не к тому элементу добавился. Нужно точно убедится в его наличие или в исходном коде или в инспекторе элементов. Можно попробовать также добавить rel="external" (если его нету).

Я, вроде как, хорошо знаю html, но вот тут никакие способы что-то не помогают(( может кусок кода мне скинуть сюда?

Давайте код, показывайте скриншоты, давайте все детали что есть.

Нужно точно смотреть в исходном коде, разные форматы файлов могут генерироваться разными участками кода.

  • Author

В общем, версия IPS 4.5.3, ниже код самой кнопки из Downloads

<ul class="ipsToolList ipsToolList_vertical ipsClearfix">
						{{if $file->canBuy()}}
							{{if $file->canDownload()}}
								{template="downloadButton" group="view" app="downloads" params="$file"}
							{{endif}}
							<li class='ipsToolList_primaryAction'>
								{{if !$file->isPurchasable( FALSE )}}
									<span class="ipsType_light ipsType_blendLinks ipsResponsive_hidePhone ipsResponsive_inline"><i class="fa fa-info-circle"></i> {lang="purchasing_disabled"}</span>
								{{else}}
									<a href='{$file->url('buy')->csrf()}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->container()->message('disclaimer') AND \in_array( $file->container()->disclaimer_location, [ 'purchase', 'both'])}}data-ipsDialog{{endif}}><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price = $file->price()}} - {$price|raw}{{endif}}</a>
								{{endif}}
							</li>
						{{else}}
							{{if $file->canDownload() or !$file->downloadTeaser()}}
								{template="downloadButton" group="view" app="downloads" params="$file"}
							{{else}}
								{$file->downloadTeaser()|raw}
							{{endif}}
						{{endif}}
						{{if ( isset( $purchasesToRenew ) or $purchasesToRenew = $file->purchasesToRenew() ) and \count( $purchasesToRenew )}}
							<li class='ipsToolList_primaryAction'>
								{{if \count( $purchasesToRenew ) === 1}}
									{{foreach $purchasesToRenew as $purchase}}
										<a href='{$purchase->url()->setQueryString('do', 'renew')->csrf()}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important'><i class='fa fa-refresh'></i> &nbsp;{lang="purchase_renew_now"} - {$purchase->renewals->cost}</a>
									{{endforeach}}
								{{else}}
									<a href='#elFileRenew_menu' id='elFileRenew' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' data-ipsMenu><i class='fa fa-refresh'></i> &nbsp;{lang="purchase_renew_now"} <i class="fa fa-caret-down"></i></a>
									<ul id='elFileRenew_menu' class='ipsMenu ipsMenu_auto ipsHide'>
										{{foreach $purchasesToRenew as $purchase}}
											<li class='ipsMenu_item'><a href="{$purchase->url()->setQueryString('do', 'renew')->csrf()}">{$purchase->name}<br><span class='ipsType_light'>{$purchase->renewals}</span></a></li>
										{{endforeach}}
									</ul>		
								{{endif}}						
							</li>
						{{endif}}
					</ul>

 

В шаблоне downloadButton видно что генерируется ссылка. Вы где именно добавляете атрибут?
Я ведь не даром упомянул что нужно смотреть есть атрибут в коде или нет, возможно вы его просто не к тому элементу добавляете.

Покажите исходный код из браузера вашей ссылки где есть атрибут target и ссылка не открывается в новом окне.

  • Author
17 минут назад, Dedsec сказал:

<a href='{$file->url('buy')->csrf()}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->container()->message('disclaimer') AND \in_array( $file->container()->disclaimer_location, [ 'purchase', 'both'])}}data-ipsDialog{{endif}}><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price = $file->price()}} - {$price|raw}{{endif}}</a>

Вот сюда перед href ставлю target='_blank'

  • Author
15 минут назад, siv1987 сказал:

В шаблоне downloadButton видно что генерируется ссылка.

Очень Вас благодарю! Спасибо огромное! Всё реально получилось, проставил в этом шаблоне и гуд

 

24 минуты назад, Dedsec сказал:

Всё реально получилось, проставил в этом шаблоне и гуд

Собственно как и подсказывали мои экстрасенсорные способности - там стопицот ссылок, легко ошибиться и вписать код не туда, даже с хорошим знанием html.

  • 3 years later...

Извиняюсь за поднятие старой темы, но у меня точно такая же проблема, и способ исправления указанный тут, не помогает. Версия IPS 4.7.12.

Вставляю target="_blank" как написано здесь, в шаблон downloadButton, но ссылки как открывались в текущем окне, так и открываются:

<a target="_blank" href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_veryLarge ipsButton_positive' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}} data-datalayer-postfetch><i class="fa fa-download"></i> {lang="download_now"}</a>

В инспекторе элементов если просмотреть код, то атрибута target="_blank" нет. Не пойму в чем дело, когда-то на начальных билдах 4-ой версии все работало.

P.S. Частично обнаружил проблему: попробовал наудачу изменить код в стандартном шаблоне - заработало. А вот на стороннем (ipsfocus) не работает, хотя код шаблонов идентичен.

P.P.S. Нашел причину, и она очень странная) В общем, код в стандартном шаблоне:

<a target="_blank" href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}} data-datalayer-postfetch >{lang="download_now"}</a>

Код в шаблоне сторонней темы:

<a target="_blank" href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_veryLarge ipsButton_positive' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}} data-datalayer-postfetch>{lang="download_now"}</a>

В стороннем шаблоне изменили кнопку, сделав ее больше и поменяли цвет. Я попробовал сменить ipsButton_veryLarge на ipsButton_large - и все заработало. Попробовал менять на все доступные значения от small до veryLarge - не работает только на veryLarge.

Edited by DevilDriver

Рано радовался, как говорится 🙂

Нашел еще одну проблему: если для пользователя включен таймер ожидания перед скачиванием, то ссылка в новой вкладке не открывается. Не помогает и прописывание target="_blank" в шаблоне multipleFiles в строке 

<a href='{$fileObject->url('download')->setQueryString( array( 'r' => $k, 'confirm' => 1, 't' => 1, 'version' => isset( \IPS\Request::i()->version ) ? \IPS\Request::i()->version : NULL ) )->csrf()}' class='ipsButton ipsButton_positive ipsButton_large' data-action="download" {{if member.group['idm_wait_period']}}data-wait='true'{{endif}}><i class="fa-solid fa-download"></i> {lang="download"}</a>

Путем тестов было обнаружено, что если добавить в эту строку target="_blank" и удалить data-action="download", то ссылка открывается в новом окне, но при этом таймер ожидания не запускается, ссылка открывается сразу. Есть ли варианты как-то исправить это? Рабочий таймер ожидания к сожалению необходим.

Edited by DevilDriver

А какой смысл в новом окне? пользователь все равно останется на текущей странице.

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.