Автор Тема: Модуль blockpermanentlinks класс active  (Прочитано 894 раз)

01 Июль 2015, 01:08:42
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Разработка сайтов magl88.net
    • Просмотр профиля
    • magl88.net
Доброго времени суток !
Я недавно работаю с prestashop и вот столкнулся с проблемой.
На сайте сделано меню с помощью модуля blockpermanentlinks, по сути как я понял там вбиты прямые ссылки на страницы.
Мне надо что бы на когда мы находимся на страницы из этого меню то был класс activ что-бы задать ему стили.
Вот код шаблона
<!-- Block permanent links module HEADER -->
<section class="header-box blockpermanentlinks-header">
<ul id="header_links">
<li class="header_links_home"><a href="{$link->getPageLink('index.php')}">{l s='home' mod='blockpermanentlinks'}</a></li>
<li class="header_link_"><a {if $smarty.server.QUERY_STRING == 'id_cms=4'}class="active"{/if} href="{$base_dir}cms.php?id_cms=4" title="{l s='О компании' mod='blockpermanentlinks'}">{l s='О компании' mod='blockpermanentlinks'}</a></li>
<li class="header_link_"><a href="{$link->getPageLink('cms.php?id_cms_category=11')}" {if $page_name == '11-katalog-oborudovaniya'}class="active"{/if}><span>Каталог<br/> оборудования</span></a></li>
<li class="header_link_"><a href="/index.php?id_cms=7&controller=cms">Цены</a></li>
<li class="header_link_bookmark">
<script type="text/javascript">writeBookmarkLink('{$come_from}', '{$meta_title|addslashes|addslashes}', '{l s='bookmark' mod='blockpermanentlinks' js=1}');</script>
</li>
<li class="header_link_contact"><a href="{$link->getPageLink('contact', true)}" title="{l s='contact' mod='blockpermanentlinks'}">{l s='contact' mod='blockpermanentlinks'}</a></li>
</ul>
<div class="mobile-link-top header-button">
<span class="icon_wrapp">
<span class="title-hed"></span><i class="arrow_header_top_menu arrow_header_top icon-reorder"></i>
</span>
<ul id="mobilelink" class="list_header">
<li class="header_links_home"><a href="{$link->getPageLink('index.php')}">{l s='home' mod='blockpermanentlinks'}</a></li>
<li class="header_link_contact"><a href="/index.php?id_cms=4&controller=cms" title="{l s='О компании' mod='blockpermanentlinks'}">{l s='О компании' mod='blockpermanentlinks'}</a></li>
<li class="header_link_contact"><a href="/index.php?id_category=11&controller=category" title="{l s='Каталог оборудования' mod='blockpermanentlinks'}">{l s='Каталог оборудования' mod='blockpermanentlinks'}</a></li>
<li class="header_link_contact"><a href="/index.php?id_cms=7&controller=cms" title="{l s='Цены' mod='blockpermanentlinks'}">{l s='Цены' mod='blockpermanentlinks'}</a></li>
<li class="header_link_contact"><a href="{$link->getPageLink('contact', true)}" title="{l s='contact' mod='blockpermanentlinks'}">{l s='contact' mod='blockpermanentlinks'}</a></li>
<li class="header_link_bookmark">
<script type="text/javascript">writeBookmarkLink('{$come_from}', '{$meta_title|addslashes|addslashes}', '{l s='bookmark' mod='blockpermanentlinks' js=1}');</script>
</li>
</ul>
</div>
</section>
<!-- /Block permanent links module HEADER -->

Как видно я пробую применить класс activ но на сайте он не отображается, что я делаю не так ?  это не мой шаблон уже был на сайте 
PrestaShop™ 1.5.6.2
01 Июль 2015, 09:10:09
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
<li class="header_links_home {if $page_name =='index'}activ{/if}"><a href="{$link->getPageLink('index.php')}">{l s='home' mod='blockpermanentlinks'}</a></li>также для остальных.
01 Июль 2015, 09:35:00
Ответ #2
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Разработка сайтов magl88.net
    • Просмотр профиля
    • magl88.net
<li class="header_links_home {if $page_name =='index'}activ{/if}"><a href="{$link->getPageLink('index.php')}">{l s='home' mod='blockpermanentlinks'}</a></li>также для остальных.

не получится !

