Показать сообщение отдельно
Старый 30.08.2013, 16:13   #1
alexk
Senior Member
 
Регистрация: 26.10.2007
Сообщений: 108
По умолчанию HMENU c дополнительными полями из Templavoila

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

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

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

Код HTML:
<?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
2. Пишем следующий TS
Код HTML:
lib.title = TEXT
lib.text {
   preUserFunc = tx_bestgetflexfield_pi1->getFieldValue
   preUserFunc.dbField = tx_templavoila_flex
   preUserFunc.flexField = my_field_1
   noTrimWrap = |element |
}
Как видите решение простое, но я лично потерял день на поиски, чего вам не желаю
__________________
Фанат TYPO!
alexk вне форума   Ответить с цитированием