Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Dedsec

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

Recommended Posts

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

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

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

Share this post


Link to post

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

  • Like 1

Share this post


Link to post
1 минуту назад, siv1987 сказал:

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

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

Share this post


Link to post

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

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

  • Like 1

Share this post


Link to post

В общем, версия 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>

 

Share this post


Link to post

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

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

  • Upvote 1

Share this post


Link to post
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'

Share this post


Link to post
15 минут назад, siv1987 сказал:

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

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

Share this post


Link to post

 

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

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

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

Share this post


Link to post

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

Share this post


Link to post

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

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

Share this post


Link to post

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

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...