Перейти к публикации
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, ничего короче не работает. Посоветуйте гуру, как решить данную проблему? Заранее благодарен за помощь.

Рекомендованные сообщения

Опубликовано:

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

Опубликовано:
  • Автор
1 минуту назад, siv1987 сказал:

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

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

Опубликовано:

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

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

Опубликовано:
  • Автор

В общем, версия 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 и ссылка не открывается в новом окне.

Опубликовано:
  • Автор
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'

Опубликовано:
  • Автор
15 минут назад, siv1987 сказал:

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

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

Опубликовано:

 

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

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

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

  • 3 года спустя...
Опубликовано:

Извиняюсь за поднятие старой темы, но у меня точно такая же проблема, и способ исправления указанный тут, не помогает. Версия 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.

Изменено пользователем 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", то ссылка открывается в новом окне, но при этом таймер ожидания не запускается, ссылка открывается сразу. Есть ли варианты как-то исправить это? Рабочий таймер ожидания к сожалению необходим.

Изменено пользователем DevilDriver

Опубликовано:

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

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.