![]() |
Динамическое меню из PHP в TYPO3
Требуется в меню отобразить все подразделы 3-го уровня.
Главная -> Раздел -> Подраздел 1 ... Подраздел N С Главной и Разделом вопросов нет, а для подразделов есть только 1 страница-шаблон "Подраздел", где подраздел задаётся через GET-параметр, а надо отобразить все подразделы. Как вы генерите меню в таких случаях? Заполняете $GLOBALS["TSFE"] данными в PHP или как-то иначе? Заранее благодарю за помощь :) |
Не понятнаааа.... (С)
|
1. В TYPO3 у меня только 1 страница-подраздел (шаблон), которая обрабатывает много подразделов по их id (подразделы плавающие, берутся из другой БД). То есть при генерации HMENU TS ничего о них не знает, пока ему не сунуть их список из PHP. Вопрос - как правильно совать :)))
Например, вот так будет верно? temp.page_menu = HMENU temp.page_menu { special = userfunction special.wrap = ... special.userFunc = subsections->generate ... } 2. Возможно ли что-то аналогичное с помощью USER? |
посмотрите еще itemArrayProcFunc
|
Спасибо... время читать TSref... всё откладываю.... А можно привести пример использования, а то с ходу мне сложно писать на TS правильно :)
2. И ещё вопрос по вышеприведённому: temp.page_menu = HMENU temp.page_menu { special = userfunction special.wrap = ... special.userFunc = subsections->generate ... } В классе php имеем: function generate($aMenu, $aConf) { ... } У неё есть два параметра, но в TS-setup на этот счёт тишина. Вопрос экспертам: где указываются real-time параметры в эту функцию? Где-то в PHP искать или возможно в TS? Спасибо. |
А PHP то зачем??? Почему нельзя стандартным функционалом HMENU обойтись?
|
|
Pavel Antonov:
PHP затем, что я не знаю как или HMENU не может конфить данные из сторонней таблицы, для этого конфигурируется через (см. выше) special = userfunction special.wrap = ... special.userFunc = subsections->generate Что-то не так? :) PhilD: спасибо, пошёл читать там часть меню дёргается из плагина, у меня не плагин Ну и для полного счастья - в один прекрасный момент всё перестало работать :( То есть меню подразделов через special перестало выводиться. На выходе функции оно есть, через дебуг отображается. Но на сайте перестало появляться. Не могу понять, где оно теряется... может быть, есть у кого идеи кроме залазанья в дебри сырцов... буду очень признателен :) |
Вот пример
temp.extraMenu = HMENU
temp.extraMenu { special = userdefined special.file = fileadmin/scripts/menu.php # дальше идут собственные параметры, основываясь на которых выводится меню special.pid = {$plugin.tx_ladymanager_pi1.listPid} special.singlePid = {$plugin.tx_ladymanager_pi1.singlePid} special.townStore = {$plugin.tx_ladymanager_pi1.pid} 1 { wrap = <UL>|</UL> NO.allWrap = <LI>|</LI> CUR = 1 CUR.allWrap = <LI>|</LI> CUR.linkWrap = <b>|</b> ACT = 1 ACT.allWrap = <LI>|</LI> } } fileadmin/scripts/menu.php <?php $townPid = intval($conf['pid']); $singlePid = intval($conf['singlePid']); $val = t3lib_div::_GP('tx_ladymanager_pi1'); $actTown = intval($val['city']); $townStore = intval($conf['townStore']); // в массиве с именем menuItemsArray должны хранится пункты меню $menuItemsArray = array(); $selectSetup = Array( 'pidInList'=>$townStore, 'orderBy'=>'sorting', ); $res = $GLOBALS['TSFE']->cObj->exec_getQuery('tx_ladymanager_city', $selectSetup); while( $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res) ) { if( is_array($row) ) { $menuItemsArray[] = array( 'title'=>$row['name'], '_OVERRIDE_HREF'=>$this->parent_cObj->getTypoLink_URL( $townPid, array( 'tx_ladymanager_pi1[city]' => $row['uid'] ) ), 'ITEM_STATE' => ($actTown==$row['uid'] && ($GLOBALS['TSFE']->id == $townPid || $GLOBALS['TSFE']->id == $singlePid) ) ? 'CUR' : '', ); } } ?> |
Спасибо, буду разбираться, с ходу не понял.
|
Часовой пояс GMT +4, время: 20:37. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot