×

Внимание

Ваш браузер . Для корректного серфинга сети рекомендуем установить один из современных браузеров Chrome или Firefox.

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Не так давно во время работы над одним проектом у меня возникла необходимость разместить разные счетчики яндекс метрики в одном шаблоне. В зависимости от того, по какому домену на сайт приходили люди, активировался нужный счетчик. Задача была поставлена так:

Имеется сайт на CMS PrestaShop с поддержкой мультимагазина. Из одной админки управление 4 магазинами, некоторые с одинаковым каталогом и один с определенными товарами. Было решено использовать один шаблон для всех магазинов. Нужно было сделать так, чтобы у каждого магазина (у каждого домена) был свой счетчик посещаемости. Так как Prestashop использует шаблонизатор Smarty, то просто вставить в шаблон php код не получится. Но ситуацию спасает то, что у smarty есть свои встроенные управляющие конструкции и логические операторы. Задача решается очень просто: В папке /themes/ИМЯ_ШАБЛОНА/ открываем файл footer.tpl и вставляем в него код:

 


{if $smarty.server.HTTP_HOST == 'domain1.name'}
    {literal}
      Сюда вставляем код счетичка
    {/literal}
{elseif $smarty.server.HTTP_HOST == 'domain2.name'}
    {literal}
      Сюда вставляем код следующего счетчика
    {/literal}
{/if}

и так далее, добавляя конструкцию:


{elseif $smarty.server.HTTP_HOST == 'domain.name'}
    {literal}
      Сюда вставляем код счетичка
    {/literal}

до закрывающего {/if} Для удобства я вынес данный код в отдельный файл и подключил его в шаблоне с помощью {include file="$tpl_dir./yandex_metrica.tpl"}, в том месте, где должны отображаться счетчики.

Добавить комментарий


Защитный код
Обновить

Комментарии   

Денис
0 # Денис 13.06.2016 14:07
Конструкция универсальна и очень помогла при работе с мультами на престе. Спасибо автору! ;-)
Ответить | Ответить с цитатой | Цитировать
WhiskeyMan
0 # WhiskeyMan 14.06.2016 02:19
Приятно осознавать, что помог кому-то. :)
Ответить | Ответить с цитатой | Цитировать
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter