PDA

Просмотр полной версии : Создать меню 2 уровня с такой структурой:


AnShLv
21.10.2009, 21:18
Как создать меню такой структуры (в 2 уровня)? Перепробовал уже все докумментированые методы, но не получаеться.
Помогите пожалуйста

<ul id="Menu1" class="MM">
<li><a href="http://www.smartmenus.org/">Home</a></li>
<li><a href="http://www.smartmenus.org/about/">About</a>

<ul>
<li><a href="http://www.smartmenus.org/about/introduction/">Introduction to SmartMenus</a></li>
<li><a href="http://www.smartmenus.org/about/compatibility/">Browser compatibility</a></li>
<li><a href="http://www.smartmenus.org/about/vasil-dinkov/">The author</a></li>
<li><a href="http://www.smartmenus.org/about/promote/">SmartMenus buttons</a></li>
</ul>
</li>

<li><a href="http://www.smartmenus.org/samples6/">Online Samples</a></li>
<li><a href="http://www.smartmenus.org/download/">Download</a></li>
<li><a href="http://www.smartmenus.org/license/">Licensing</a>
<ul>
<li><a href="http://www.smartmenus.org/license/types/">License</a></li>
<li><a href="http://www.smartmenus.org/license/purchase/">Purchase</a></li>

<li><a href="http://www.smartmenus.org/license/eula/">EULA</a></li>
</ul>
</li>

shuman
22.10.2009, 05:25
привожу пример примерно такого меню

идея взята с typo3-snippets

yacbddm = COA
yacbddm.wrap = <ul class="primary"> | </ul>
yacbddm.10 = HMENU
yacbddm.10 {
special = list
special.value = 13
}
yacbddm.10.1 = TMENU
yacbddm.10.1 {
noBlur = 1
expAll = 1
NO.wrapItemAndSub = <li class="home"> | </li>
ACT=1
ACT.wrapItemAndSub = <li class="home active"> | </li>
}
yacbddm.20 = HMENU
yacbddm.20 {
special = directory
excludeUidList = 13
special.value = 3
}
yacbddm.20.1 = TMENU
yacbddm.20.1 {
noBlur = 1
expAll = 1
NO.wrapItemAndSub = <li> | </li>
ACT=1
ACT.wrapItemAndSub = <li class="active"> | </li>
IFSUB=1
IFSUB {
wrapItemAndSub = <li> | </li>
}
ACTIFSUB=1
ACTIFSUB {
wrapItemAndSub = <li class="active"> | </li>
}
}

# First dropdown Menu configuration
yacbddm.10.2 = TMENU
yacbddm.10.2 {
noBlur = 1
expAll = 1
wrap = <ul> | </ul>
NO.wrapItemAndSub = <li> | </li>
IFSUB=1
IFSUB {
wrapItemAndSub = <li> | </li>
}
}
yacbddm.20.2 < yacbddm.10.2
yacbddm.30.2 < yacbddm.10.2

AnShLv
22.10.2009, 12:26
Спасибо, я немного переделал под свое меню, закомментировал несколько строк, и все прекрасно работает (TemplaVoila)
Может кому-то пригодится:


lib.mainMenu = COA
lib.mainMenu.wrap = <ul id="Menu1" class="MM"> | </ul>
lib.mainMenu.10 = HMENU
lib.mainMenu.10 {
#special = list
#special.value = 13
}
lib.mainMenu.10.1 = TMENU
lib.mainMenu.10.1 {
noBlur = 1
expAll = 1
NO.wrapItemAndSub = <li class="home"> | </li>
ACT=1
ACT.wrapItemAndSub = <li class="home active"> | </li>
}
lib.mainMenu.20 = HMENU
lib.mainMenu.20 {
special = directory
#excludeUidList = 13
special.value = 3
}
lib.mainMenu.20.1 = TMENU
lib.mainMenu.20.1 {
noBlur = 1
expAll = 1
NO.wrapItemAndSub = <li> | </li>
ACT=1
ACT.wrapItemAndSub = <li class="active"> | </li>
IFSUB=1
IFSUB {
wrapItemAndSub = <li> | </li>
}
ACTIFSUB=1
ACTIFSUB {
wrapItemAndSub = <li class="active"> | </li>
}
}

# First dropdown Menu configuration
lib.mainMenu.10.2 = TMENU
lib.mainMenu.10.2 {
noBlur = 1
expAll = 1
wrap = <ul> | </ul>
NO.wrapItemAndSub = <li> | </li>
IFSUB=1
IFSUB {
wrapItemAndSub = <li> | </li>
}
}
lib.mainMenu.20.2 < lib.mainMenu.10.2
lib.mainMenu.30.2 < lib.mainMenu.10.2

ddt
23.10.2009, 15:08
Привет.

Помогите разобраться с простенькой менюшкой. В шаблоне разместил меню:
<div id="menu_1">
<div class="menu1-level1-no"><a href="#">Menu item 1</a></div>
<div class="menu1-level1-no"><a href="#">Menu item 2</a></div>
<div class="menu1-level1-act"><a href="#">Menu item 3 (act)</a></div>
<div class="menu1-level2-no"><a href="#">Level 2 item</a></div>
<div class="menu1-level2-no"><a href="#">Level 2 item</a></div>
<div class="menu1-level2-act"><a href="#">Level 2 item (act)</a></div>
<div class="menu1-level1-no"><a href="#">Menu item 2</a></div>
</div>


