PDA

Просмотр полной версии : Показывать или не показывать раздели в меню на определенном уровне


thebat
03.04.2007, 18:38
Нужно написать 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
а не подойдет ли выставить тип "Не в меню" для тех страниц, которые Вы не хотите отображать в меню

thebat
03.04.2007, 20:16
а не подойдет ли выставить тип "Не в меню" для тех страниц, которые Вы не хотите отображать в меню

..., нет, не подойдет, потому что этот третий уровень будет использован в другом меню которое будет размещено в другой части шаблона.

PhilD
03.04.2007, 20:59
1. По-програмистски
[PIDinRootline = menu1]
expAll = 1
[global]
2. Против лома нет приема - задайте разные конфигурации меню для разных веток (просто разные шаблоны)
Дошло, что задачу можно понять двумя способами, и кажется сначала понял неправильно - что в первом разделе надо раскрыть все подразделы, а не что во втором их нужно спрятать. Тогда наоборот там collapse = 1 для второго уровня нужного PID. Ну а второй способ универсальный, просто конфигурируете только 2 уровня, а третий - отдельным меню.

thebat
03.04.2007, 21:38
1. По-програмистски
[PIDinRootline = menu1]
expAll = 1
[global]


Спасибо. Из этого я что-то понял, а что-то не понял.

Вот 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]


2. Против лома нет приема - задайте разные конфигурации меню для разных веток (просто разные шаблоны)

Выходит это сделать невозможно?

PhilD
03.04.2007, 21:58
самый простой вариант - задать для второй ветки отдельный шаблон где третий уровень просто выкинут.
Или:
[PIDinRootline = menu_2_id (или только 2.3, зависит от цели )]
temp.leftmenu.2.collapse = 1
[global]
проверяйте - у меня нет 100% уверенности что условия работают с временными объектами.

thebat
04.04.2007, 16:26
Для меня да, а вот для пользователя это будет проблемой, поскольку у него будет закрыт доступ к изменениям в шаблонах.

Что если пользователь самостоятельно будет добавлять дополнительную ветку или под ветку в структуре сайте?

Хочется автоматизировать этот процесс к тому же это неудобно. Он же вообще не владеет TypoScriptom.

[PIDinRootline = menu_2_id (или только 2.3, зависит от цели )]
temp.leftmenu.2.collapse = 1
[global]

..., это не работает.

Можно было бы использовать temp.leftmenu.excludeUidList ..., но тогда получится очень длинный список исключеных ID страниц, что совсем не хорошо.

Может есть какое-то другое TS решение?

PhilD
04.04.2007, 18:55
Если нужно, чтобы этим рулил пользователь, то таки проще делать через назначение страницам "не в меню", а для дополнительного меню в другом месте прописать принудительно включение страниц "не в меню" , и разъяснить пользователю, что страницы так прячутся только из основного меню.

thebat
04.04.2007, 22:35
..., нет!

Не в коем случае нельзя это доверять пользователю, разве уже потом. Есть задание и надо сделать так, а там уже после меня хоть, что ничуть… пускай делают как им хочется.

PhilD
04.04.2007, 23:49
ну а тогда можно вынести меню в отдельный подшаблон. И включать в ветке двухуровневое или трехуровневое по желанию. В верхнем включить трехуровневое. Не автоматически, зато просто.

thebat
06.04.2007, 12:12
УРА! ЭВРИКА! Всем спасибо.
Нашел полное решение этого вопроса.

http://typo3.org/documentation/document-library/extension-manuals/menustop/0.0.1/view/1/1/

Еще раз всем спасибо.