Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Модуль "баннер". Открытие ссылки в новом окне.


Recommended Posts

Понадобилось реализовать следующий функционал: если ссылка в баннере ведет на внутренний сайт - страница открывается в текущем окне, если ссылка внешняя - открывается в новом окне.

Остановилась на следующем решении:

В админке 'Система -> Дизайн -> Баннеры -> Изменить' в поле 'Ссылка' после ссылки через пробел добавляем '_blank', если требуется открывать ссылку в новом окне.

Т.е. 'http://www.mysite.ru _blank'

Пишем простой парсер:

Файл catalog/view/theme/default/template/module/banner.tpl

Находим:

<div id="banner<?php echo $module; ?>" class="banner">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) { ?>
  <div><a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>
  <?php } else { ?>
  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>
  <?php } ?>
  <?php } ?>
</div>
меняем на:
<div id="banner<?php echo $module; ?>" class="banner">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) {
	$myhref = $banner['link'];
	if (substr($myhref, -6) == '_blank') { // Ссылка в админке заканчивается на "_blank"?
	  $myhref = 'href="'. substr($myhref, 0, -7) . '" target="_blank"';	// Отрезаем " _blank" (с пробелом) и ставим target="_blank"
	} else {
	  $myhref = 'href="'. $myhref . '"';
	}
	  ?>
  <div><a <?php echo $myhref; ?>><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>
  <?php } else { ?>
  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>
  <?php } ?>
  <?php } ?>
</div>

Создаем шпаргалку для манагеров.

Файл admin/language/russian/design/banner.php

Найти:

$_['entry_link']		 = 'Ссылка:';
Заменить на:
$_['entry_link']		 = 'Ссылка: <span style="font-size: smaller; font-style: normal;">чтобы ссылка открывалась в новом окне, добавьте через пробел " _blank", например, "http://mysite.ru _blank"</span>';

Может кому-то пригодится :-)

З. Ы. По моему я не в ту ветку запостила, переместите, плиз, в соответствующий раздел. ((

  • +1 7
Link to comment
Share on other sites


  • 5 months later...
  • 1 month later...
  • 3 months later...
  • 4 weeks later...

Понадобилось реализовать следующий функционал: если ссылка в баннере ведет на внутренний сайт - страница открывается в текущем окне, если ссылка внешняя - открывается в новом окне.

Остановилась на следующем решении:

В админке 'Система -> Дизайн -> Баннеры -> Изменить' в поле 'Ссылка' после ссылки через пробел добавляем '_blank', если требуется открывать ссылку в новом окне.

Т.е. 'http://www.mysite.ru _blank'

Пишем простой парсер:

Файл catalog/view/theme/default/template/module/banner.tpl

Находим:

<div id="banner<?php echo $module; ?>" class="banner">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) { ?>
  <div><a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>
  <?php } else { ?>
  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>
  <?php } ?>
  <?php } ?>
</div>
меняем на:
<div id="banner<?php echo $module; ?>" class="banner">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) {
	$myhref = $banner['link'];
	if (substr($myhref, -6) == '_blank') { // Ссылка в админке заканчивается на "_blank"?
	  $myhref = 'href="'. substr($myhref, 0, -7) . '" target="_blank"';	// Отрезаем " _blank" (с пробелом) и ставим target="_blank"
	} else {
	  $myhref = 'href="'. $myhref . '"';
	}
	  ?>
  <div><a <?php echo $myhref; ?>><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>
  <?php } else { ?>
  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>
  <?php } ?>
  <?php } ?>
</div>
Создаем шпаргалку для манагеров.

Файл admin/language/russian/design/banner.php

Найти:

$_['entry_link']		 = 'Ссылка:';
Заменить на:
$_['entry_link']		 = 'Ссылка: <span style="font-size: smaller; font-style: normal;">чтобы ссылка открывалась в новом окне, добавьте через пробел " _blank", например, "http://mysite.ru _blank"</span>';
Может кому-то пригодится :-)

З. Ы. По моему я не в ту ветку запостила, переместите, плиз, в соответствующий раздел. ((

 

 

 

 

А МОЖНО ТОТ ЖЕ ФУНКЦИОНАЛ только для карусели брендов на главной, а то при нажатии на бренд ссылка открывается не в новом, а в текущем окне!

 

Заранее благодарен!)

Link to comment
Share on other sites


  • 9 months later...

А МОЖНО ТОТ ЖЕ ФУНКЦИОНАЛ только для карусели брендов на главной, а то при нажатии на бренд ссылка открывается не в новом, а в текущем окне!

 

Заранее благодарен!)

 

 

Ребят, подскажите решение с такой же проблемой в модуле "Слайдшоу

 

 

Файл catalog/view/theme/папка с темой/template/module/carousel.tpl     

Например для дефолтной темы  

Файл catalog/view/theme/default/template/module/carousel.tpl   

 

Заменяем все содержимое на:

 

 

