PDA

Просмотр полной версии : HMENU c дополнительными полями из Templavoila


alexk
30.08.2013, 16:13
Добрый день коллеги, столкнулся тут с необходимостью сделать сложное меню с дополнительными полями из свойств страницы. Поля добавляем через Templavoila, без разметки (в моем случае эти поля нужны были исключительно для информативности), можно так же с разметкой если есть желание добавить дополнительные параметры в header.

Сложность составляет именно вытащить данные из новых полей, т.к. по умолчанию данные этих полей будут хранится в виде XML в таблице tx_templavoila_flex. И при стандартной схеме изъятия через {field:} мы увидим полностью всю таблицу.

Нам же нужно вытащить конкретные значения. Вот простейший пример XML из таблицы tx_templavoila_flex:


<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<sheet index="sDEF">
<language index="lDEF">
<field index="my_field_1">
<value index="vDEF">Значение 1</value>
</field>

</language>
</sheet>
</data>
</T3FlexForms>


Таким образом у меня появилось дополнительное поле, теперь нужно вытащить информацию из него.

Стандартного решения сделать это только через typoscript нет, по этому я и решил описать эти действия.

Что делаем:
1. Скачиваем и устанавливаем расширение best_getflexfield (typo3.org/extensions/repository/view/best_getflexfield)
2. Пишем следующий TS

lib.title = TEXT
lib.text {
preUserFunc = tx_bestgetflexfield_pi1->getFieldValue
preUserFunc.dbField = tx_templavoila_flex
preUserFunc.flexField = my_field_1
noTrimWrap = |element |
}


Как видите решение простое, но я лично потерял день на поиски, чего вам не желаю:)