<li class="header_link_contact"><a href="/index.php?id_cms=4&controller=cms" title="{l s='О компании' mod='blockpermanentlinks'}">{l s='О компании' mod='blockpermanentlinks'}</a></li>вот например в этой строчке если ставлю { $page_name} то он выводит просто CMS, хотя по логике должен вывести id_cms=4 или about-us
01 Июль 2015, 09:40:23
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
вот например в этой строчке если ставлю { $page_name} то он выводит просто CMS, хотя по логике должен вывести id_cms=4 или about-us
$page_name для всех текстовых страниц - CMS.
about-us - это чпу
01 Июль 2015, 09:43:44
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для текстовых страниц можно использовать зарезервированную переменную smarty
- smarty.server.REQUEST_URI  = "/content/4-about-us".
- smarty.get.id_cms  = "4".
01 Июль 2015, 09:48:50
Ответ #5
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Разработка сайтов magl88.net
    • Просмотр профиля
    • magl88.net
Для текстовых страниц можно использовать зарезервированные переменные smarty - smarty.server.REQUEST_URI или smarty.get.id_cms.

О вот это уже кажись то что мне надо !
только вот ещё такой вопрос, я для проверки вставил сейчас {$smarty.get.id_cms} и он мне дал id страницы на которой я находился и поле этого когда я перехожу на другую страницу он не меняется
Что это может быть ? так и с {$smarty.server.REQUEST_URI}
01 Июль 2015, 09:54:14
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
smarty.server.REQUEST_URI и smarty.get.id_cms выводят параметры передающиеся в url.
Они показывают данные открытой страницы.
01 Июль 2015, 10:00:38
Ответ #7
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Разработка сайтов magl88.net
    • Просмотр профиля
    • magl88.net
smarty.server.REQUEST_URI и smarty.get.id_cms выводят параметры передающиеся в url.
Они показывают данные открытой страницы.

Я тоже так понимаю но у меня видимо они как-то не правильно работают
Вот сайт гляньте http://tvsatelite.ru/content/7-ceny - верхнее меню
2, 3 и 4 пункты у них сейчас должен добавляться к li параметр
вот их код
<li class="header_link_{$smarty.get.id_cms}"><a href="/index.php?id_cms=4&controller=cms">О компании</a></li>
<li class="header_link_{$smarty.server.REQUEST_URI}"><a href="/index.php?id_category=11&controller=category"><span>Каталог<br/> оборудования</span></a></li>
<li class="header_link_{$page_name}"><a href="/index.php?id_cms=7&controller=cms">Цены</a></li>
Но после того как я сделал изменение в коде и зашел на страницу всё время одни и теже параметры подставляются
01 Июль 2015, 10:01:40
Ответ #8
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для страницы cms с ид 4
{if $page_name =='cms' && Tools::getValue('id_cms') == '4'}activ{/if}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Июль 2015, 10:04:31
Ответ #9
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Если все время старые параметры, то включено кеширование smarty. Выключите, очистите кеш и проверьте.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Июль 2015, 10:07:53
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас модуль кеширует шаблон, поэтому всегда одни значения. Откройте файл модуля /modules/blockpermanentlinks/blockpermanentlinks.php и измените
public function hookTop($params)
{
return $this->display(__FILE__, 'blockpermanentlinks-header.tpl', $this->getCacheId('blockpermanentlinks-header'));
}
на
public function hookTop($params)
{
return $this->display(__FILE__, 'blockpermanentlinks-header.tpl');
}
01 Июль 2015, 10:16:47
Ответ #11
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Разработка сайтов magl88.net
    • Просмотр профиля
    • magl88.net
Большое спасибо работает!
mAgency  - подскажите аналог {if $page_name =='cms' && Tools::getValue('id_cms') == '4'}activ{/if} для категории, для такой строчки
<li class="header_link_{$smarty.server.REQUEST_URI}"><a href="/index.php?id_category=11&controller=category"><span>Каталог<br/> оборудования</span></a></li>как бы если что могу тут по "{$smarty.server.REQUEST_URI}" сравнивать но может есть другой вариант ?
01 Июль 2015, 10:24:48
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
controller=category => $page_name =category
Tools::getValue('любой параметр в url')
для /index.php?id_category=11&controller=category
$page_name =='category'
Tools::getValue('id_category') == 11
01 Июль 2015, 10:27:08
Ответ #13
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Разработка сайтов magl88.net
    • Просмотр профиля
    • magl88.net
ок спасибо ещё раз БОЛЬШОЕ ))  :)