Пользовательский рендеринг / обертка с помощью GridElements (опечатка 3)

Мне нужно сделать backend и frontend-layout с элементами сетки. Чтобы немного уточнить: у меня есть 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 в контейнере «правый»


person DasSaffe    schedule 19.10.2016    source источник


Ответы (2)


В этом случае вам следует выбрать другой подход и избавиться от отдельных оберток для столбцов в пользу общего cObject, использующего так называемые «виртуальные поля» Gridelements.

Эти поля заполняются содержимым во время процесса рендеринга, а затем становятся доступными через cObj-> data, таким образом, доступными через TypoScript field, 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 с описанием этих полей.

person Jo Hasenau    schedule 19.10.2016

У меня аналогичная ошибка в gridelement при рендеринге с использованием typoscript.

Я использовал тот же TypoScript, который вы использовали!

Пожалуйста, добавьте эту строку в свой шаблон> настройка наконец

tt_content.gridelements_pi1.20 = COA

Моя проблема решена добавлением этой строчки, надеюсь она вам поможет!


EXT: gridelements 8.0.0-dev

TYPO3: 8.7.8

Спасибо :)

person Jimit Shah    schedule 01.12.2017