Вопрос по автоматическому формированию меню

6
Добрый вечер!

Интересует, как можно формировать меню страниц (page) автоматически?

Я добавил в header_top нужные разделы, а хочу, чтобы при нажатии на любой из них снизу в подменю перечислялись подразделы текущего. Я понял, что надо создать файл menu.page.tpl, однако это мне не помогло.

Надеюсь на вашу помощь! Заранее спасибо.
  • 0
  • 17 сентября 2009, 21:21
  • Hitman

Комментарии (18)

RSS свернуть / развернуть
Присоединяюсь.
Очень хочется узнать.
0
Похоже задача нерешаема?
-2
Невнятно поставленная задача нерешаема по определению
+2
Надо описать ТЗ понятнее… из написанного ничего не понятно
0
Нужно вывести подстраницы страниц, как это сделано в БЛОГАХ напримет.
Т.е. к примеру у нас есть статическая страница FAQ, у неё есть подстраницы. Ссылка на FAQ прописывается в header_top.tpl темы так:

<li {if $sAction=='page' and $sEvent=='faq'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_PAGE}/faq/">{$aLang.page_faq}</a></li>

Как сделать так, чтобы при переходе по ссылке отображались и подстраницы страницы FAQ?
0
Ну вот, теперь более внятно все объяснил.

Если в actions/ActionPage/page.tpl самую первую строку запишешь так:
{include file='header.tpl' menu=page}
то шаблонизатор в качестве меню будет использовать шаблон menu.page.tpl. Но в этом случае в самом шаблоне должна быть логика, которая выводит в меню подстраницы.

Если есть желание для каждой страницы свой файл-меню сделать, то можно так:
{include file='header.tpl' menu="page.$sEvent"}
тогда для страницы faq будет цепляться файл menu.page.faq.tpl, для страницы aboutmenu.page.about.tpl, и т.д.
0
Огромное спасибо! Теперь все работает.
Огорчает, что это не предусмотрено по-умолчанию =(
0
Еще маленький вопрос: url страницы получаем переменной $sEvent, а как получить URL подстраницы?
0
Опять невнятный вопрос. Какой подстраницы? Где?
Если речь о том, как получить урл текущей страницы в шаблоне то $oPage->getUrl()
0
Именно то, что нужно. Спасибо.
З.Ы. Как бы Вы внятно сформулировали вопрос, будучи только изучающим все тонкости движка?
0
Вот именно так и сформулировал бы, как в своем комменте:
а как можно в шаблоне получить урл текущей страницы?

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

{$DIR_WEB_ROOT}/{$ROUTE_PAGE_PAGE}/{$oLang->lang}/advert/

$sEvent возвращает только первый уровень {$oLang->lang}

как мне получить advert, чтобы выяснить текущую активную страницу?
0
Вообще урл парсится так:
site.com/action/event/param0/param1/param2/...

Соответственно доступ к элементам урла:
action -> Router::getAction()
event -> Router::getActionEvent()
paramN -> $this->getParam(N)
+2
премного благодарен, Вадим!
0
Подскажите, как правильно добавить paramN сюда:
{include file='header.tpl' menu="page.$sEvent"} 

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

$sMenuItemSelect
$sMenuSubItemSelect

т.е. есть в меню, например, $sMenuItemSelect=='blog' как сделать $sMenuItemSelect=='123' что бы это было правильно и понималось движком?
0
Начал так:
в конфиге добавил в \распределение action\
$config['router']['page']['page']['123']   = 'Action123';

создал САЙТ.РУ\classes\actions\Action123.class.php, но что в него писать, и правильно ли это вообще?
0
Я думаю, меню надо выполнить в виде управляемого блока (класс Block), тогда им можно будет управлять программно, без ручного насилия над шаблонами для добавления каждого элемента меню
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.