Перейти к содержанию
12strun

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

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

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

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

В админке 'Система -> Дизайн -> Баннеры -> Изменить' в поле 'Ссылка' после ссылки через пробел добавляем '_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 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Спасибо, помогло!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

В админке 'Система -> Дизайн -> Баннеры -> Изменить' в поле 'Ссылка' после ссылки через пробел добавляем '_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>';
Может кому-то пригодится :-)

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

 

 

 

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

 

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

 

 

Файл 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>
 
Просто, если данная проблема для кого то актуальна.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

В админке 'Система -> Дизайн -> Баннеры -> Изменить' в поле 'Ссылка' после ссылки через пробел добавляем '_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>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.