Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   и снова вопрос по меню. (http://forum.typo3.ru/showthread.php?t=1316)

Илья 19.04.2006 11:16

и снова вопрос по меню.
 
Есть сайт, с древовидной структурой страниц.
Уровень1
Уровень2
Уровень3
Уровень4
Каким образом сделать так, чтобы в меню пункты показывались в зависимости от того, на каком уровне мы находимся.
Если мы выбрали страницу на уровне 1, то в меню надо показать все страницы с уровня 2, для который выбранная страницы - родитель.
То же самое для 2 уровня, а для 3-го и 4-го нужно чтобы в меню показывались страницы из 2 уровня.
Немного путано получается, но так нужно сделать.

Вопрос в том, как определить на каком уровне мы в настоящий момент находимся и как сделать условие в коде в зависимости от жтого уровня.

В typo3_by_example.pdf видел что можно использовать if в конструкции вроде этой "subparts.LEFTNAV.special.value.data = field:uid", но не понял как это работает.
Сейчас код, показывает содержимое только 3 уровня меню:
subparts.LEFTNAV= HMENU
subparts.LEFTNAV.special = directory
subparts.LEFTNAV.entryLevel = 2
subparts.LEFTNAV.special.value.data = field:uid
subparts.LEFTNAV.1 = TMENU
subparts.LEFTNAV.1{
subst_elementUid = 1
wrap = <table border="0" width="150" cellspacing="0" cellpadding="0"> |</table>
NO{
subst_elementUid = 1
allWrap = <tr><td width="40" class="leftnav_f1"><img src="i/p/i{elementUid}.gif" border="0"></td><td width="110" class="leftnav1">|</td></tr> |*| <tr><td width="40" class="leftnav_f"><img src="i/p/i{elementUid}.gif" border="0"></td><td width="110" class="leftnav">|</td></tr> |*| <tr><td width="40" class="leftnav_f"> <img src="i/p/i{elementUid}.gif" border="0"></td><td width="110" class="leftnav2">|</td></tr> <tr><td class="leftnav_f2"><img src="i/c3-0.gif" border="0"></td><td class="leftnav2e" width="110"><img src="i/c3-1.gif" border="0"></td></tr>

}
ACT = 1
ACT{
subst_elementUid = 1
allWrap = <tr><td width="40" class="leftnav_f1"><img src="i/p/i{elementUid}.gif" border="0"></td><td width="110" class="leftnav1_act">|</td></tr> |*| <tr><td width="40" class="leftnav_f"><img src="i/p/i{elementUid}.gif" border="0"></td><td width="110" class="leftnav_act">|</td></tr> |*| <tr><td width="40" class="leftnav_f"> <img src="i/p/i{elementUid}.gif" border="0"></td><td width="110" class="leftnav2_act">|</td></tr> <tr><td class="leftnav_f2"><img src="i/c3-0.gif" border="0"></td><td class="leftnav2e" width="110"><img src="i/c3-1.gif" border="0"></td></tr>
}
}

marco 19.04.2006 13:36

Цитата:

Сообщение от Илья
Вопрос в том, как определить на каком уровне мы в настоящий момент находимся и как сделать условие в коде в зависимости от жтого уровня.

Цитаты из доки:

NOTE: Don't set .entryLevel for a HMENU when using .special property! Also be aware that this selects pages for the first level in the menu.

This will generate a menu of all pages with pid = 35 and pid = 56.
20 = HMENU
20.special = directory
20.special.value = 35, 56
If .value is not set, the default pid is the current page.

Т.е. .entryLevel убрать, .special = directory оставить, а special.value не указывать.

Тогда меню будет строиться с текущего уровня.

subparts.LEFTNAV= HMENU
subparts.LEFTNAV.special = directory
subparts.LEFTNAV.1 = TMENU

Ну а чтоб было видно нижестоящие уровни их надо прописать subparts.LEFTNAV.2, subparts.LEFTNAV.3, ...

Илья 19.04.2006 14:56

Спасибо за ответ.
Из какой доки цитата?

А в одном меню можно сделать выбор строить меню из вышестоящих пунктов или из нижестоящих?
Или обязательно придется делать
subparts.LEFTNAV.1
subparts.LEFTNAV.2
subparts.LEFTNAV.3

marco 19.04.2006 19:02

Цитата:

Сообщение от Илья
Спасибо за ответ.
Из какой доки цитата?

TSREF. У меня он в виде хелпа tsref.chm

Цитата:

Сообщение от Илья
А в одном меню можно сделать выбор строить меню из вышестоящих пунктов или из нижестоящих?
Или обязательно придется делать
subparts.LEFTNAV.1
subparts.LEFTNAV.2
subparts.LEFTNAV.3

subparts.LEFTNAV.2 = TMENU
subparts.LEFTNAV.2 < subparts.LEFTNAV.1
subparts.LEFTNAV.3 = TMENU
subparts.LEFTNAV.3 < subparts.LEFTNAV.1

Илья 20.04.2006 11:48

Спасибо, попробую.
А откуда можно скачать файлик tsref.chm?

Илья 20.04.2006 12:04

Уже сам нашел.
Кому надо tsref_chm:
http://christian-trabold.de/fileadmi.../tsref_chm.zip

Илья 20.04.2006 14:55

Не догоняю смысла :(

Структура сайта примерно такая:

Уровень1
|-Уровень21
|-Уровень22
|-Уровень23
|-Уровень31
|-Уровень32
|-Уровень33
|-Уровень41
|-Уровень42
|-Уровень43


Есть меню, которое будет строиться с текущего уровня на один уровень ниже:
subparts.LEFTNAV= HMENU
subparts.LEFTNAV.special = directory
subparts.LEFTNAV.1 = TMENU
subparts.LEFTNAV.1{ }

Это замечательно работает! То есть если мы находимся в пункте Уровень1 в меню будут Уровень21,
Уровень22, Уровень23. Если в пункте Уровень33 в меню будут Уровень41, Уровень42, Уровень43.
Если в пункте Уровень43 меню не будет вообще.
Нужно как-то сделать, чтобы при нахождении в пункте Уровень33 в меню были пункты Уровень21, Уровень22, Уровень23.
То есть отображались вышестоящие на 1 уровень пункты меню.
И те же самые пункты Уровень21, Уровень22, Уровень23 при нахождении в пункте Уровень43.
То есть отображались вышестоящие на 2 уровня пункты меню.

В этой связи не понимаю как может помочь конструкция вида:
subparts.LEFTNAV.2 = TMENU
subparts.LEFTNAV.2 < subparts.LEFTNAV.1
subparts.LEFTNAV.3 = TMENU
subparts.LEFTNAV.3 < subparts.LEFTNAV.1

Хотя это видимо уровень FAQ'a, но тем не менее...

marco 21.04.2006 16:04

Ну тогда надо сначала определить что считать уровнем :-)

Я полагал так:

Уровень1
|-Уровень21
|-Уровень22
|-Уровень23
|-|-Уровень31
|-|-Уровень32
|-|-Уровень33
|-|-|-Уровень41
|-|-|-Уровень42
|-|-|-Уровень43

ну и уровень FAQ'a конечно... ;-)

Илья 22.04.2006 13:11

Цитата:

Сообщение от marco
Ну тогда надо сначала определить что считать уровнем :-)

