Доступ к настройке страницы в шаблоне

Я пытаюсь получить доступ к гибкой конфигурации страницы внутри шаблона.

Подробно: я добавил поле выбора в свой макет страницы

            <flux:flexform.field.select name="pageIcon" items="{
                0: {0: '{f:translate(key: \'pageIconNone\')}', 1: ''},
                1: {0: '{f:translate(key: \'pageIconFacebook\')}', 1: 'fa-facebook-square'},
                2: {0: '{f:translate(key: \'pageIconFlickr\')}', 1: 'fa-flickr'},
                3: {0: '{f:translate(key: \'pageIconGooglePlus\')}', 1: 'fa-google-plus-square'}
            }"/>

Все идет нормально. Теперь я отображаю меню для доступа к этому полю.

    <v:page.menu.directory pages="{settings.pid.socialMenu}" useShortcutData="TRUE" classFirst="first" classLast="last">
            <f:for each="{menu}" as="mainPage" iteration="iteration">
                <a href="{mainPage.link}" class="{mainPage.class}"><i class="fa {mainPage.pageIcon} fa-2x"></i><b>{mainPage.title}</b></a>
            </f:for>
    </v:page.menu.directory>

Но это не работает. После некоторой отладки я заметил, что эта конфигурация хранится в tx_fed_page_flexform, которая содержит массив XML.

Как я могу получить доступ к значениям XML внутри моего изменяемого шаблона?

Markus

1 ответ

Решение

Самый простой способ:

https://fluidtypo3.org/viewhelpers/flux/master/Form/DataViewHelper.html

<flux:flexform.data table="pages" field="tx_fed_page_flexform" uid="{pageUid}" as="pageData"> <a href="#">{pageData.pageIcon}</a> </flux:flexform.data>

Причина не всегда извлечения этих данных, просто для производительности. Есть еще один способ, о котором вы можете не знать:

<flux:flexform.field.select name="pages.pageIcon" items="{...}" />

Если вы называете свое поле таким образом (pages. префикс является ключом, так как мы используем pages Таблица БД) ваше значение будет сохранено в поле в самой записи (поле, которое вы затем должны добавить в схему SQL / TCA, и включить скольжение значений в корневой строке, если вы этого хотите). Если поле с этим префиксом сохранено, Flux вставит его значение непосредственно в запись страниц, что означает, что вы можете сразу получить к нему доступ, используя, например, {pageVariable.icon} без необходимости flux:flexform.data ViewHelper.

ОБНОВИТЬ

Для более новой версии Flux попробуйте:

<flux:form.data table="pages" field="tx_fed_page_flexform" uid="{pageUid}" as="pageData"> <a href="#">{pageData.pageIcon}</a> </flux:form.data>

Другие вопросы по тегам