Модуль blockpermanentlinks класс active

Автор magl88, 01 июля 2015, 01:08:42

« назад - далее »

magl88

Доброго времени суток !
Я недавно работаю с 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

mistral

<li class="header_links_home {if $page_name =='index'}activ{/if}"><a href="{$link->getPageLink('index.php')}">{l s='home' mod='blockpermanentlinks'}</a></li>
также для остальных.

magl88

Цитата: mistral от 01 июля 2015, 09:10:09
<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

DarinSr

Цитата: magl88 от 01 июля 2015, 09:35:00
вот например в этой строчке если ставлю { $page_name} то он выводит просто CMS, хотя по логике должен вывести id_cms=4 или about-us
$page_name для всех текстовых страниц - CMS.
about-us - это чпу

DarinSr

#4
Для текстовых страниц можно использовать зарезервированную переменную smarty
- smarty.server.REQUEST_URI  = "/content/4-about-us".
- smarty.get.id_cms  = "4".

magl88

Цитата: DarinSr от 01 июля 2015, 09:43:44
Для текстовых страниц можно использовать зарезервированные переменные smarty - smarty.server.REQUEST_URI или smarty.get.id_cms.

О вот это уже кажись то что мне надо !
только вот ещё такой вопрос, я для проверки вставил сейчас {$smarty.get.id_cms} и он мне дал id страницы на которой я находился и поле этого когда я перехожу на другую страницу он не меняется
Что это может быть ? так и с {$smarty.server.REQUEST_URI}

DarinSr

smarty.server.REQUEST_URI и smarty.get.id_cms выводят параметры передающиеся в url.
Они показывают данные открытой страницы.

magl88

Цитата: DarinSr от 01 июля 2015, 09:54:14
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>

Но после того как я сделал изменение в коде и зашел на страницу всё время одни и теже параметры подставляются

mAgency

Для страницы cms с ид 4
{if $page_name =='cms' && Tools::getValue('id_cms') == '4'}activ{/if}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

mAgency

Если все время старые параметры, то включено кеширование smarty. Выключите, очистите кеш и проверьте.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

DarinSr

У вас модуль кеширует шаблон, поэтому всегда одни значения. Откройте файл модуля /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');
}

magl88

Большое спасибо работает!
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}" сравнивать но может есть другой вариант ?

DarinSr

#12

controller=category => $page_name =category
Tools::getValue('любой параметр в url')

для /index.php?id_category=11&controller=category

$page_name =='category'
Tools::getValue('id_category') == 11


magl88