Я полагал так:

Уровень1
|-Уровень21
|-Уровень22
|-Уровень23
|-|-Уровень31
|-|-Уровень32
|-|-Уровень33
|-|-|-Уровень41
|-|-|-Уровень42
|-|-|-Уровень43

ну и уровень FAQ'a конечно... ;-)

Так оно и есть :))
Моя картинка уровней просто испортилась при вставке в в пост.

И все равно как при такой структуре реализовать следующее:
"Нужно как-то сделать, чтобы при нахождении в пункте Уровень33 в меню были пункты Уровень21, Уровень22, Уровень23.
То есть отображались вышестоящие на 1 уровень пункты меню.
И те же самые пункты Уровень21, Уровень22, Уровень23 при нахождении в пункте Уровень43. "???
То есть отображались вышестоящие на 2 уровня пункты меню.

marco 25.04.2006 15:08

Тогда для пятиуровневого ;-) меню:
[treeLevel = 2]
subparts.LEFTNAV.entryLevel = 1
[treeLevel = 3]
subparts.LEFTNAV.entryLevel = 2
[treeLevel = 4]
subparts.LEFTNAV.entryLevel = 3
[treeLevel = 5]
subparts.LEFTNAV.entryLevel = 4
[else]
subparts.LEFTNAV.entryLevel = 0
[global]


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

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