Пользовательский рендеринг / обертывания с помощью GridElements (typo3)
Я должен сделать бэкэнд и макет внешнего интерфейса с элементами сетки. Чтобы уточнить это немного: у меня есть 10 контейнеров, 5x2
В бэкэнде это выглядит так:
con 1_1 | con 2_1 | con 3_1 | con 4_1 | con 5_1
con 1_2 | con 2_2 | con 3_2 | con 4_2 | con 5_2
(con означает контейнер)
Возможно, есть более разумные способы реализовать это, возможно, с помощью элементов "текст с изображением", но в данном случае это было требованием.
Теперь проблемная часть. Мне нужно обернуть каждый контейнер по-разному. Мой ожидаемый результат примерно такой:
<div class="left w-clearfix">
<div class="organe_50_stapel_logo">
IMAGE // works
</div>
<div class="organe_50_stapel_text">
TEXT // works
</div>
</div>
(2-й - 4-й контейнер будет обернут в "середину", а 5-й контейнер - "справа").
Теперь для моей настройки я получаю обернутые поля (помеченные // работами), однако, я застрял, оборачивая определенные поля, которые принадлежат друг другу.
Вот моя установка:
21 < lib.gridelements.defaultGridSetup
21 {
columns {
11 < .default
11.wrap = <div class="organe_50_stapel_logo">|</div>
12 < .default
12.wrap = <div class="organe_50_stapel_logo">|</div>
13 < .default
13.wrap = <div class="organe_50_stapel_logo">|</div>
14 < .default
14.wrap = <div class="organe_50_stapel_logo">|</div>
15 < .default
15.wrap = <div class="organe_50_stapel_logo">|</div>
21 < .default
21.wrap = <div class="organe_50_stapel_text">|</div>
22 < .default
22.wrap = <div class="organe_50_stapel_text">|</div>
23 < .default
23.wrap = <div class="organe_50_stapel_text">|</div>
24 < .default
24.wrap = <div class="organe_50_stapel_text">|</div>
25 < .default
25.wrap = <div class="organe_50_stapel_text">|</div>
}
}
11 + 21 принадлежит в контейнере "левый" 12,13,14,22,23,24 в контейнере "средний" 15,25 в контейнер "правый"
2 ответа
В этом случае вы должны пойти по другому пути и избавиться от отдельных оболочек для столбцов в пользу общего cObject, использующего так называемые "виртуальные поля" Gridelements.
Эти поля заполняются содержимым в процессе рендеринга, а затем становятся доступными через cObj->data, что делает их доступными через поле TypoScript, data, insertData и dataWrap, а также переменные внутри FLUIDTEMPLATE.
21 < lib.gridelements.defaultGridSetup
21 {
cObject = TEXT
cObject {
dataWrap (
<div class="left w-clearfix">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_11}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_21}</div>
</div>
<div class="middle">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_12}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_22}</div>
</div>
<div class="middle">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_13}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_23}</div>
</div>
<div class="middle">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_14}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_24}</div>
</div>
<div class="right">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_15}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_25}</div>
</div>
)
}
}
Это работает для flexform_fieldname, parentgrid_fieldname, tx_gridelements_view_column_123 и tx_gridelements_view_child_123. Кроме того, существуют tx_gridelements_view_children и tx_gridelements_view_columns, но они содержат массивы для людей FLUIDTEMPLATE, поскольку TypoScript не может работать с массивами.
Поля называются "виртуальными", потому что они не существуют в базе данных, но будут заполнены в cObj-> data во время процесса рендеринга. Тем не менее, вы можете делать с ними все, что можно сделать с реальными полями, кроме записи их обратно в базу данных.
См. https://docs.typo3.org/typo3cms/extensions/gridelements/Chapters/Typoscript/Reference/Index.html Справочник TypoScript, описывающий эти поля.
Я получил аналогичную ошибку в gridelement путем разрыва с использованием typoscript.
Я использовал точный TypoScript, который вы использовали!
Пожалуйста, добавьте эту строку в ваш шаблон> Настройка наконец
tt_content.gridelements_pi1.20 = COA
Моя проблема решена добавлением этой строки, надеюсь, она вам поможет!
EXT: gridelements 8.0.0-dev
TYPO3: 8,7,8
Спасибо:)