В TypoScript шаблона страницы указал следующее:
# Menu 1 cObject
lib.menu_1 = HMENU
# First level menu-object, textual
lib.menu_1.1 = TMENU
lib.menu_1.1 {
# Normal state properties
NO.allWrap = <div class="menu1-level1-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1
# Enable active state and set properties:
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <div class="menu1-level1-act"> | </div>
}
# Second level menu-object, textual
lib.menu_1.2 = TMENU
lib.menu_1.2 {
# Normal state properties
NO.allWrap = <div class="menu1-level2-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1
# Enable active state and set properties:
ACT = 1
ACT.stdWrap.htmlSpecialChars = 1
ACT.allWrap = <div class="menu1-level2-act"> | </div>
}

На странице все равно отображается шаблонное меню, а не фактическая структура страниц сайта:
Menu item 1
Menu item 2
Menu item 3 (act)
Level 2 item
Level 2 item
Level 2 item (act)
Menu item 2


Что у меня неверно указано?

cherkatel
23.10.2009, 17:15
Судя по lib. ... вы используете TV. Проверяйте маппинг. Если же автопарсер, то давайте весь код.

Alex Podusov
23.10.2009, 17:15
ошибка в разметке области под это меню. чтобы сказать точнее - мало информации. используется TV? если да - пожалуста XML структуры данных - в студию

Судя по lib. ... вы используете TV. Проверяйте маппинг. Если же автопарсер, то давайте весь код.

не факт... код взят из на шару из руководства...

ddt
24.10.2009, 01:40
ошибка в разметке области под это меню. чтобы сказать точнее - мало информации. используется TV? если да - пожалуста XML структуры данных - в студию

не факт... код взят из на шару из руководства...

Использую TV. Код меню взял из руководства. Хочу запустить пример у себя, а потом доработать под себя.

Какую XML структуры данных Вы имеете в виду? Где мне ее взять?
(пардон за такие вопросы :) )

Alex Podusov
24.10.2009, 03:29
Левая колонка: Web - Templavoila; Средняя колонка - системная папка с шаблонами TV; в правом поле - клик по иконке DS шаблона, в выпавшей меню - Правка. Откроется структура DS, с блоком textarea - XML структуры данных.

Или так: в выпавшем меню после клика по иконке DS пункт Templavoila, затем отметить чекбокс Show XML, после чего отобразится таже структура DS (для просмотра, с подсветкой кода)

Для меню должен быть примерно такой код:

<field_menu type="array">
<tx_templavoila type="array">
<title>Динамическое меню</title>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>TypoScriptObject</eType>
<TypoScriptObjPath>lib.menu_1</TypoScriptObjPath>
</tx_templavoila>
</field_menu>


Отмеченное красным - обратить внимание. field_menu - заменить на название области, каким вы её назвали при разметке

ddt
24.10.2009, 03:34
Левая колонка: Web - Templavoila; Средняя колонка - системная папка с шаблонами TV; в правом поле - клик по иконке DS шаблона, в выпавшей меню - Правка. Откроется структура DS, с блоком textarea - XML структуры данных.

Спасибо за подробное разъяснение!
Вот XML

<?xml version="1.0" encoding="windows-1251" standalone="yes" ?>
<T3DataStructure>
<meta type="array">
<langDisable>1</langDisable>
</meta>
<ROOT type="array">
<tx_templavoila type="array">
<title>ROOT</title>
<description>Select the HTML element on the page which you want to be the overall container element for the template.</description>
</tx_templavoila>
<type>array</type>
<el type="array">
<field_menu type="array">
<tx_templavoila>
<title>Main menu</title>
<sample_data type="array">
<numIndex index="0">This is menu!</numIndex>
</sample_data>
<eType>TypoScriptObject</eType>
<tags>*:inner</tags>
<TypoScriptObjPath>lib.menu_1</TypoScriptObjPath>
</tx_templavoila>
</field_menu>
<field_content type="array">
<tx_templavoila type="array">
<title>Paje content</title>
<sample_data type="array">
<numIndex index="0">Page content here!</numIndex>
</sample_data>
<eType>ce</eType>
<TypoScript><![CDATA[
10= RECORDS
10.source.current=1
10.tables = tt_content
10.wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
]]></TypoScript>
<oldStyleColumnNumber type="integer">0</oldStyleColumnNumber>
</tx_templavoila>
<TCEforms type="array">
<config type="array">
<type>group</type>
<internal_type>db</internal_type>
<allowed>tt_content</allowed>
<size>5</size>
<maxitems>200</maxitems>
<minitems>0</minitems>
<multiple>1</multiple>
<show_thumbs>1</show_thumbs>
</config>
<label>Paje content</label>
</TCEforms>
</field_content>
</el>
</ROOT>
</T3DataStructure>

Alex Podusov
24.10.2009, 03:42
Всё верно... а в область контента вставка происходит?

ddt
24.10.2009, 03:44
Всё верно... а в область контента вставка происходит?

да, контент отображается

Alex Podusov
24.10.2009, 03:48
значит всё таки проблема с разметкой. какой блок указывался для области меню? <div id="menu_1">...</div> INNER ?

ddt
24.10.2009, 03:57
значит всё таки проблема с разметкой. какой блок указывался для области меню? <div id="menu_1">...</div> INNER ?

Приложил скрин маппинга шаблона. Элемент меню связан со слоем <div id="menu_1"> (*:inner)

Перемапил элемент меню, он у меня до этого к другому id-шнику цеплялся, очистил кеш - все заработало.

Alex, спасибо большое за наводку ;)

Alex Podusov
24.10.2009, 04:07
а что показывает при предпросмотре при разметке? замещает текст меню замещаемым текстом? (Кнопка Preview)

Alex Podusov
24.10.2009, 04:19
Вобщем-то причин может быть сколько угодно, вплоть до банальных. Я однажды до умопомрачения бился над подобной задачей, а причина была элементарная: при разметке в названии TSObjectPath iib.copiright буква "с" оказалась в русской раскладке, а TS Setup прописал его правильно англоязычно, что является разными именами. Так что перепроверь шаблон, переразметь в TV...