Вход

Просмотр полной версии : Разметка каскадного вложенного меню в TemplaVoila


maaboo
26.07.2008, 12:46
Привет! Имеется следующее меню:


<div id="menu">
<ul>
<li><a href="#" class="menu1-level1-no">Меню первого уровня</a>
<!--[if lte IE 6]>
<a href="#">Меню первого уровня
<table><tr><td>
<![endif]-->
<ul>
<li><a href="#" class="menu1-level2-no">Меню второго уровня</a></li>
<li><a href="#" class="menu1-level2-act">Меню второго уровня (активное)</a></li>
</ul>
<!--[if lte IE 6]>
</td></tr></table>
</a>
<![endif]-->
</li>
<li><a href="#" class="menu1-level1-no">Второе меню первого уровня</a>
<!--[if lte IE 6]>
<a href="#">Второе меню первого уровня
<table><tr><td>
<![endif]-->
<ul>
<li><a href="#" class="menu1-level2-no">Меню второго уровня</a></li>
<li><a href="#" class="menu1-level2-act">Меню второго уровня (активное)</a></li>
</ul>
<!--[if lte IE 6]>
</td></tr></table>
</a>
<![endif]-->
</li>
</ul>
</div>


Пытаюсь замапить строго по туториалу - не получается. В окне маппинга меню со всей разметкой отображается корректно, но когда я вставляю field_menu с div:INNER - меню исчезает из прьевью, а на странице показывается без css. Видимо одного div не хватает...

Я подозреваю, что здесь нужно маппить вложенными компонентами, то есть в родительский div вкладывать ul, li и, наверное, table, но не соображу что и как. Что надо сделать?

void
26.07.2008, 17:02
Ничего не надо вкладывать. Мапите внешний div, а затем генерируете меню через TS.

maaboo
26.07.2008, 17:05
У меня его не видно. То есть видны пункты верхнего уровня, без CSS. При маппинге всё отображается корректно.

maaboo
26.07.2008, 21:39
Дополняю.

Когда маплю указанное выше меню как EL:

При маппинге:
177

При просмотре:
173

При выводе в страницу:
174

Когда маплю как CO:

При просмотре:
175

При выводе в страницу:
176

То есть первый вариант как бы правильный, но такое чувство, что он CSS для меню не может обработать, или вложенные элементы. Выглядеть оно должно как на предпоследней картинке. При контейнере он просматривает нормально, но не выводит вообще в страницу.

Выручайте!

maaboo
27.07.2008, 15:10
Приблизительно нашёл в чём дело вот тут (http://www.typo3-jack.net/typo3-english-lists-netfielders-de/12361-typo3-templavoila.html). Как и следовало - замапить надо только верхний контейнер, однако необходимо прописать TS'ом нечто, а что именно - я не понимаю.

maaboo
27.07.2008, 16:13
Замапил только контейнерный див. Поменял сетап на

lib.menu_1 = HMENU

lib.menu_1.1 = TMENU
lib.menu_1.1 {
wrap = <UL> | </UL>
NO.wrapItemAndSub = <LI class="menu1-level1-no"> | </LI>
ACT = 1
ACT.wrapItemAndSub = <LI class="menu1-level1-act"> | </LI>
}

lib.menu_1.2 = TMENU
lib.menu_1.2 {
wrap = <UL> | </UL>
NO.wrapItemAndSub = <LI class="menu1-level2-no"> | </LI>
ACT = 1
ACT.wrapItemAndSub = <LI class="menu1-level2-act"> | </LI>
}

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

maaboo
27.07.2008, 17:09
Решилось добавкой expAll = 1 в каждый TMENU.

maaboo
27.07.2008, 17:11
Вопрос - а то, что я убрал stdWrap.htmlSpecialChars = 1 - это нормально?