Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
03.04.2007, 18:38 | #1 |
Senior Member
|
Показывать или не показывать раздели в меню на определенном уровне
Нужно написать TypoScript для меню (многоуровневое) так, чтобы он показывал или не показывал, раздели в меню на определенном мною уровне.
К примеру, есть: =================== = Menu 1 == Menu 1.1 == Menu 1.2 === Menu 1.2.1 === Menu 1.2.2 === Menu 1.2.3 === Menu 1.2.4 == Menu 1.3 == Menu 1.4 = Menu 2 == Menu 2.1 == Menu 2.2 == Menu 2.3 === Menu 2.3.1 === Menu 2.3.2 === Menu 2.3.3 === Menu 2.3.4 == Menu 2.4 = Menu 3 == Menu 3.1 == Menu 3.2 == Menu 3.3 == Menu 3.4 = Menu 4 ............ =================== Мне нужно, чтобы в разделе "= Menu 1" третий уровень "=== Menu 1.2.1" показывался, а вот в разделе "= Menu 2" третий уровень "=== Menu 2.3.1" не показывался. Прошу помощи в решении это задачи |
03.04.2007, 19:24 | #2 |
Продвинутый
|
а не подойдет ли выставить тип "Не в меню" для тех страниц, которые Вы не хотите отображать в меню
|
03.04.2007, 20:16 | #3 |
Senior Member
|
|
03.04.2007, 20:59 | #4 |
Senior Member
|
1. По-програмистски
[PIDinRootline = menu1] expAll = 1 [global] 2. Против лома нет приема - задайте разные конфигурации меню для разных веток (просто разные шаблоны) Дошло, что задачу можно понять двумя способами, и кажется сначала понял неправильно - что в первом разделе надо раскрыть все подразделы, а не что во втором их нужно спрятать. Тогда наоборот там collapse = 1 для второго уровня нужного PID. Ну а второй способ универсальный, просто конфигурируете только 2 уровня, а третий - отдельным меню. Последний раз редактировалось PhilD; 03.04.2007 в 21:39 |
03.04.2007, 21:38 | #5 |
Senior Member
|
Спасибо. Из этого я что-то понял, а что-то не понял.
Вот TypoScript моего меню: ======================== temp.leftmenu = HMENU temp.leftmenu.entryLevel = 0 temp.leftmenu.excludeUidList = 3,4 temp.leftmenu.wrap = <div>|</div> temp.leftmenu.1 = GMENU temp.leftmenu.1 { NO { XY = [10.w]+18,19 transparentColor.closest = 1 transparentBackground = 1 transparentColor= #ffffff allWrap = <div>|</div> 5 = IMAGE 5.file = colo.gif 5.offset = 6,7 10 = TEXT 10.niceText = 0 10.text.field = nav_title // title 10.offset = 18,14 10.fontFile = arial.ttf 10.fontColor = #ff3c00 10.fontSize = 9 } ACTIFSUB < .NO ACTIFSUB = 1 ACTIFSUB.allWrap = <div>|</div> ACT < .NO ACT = 1 ACT.allWrap = <div>|</div> } temp.leftmenu.2 = TMENU temp.leftmenu.2 { wrap = <div>|</div> NO.allWrap = <div>|</div> NO.ATagParams = class="sub" ACT = 1 ACT.allWrap = <div>|</div> ACT.ATagParams = class="Act" } temp.leftmenu.3 = TMENU temp.leftmenu.3 { wrap = <div>|</div> NO.allWrap = <div>|</div> NO.ATagParams = class="sub" ACT = 1 ACT.allWrap = <div>|</div> ACT.ATagParams = class="Act" } ======================== Давайте в месте попробуем это написать... Куда вставить это? [PIDinRootline = menu1] expAll = 1 [global] Выходит это сделать невозможно? |
03.04.2007, 21:58 | #6 |
Senior Member
|
самый простой вариант - задать для второй ветки отдельный шаблон где третий уровень просто выкинут.
Или: [PIDinRootline = menu_2_id (или только 2.3, зависит от цели )] temp.leftmenu.2.collapse = 1 [global] проверяйте - у меня нет 100% уверенности что условия работают с временными объектами. |
04.04.2007, 16:26 | #7 |
Senior Member
|
Для меня да, а вот для пользователя это будет проблемой, поскольку у него будет закрыт доступ к изменениям в шаблонах.
Что если пользователь самостоятельно будет добавлять дополнительную ветку или под ветку в структуре сайте? Хочется автоматизировать этот процесс к тому же это неудобно. Он же вообще не владеет TypoScriptom. Код:
[PIDinRootline = menu_2_id (или только 2.3, зависит от цели )] temp.leftmenu.2.collapse = 1 [global] Можно было бы использовать temp.leftmenu.excludeUidList ..., но тогда получится очень длинный список исключеных ID страниц, что совсем не хорошо. Может есть какое-то другое TS решение? Последний раз редактировалось thebat; 04.04.2007 в 17:22 |
04.04.2007, 18:55 | #8 |
Senior Member
|
Если нужно, чтобы этим рулил пользователь, то таки проще делать через назначение страницам "не в меню", а для дополнительного меню в другом месте прописать принудительно включение страниц "не в меню" , и разъяснить пользователю, что страницы так прячутся только из основного меню.
|
04.04.2007, 22:35 | #9 |
Senior Member
|
..., нет!
Не в коем случае нельзя это доверять пользователю, разве уже потом. Есть задание и надо сделать так, а там уже после меня хоть, что ничуть… пускай делают как им хочется. |
04.04.2007, 23:49 | #10 |
Senior Member
|
ну а тогда можно вынести меню в отдельный подшаблон. И включать в ветке двухуровневое или трехуровневое по желанию. В верхнем включить трехуровневое. Не автоматически, зато просто.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как определить на каком уровне меню мы находимся? | Илья | Общие вопросы | 10 | 13.06.2006 11:55 |