<div id="carousel<?php echo $module; ?>">

  <ul class="jcarousel-skin-opencart">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) {
$myhref = $banner['link'];
if (substr($myhref, -6) == '_blank') { // Ссылка в админке заканчивается на "_blank"?
 $myhref = 'href="'. substr($myhref, 0, -7) . '" target="_blank"'; // Отрезаем " _blank" (с пробелом) и ставим target="_blank"
} else {
 $myhref = 'href="'. $myhref . '"';
}
 ?>
 <li><a <?php echo $myhref; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></li>
  <?php } else { ?>
  <li><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></li>
  <?php } ?>
  <?php } ?>
</div>
<script type="text/javascript"><!--
$('#carousel<?php echo $module; ?> ul').jcarousel({
vertical: false,
visible: <?php echo $limit; ?>,
scroll: <?php echo $scroll; ?>
});
//--></script>
 
Просто, если данная проблема для кого то актуальна.

Думаю она до сих пор для всех актуальна, так как в релизе данная проблема так и не решилась. Обычно нужно ставить баннера с ссылкой на внешние сайты и чтобы пользователи не покидали ваш сайт нужно перенаправлять их в отдельное окно, что в ОкСторе это не предусмотрено. 

Link to comment
Share on other sites


  • 3 weeks later...
  • 11 months later...

Понадобилось реализовать следующий функционал: если ссылка в баннере ведет на внутренний сайт - страница открывается в текущем окне, если ссылка внешняя - открывается в новом окне.

Остановилась на следующем решении:

В админке 'Система -> Дизайн -> Баннеры -> Изменить' в поле 'Ссылка' после ссылки через пробел добавляем '_blank', если требуется открывать ссылку в новом окне.

Т.е. 'http://www.mysite.ru _blank'

Пишем простой парсер:

Файл catalog/view/theme/default/template/module/banner.tpl

Находим:

<div id="banner<?php echo $module; ?>" class="banner">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) { ?>
  <div><a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>
  <?php } else { ?>
  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>
  <?php } ?>
  <?php } ?>
</div>
меняем на:
<div id="banner<?php echo $module; ?>" class="banner">
  <?php foreach ($banners as $banner) { ?>
  <?php if ($banner['link']) {
	$myhref = $banner['link'];
	if (substr($myhref, -6) == '_blank') { // Ссылка в админке заканчивается на "_blank"?
	  $myhref = 'href="'. substr($myhref, 0, -7) . '" target="_blank"';	// Отрезаем " _blank" (с пробелом) и ставим target="_blank"
	} else {
	  $myhref = 'href="'. $myhref . '"';
	}
	  ?>
  <div><a <?php echo $myhref; ?>><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>
  <?php } else { ?>
  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>
  <?php } ?>
  <?php } ?>
</div>
Создаем шпаргалку для манагеров.

Файл admin/language/russian/design/banner.php

Найти:

$_['entry_link']		 = 'Ссылка:';
Заменить на:
$_['entry_link']		 = 'Ссылка: <span style="font-size: smaller; font-style: normal;">чтобы ссылка открывалась в новом окне, добавьте через пробел " _blank", например, "http://mysite.ru _blank"</span>';
Может кому-то пригодится icon_e_smile.gif

З. Ы. По моему я не в ту ветку запостила, переместите, плиз, в соответствующий раздел. ((

 

Не работает, где то ошибка. Ссылка не открывается вообще пишет в адресной строке после ссылки %20

Делаю как вы и сказали, можете посмотреть:

 

<div id="banner<?php echo $module; ?>" class="banner">

  <?php foreach ($banners as $banner) { ?>

  <?php if ($banner['link']) {

 $myhref = $banner['link'];

 if (substr($myhref, -6) == '_blank') {

   $myhref = 'href="'. substr($myhref, 0, -7) . '" target="_blank"'; 

 } else {

   $myhref = 'href="'. $myhref . '"';

 }

   ?>

  <div><a <?php echo $myhref; ?>><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></div>

  <?php } else { ?>

  <div><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></div>

  <?php } ?>

  <?php } ?>

</div>

<script type="text/javascript"><!--

$(document).ready(function() {

 $('#banner<?php echo $module; ?> div:first-child').css('display', 'block');

});

var banner = function() {

 $('#banner<?php echo $module; ?>').cycle({

  before: function(current, next) {

   $(next).parent().height($(next).outerHeight());

  }

 });

}

setTimeout(banner, 2000);

//--></script>

Link to comment
Share on other sites


  • 2 years later...
  • 1 year later...

Подскажите пожалуйста почему нет файла по этому пути - Файл catalog/view/theme/default/template/module/banner.tpl
Там только 1 файл -  
d_quickcheckout.twig

Link to comment
Share on other sites


В 31.03.2019 в 11:17, Crash1997 сказал:

Там только 1 файл -  d_quickcheckout.twig

потому что,  судя по расширению фала(twig)), у вас 3 версия движка

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.