Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 19.04.2006, 11:16   #1
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию и снова вопрос по меню.

Есть сайт, с древовидной структурой страниц.
Уровень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>
}
}
Илья вне форума   Ответить с цитированием
Старый 19.04.2006, 13:36   #2
marco
Senior Member
 
Регистрация: 04.02.2005
Адрес: Львів
Сообщений: 126
Отправить сообщение для marco с помощью ICQ Отправить сообщение для marco с помощью Yahoo
По умолчанию

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

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, ...
marco вне форума   Ответить с цитированием
Старый 19.04.2006, 14:56   #3
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

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

А в одном меню можно сделать выбор строить меню из вышестоящих пунктов или из нижестоящих?
Или обязательно придется делать
subparts.LEFTNAV.1
subparts.LEFTNAV.2
subparts.LEFTNAV.3
Илья вне форума   Ответить с цитированием
Старый 19.04.2006, 19:02   #4
marco
Senior Member
 
Регистрация: 04.02.2005
Адрес: Львів
Сообщений: 126
Отправить сообщение для marco с помощью ICQ Отправить сообщение для marco с помощью Yahoo
По умолчанию

Цитата:
Сообщение от Илья
Спасибо за ответ.
Из какой доки цитата?
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
marco вне форума   Ответить с цитированием
Старый 20.04.2006, 11:48   #5
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

Спасибо, попробую.
А откуда можно скачать файлик tsref.chm?
Илья вне форума   Ответить с цитированием
Старый 20.04.2006, 12:04   #6
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

Уже сам нашел.
Кому надо tsref_chm:
http://christian-trabold.de/fileadmi.../tsref_chm.zip
Илья вне форума   Ответить с цитированием
Старый 20.04.2006, 14:55   #7
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

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

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

Уровень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, но тем не менее...
Илья вне форума   Ответить с цитированием
Старый 21.04.2006, 16:04   #8
marco
Senior Member
 
Регистрация: 04.02.2005
Адрес: Львів
Сообщений: 126
Отправить сообщение для marco с помощью ICQ Отправить сообщение для marco с помощью Yahoo
По умолчанию

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

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

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

ну и уровень FAQ'a конечно... ;-)
marco вне форума   Ответить с цитированием
Старый 22.04.2006, 13:11   #9
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

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

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

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

ну и уровень FAQ'a конечно... ;-)
Так оно и есть )
Моя картинка уровней просто испортилась при вставке в в пост.

И все равно как при такой структуре реализовать следующее:
"Нужно как-то сделать, чтобы при нахождении в пункте Уровень33 в меню были пункты Уровень21, Уровень22, Уровень23.
То есть отображались вышестоящие на 1 уровень пункты меню.
И те же самые пункты Уровень21, Уровень22, Уровень23 при нахождении в пункте Уровень43. "???
То есть отображались вышестоящие на 2 уровня пункты меню.
Илья вне форума   Ответить с цитированием
Старый 25.04.2006, 15:08   #10
marco
Senior Member
 
Регистрация: 04.02.2005
Адрес: Львів
Сообщений: 126
Отправить сообщение для marco с помощью ICQ Отправить сообщение для marco с помощью Yahoo
По умолчанию

Тогда для пятиуровневого ;-) меню:
[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]
marco вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория