Просмотр полной версии : и снова вопрос по меню.
Есть сайт, с древовидной структурой страниц.
Уровень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>
}
}
Вопрос в том, как определить на каком уровне мы в настоящий момент находимся и как сделать условие в коде в зависимости от жтого уровня.
Цитаты из доки:
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, ...
Спасибо за ответ.
Из какой доки цитата?
А в одном меню можно сделать выбор строить меню из вышестоящих пунктов или из нижестоящих?
Или обязательно придется делать
subparts.LEFTNAV.1
subparts.LEFTNAV.2
subparts.LEFTNAV.3
Спасибо за ответ.
Из какой доки цитата?
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
Спасибо, попробую.
А откуда можно скачать файлик tsref.chm?
Уже сам нашел.
Кому надо tsref_chm:
http://christian-trabold.de/fileadmin/ct/docs/tsref_chm.zip
Не догоняю смысла :(
Структура сайта примерно такая:
Уровень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, но тем не менее...
Ну тогда надо сначала определить что считать уровнем :-)
Я полагал так:
Уровень1
|-Уровень21
|-Уровень22
|-Уровень23
|-|-Уровень31
|-|-Уровень32
|-|-Уровень33
|-|-|-Уровень41
|-|-|-Уровень42
|-|-|-Уровень43
ну и уровень FAQ'a конечно... ;-)
Ну тогда надо сначала определить что считать уровнем :-)
Я полагал так:
Уровень1
|-Уровень21
|-Уровень22
|-Уровень23
|-|-Уровень31
|-|-Уровень32
|-|-Уровень33
|-|-|-Уровень41
|-|-|-Уровень42
|-|-|-Уровень43
ну и уровень FAQ'a конечно... ;-)
Так оно и есть :))
Моя картинка уровней просто испортилась при вставке в в пост.
И все равно как при такой структуре реализовать следующее:
"Нужно как-то сделать, чтобы при нахождении в пункте Уровень33 в меню были пункты Уровень21, Уровень22, Уровень23.
То есть отображались вышестоящие на 1 уровень пункты меню.
И те же самые пункты Уровень21, Уровень22, Уровень23 при нахождении в пункте Уровень43. "???
То есть отображались вышестоящие на 2 уровня пункты меню.
Тогда для пятиуровневого ;-) меню:
[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]
Спасибо за ответ.
Я понял, что этот код показывает нужные пункты меню в зависимости от значения [treeLevel = ]
Это именно то, что нужно мне!
Но кривизна моих рук в этот раз не позволила вставить этот код в шаблон.
Сразу возник вопрос куда именно вставлять этот код?
Чувствую, что нужно внутрь меню :) а куда конкретно не понимаю :-(
При попытках вставки кода в любое место в меню перестают работать ссылки.
(Ссылка "О компании" вместо http://localhost/tp3/index.php?id=6 становится http://localhost/tp3/index.php/O_kompanii/6/0/)
Одним словом ссылки перестают работать!
Ткни пожалуйста куда именно вставить твой последний кусок кода в этот код (заранее благодарю):
subparts.LEFTNAV= HMENU
subparts.LEFTNAV.special = directory
subparts.LEFTNAV.1 = TMENU
subparts.LEFTNAV.1{
subst_elementUid = 1
wrap = <table class="table7" border="0" width="150" cellspacing="0" cellpadding="0"> |</table>
expAll=1
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>
}
}
Ткни пожалуйста куда именно вставить твой последний кусок кода в этот код
Не в этот код (не в код меню или subparts) вовсе.
Желательно где-нибудь в самом низу сетапа.
Оно просто в зависимости от значения [treeLevel = ] переопределяет значение entryLevel для меню.
ааа, вот в чем дело.
ладно, попробую так как ты говоришь,
еще раз спасибо!
А как можно сделать чтобы на 4 уровне отображалось то же самое меню, что и для 3 уровня?
То есть для пункта 33 в меню будет: 41,42,43 пункты.
для 41 в меню нужно оставить 41,42,43 пункты.
для 42 в меню нужно оставить 41,42,43 пункты.
для 43 в меню нужно оставить 41,42,43 пункты.
Уровень1
|-Уровень21
|-Уровень22
|-Уровень23
|-|-Уровень31
|-|-Уровень32
|-|-Уровень33
|-|-|-Уровень41
|-|-|-Уровень42
|-|-|-Уровень43
В Typo3_by_example написано, что: "Entrylevel определяет на каком уровне в корневой линии отображается меню."
Запутался откуда идет отсчет уровней, но не работает ни один из вариантов:
Такой вариант почему-то не проходит:
[treeLevel = 2]
subparts.LEFTNAV.entryLevel = 1
[treeLevel = 3]
subparts.LEFTNAV.entryLevel = 2
[treeLevel = 4]
subparts.LEFTNAV.entryLevel = 2
[treeLevel = 5]
subparts.LEFTNAV.entryLevel = 4
[else]
subparts.LEFTNAV.entryLevel = 0
[global]
И такой вариант тоже не работает:
[treeLevel = 2]
subparts.LEFTNAV.entryLevel = 1
[treeLevel = 3]
subparts.LEFTNAV.entryLevel = 2
[treeLevel = 4]
subparts.LEFTNAV.entryLevel = 3
[treeLevel = 5]
subparts.LEFTNAV.entryLevel = 3
[else]
subparts.LEFTNAV.entryLevel = 0
[global]
Вставил этот код в конец setup'а, но условие почему то не срабатывает...
[treeLevel = 2]
subparts.LEFTNAV.entryLevel = 1
[treeLevel = 3]
subparts.LEFTNAV.special.value.data = leveluid: -2
[treeLevel = 4]
subparts.LEFTNAV.entryLevel = 2
[treeLevel = 5]
subparts.LEFTNAV.entryLevel = 4
[else]
subparts.LEFTNAV.entryLevel = 0
[global]
Почему то subparts.LEFTNAV.special.value.data = leveluid: -2 срабатывает при нахождении в любом уровне меню, а должен вроде бы только в случае [treeLevel = 3]
В чем еще может быть дело?
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot