Объясните подключение менюшек в шаблоне
Товарищи, объясните, пожалуйста, как происходит подключение разных файлов меню в шаблоне.
Имеем в nav.tpl:
В нужном экшене просто указываем к примеру:
и для него подключается соотвествующий файл меню.
У меня задача следующая: есть div в котором необходимо выводить разную информацию для разных экшенов. Соответственно, хотелось бы по аналогии указывать в нужном экшене что подключать, а не прописывать в нем кучу условий.
Или же тут не решается одним шаблоном, а $menu прописывается в движке? Тогда как можно поступить в моем случае?
Имеем в nav.tpl:
<nav id="nav"> {if $menu} {if in_array($menu,$aMenuContainers)}{$aMenuFetch.$menu}{else}{include file="menu.$menu.tpl"}{/if} {/if} </nav>
В нужном экшене просто указываем к примеру:
{include file='header.tpl' menu='people'}
и для него подключается соотвествующий файл меню.
У меня задача следующая: есть div в котором необходимо выводить разную информацию для разных экшенов. Соответственно, хотелось бы по аналогии указывать в нужном экшене что подключать, а не прописывать в нем кучу условий.
Или же тут не решается одним шаблоном, а $menu прописывается в движке? Тогда как можно поступить в моем случае?
18 комментариев
Пробовал так:
— в header.tpl
— в нужном экшене
— и соответственно создавал файл banner.one.tpl
Не заработало.
попробуй в шаблоне header.tpl вывести значение $banner и посмотреть, что в ней
вместо двойных ковычек ставил одинарные… причем сюда правильно написал )
Всем спасибо за помощь!
И кстати, обратил внимание что для экшена blogs менюшки в дефолтном шаблоне нет. Плагин, который добавлял пункты меню в blogs «требовал» добавления в шаблон файла менюшки. Соответственно имеем проблему совместимости.
Поэтому думаю, было бы удобнее:
— создать папку с менюшками (баннерамми и т.п.)
— поместить туда файлы менюшек с названиями в соответствие с экшенами
— плюс один файл дефолтный пустой, но с хуком
— в header.tpl:
— в экшенах при инклуде header.tpl можно уже ничего не указывать
По поводу
{if файл существует}
— не знаю возможно ли это.В итоге если закинуть файл в папку (например, banner) файл с названием соответствующем экшену — то он туда инклудится. Если файла для какого-либо экшена нет — инклудится дефолтный пустой файл, но с хуком, по которому можно вставить что-то плагинами
Но $sActionName нужно изначально задавать в контроллерах. Ну и добавить к этой конструкции немного if-ов
Для каждго экшена, которому нужно отдельно содержание создаете свой шаблон и его инклудите.
Не совсем понял о чем Вы.
Вспомнил про подключение меню, решил по аналогии сделать и вот что-то не выходит, видимо, что-то упускаю. Выше Орту ответил, как пробовал сделать.
Вы решение подсказали и оно меня вполне устраивает, но зуд-то остался… :)
Т.е., впринципе, мои действия были верны? Из самого движка ничего передавать не нужно? Я просто думал, может та же переменная $menu (в случае с меню) где-нибудь еще в движке прописана и поэтому у меня только на уровне шаблона ничего не получается.