Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Показывать или не показывать раздели в меню на определенном уровне (http://forum.typo3.ru/showthread.php?t=3021)

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

Цитата:

Сообщение от Дмитрий Самойлов (Сообщение 10895)
а не подойдет ли выставить тип "Не в меню" для тех страниц, которые Вы не хотите отображать в меню

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

PhilD 03.04.2007 20:59

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

thebat 03.04.2007 21:38

Цитата:

Сообщение от PhilD (Сообщение 10900)
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]

Цитата:

Сообщение от PhilD (Сообщение 10900)
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

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


Часовой пояс GMT +4, время: 20:07.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot