Обработка данных Gridelements: передать аргументы расширению (ctype = list)

Использование gridelements с обработкой данных отлично работает для всех элементов содержимого по умолчанию. Но если я включу одно из своих собственных расширений, аргументы для контроллера потеряны. Таким образом, элемент содержимого отображается, но с действием по умолчанию (список) и шаблонами по умолчанию.


Для воспроизведения я использовал известное новостное расширение:

Статические включения (шаблон):

  • Новости
  • gridelements
  • my_site_package

Определение отображения сетки (часть my_site_package):

mySitePackage.gridelements.defaultGridSetup < lib.gridelements.defaultGridSetup
mySitePackage.gridelements.defaultGridSetup {
 templateName.field = tx_gridelements_backend_layout
  templateName.ifEmpty = default
  layoutRootPaths {
    10 = EXT:gridelements/Resources/Private/Layouts/
    20 = EXT:my_site_package/Resources/Private/Layouts/Gridelements/
  }
  partialRootPaths {
    10 = EXT:gridelements/Resources/Private/Partials/
    20 = EXT:my_site_package/Resources/Private/Partials/Gridelements/
  }
  templateRootPaths {
    10 = EXT:gridelements/Resources/Private/Templates/
    20 = EXT:my_site_package/Resources/Private/Templates/Gridelements/
  }
  dataProcessing {
    10 = GridElementsTeam\Gridelements\DataProcessing\GridChildrenProcessor
    10 {
        default {
            as = children
        }
    }
   }
  }

Гибкий рендеринг (часть my_site_package):

<f:for each="{children}" as="row" key="rowNumber">
  <f:for each="{row}" as="column" key="columnNumber">
    <f:for each="{column}" as="child">
        <f:cObject typoscriptObjectPath="tt_content.{child.data.CType}" data="{child.data}" table="tt_content" />
    </f:for>
  </f:for>
</f:for>

Интеграция плагинов (серверная часть):

  • Действие контроллера: показать

Результат во внешнем интерфейсе, если НЕ помещен в элемент управления:

  • Плагин новостей отображается правильно и вызывает showAction

Результат во внешнем интерфейсе, если поместить его в gridelement:

  • Плагин новостей отображается, но возвращается к действию списка по умолчанию. Также игнорируются настройки шаблона из my_site_package. Используются шаблоны новостей по умолчанию.

Я что-то здесь упускаю или это ошибка?


person Mikel Wohlschlegel    schedule 22.08.2019    source источник


Ответы (2)


Просто посмотрел на проблему еще раз, и решением может быть что-то еще:

Вы должны отключить resolveFlexformData в конфигурации Gridelements, чтобы избежать обработки XML-данных при рендеринге дочерних элементов сетки.

https://gitlab.com/coderscare/gridelements/issues/14

person Jo Hasenau    schedule 31.10.2019

Это не ошибка, а отсутствующая функция в шаблонах внешнего интерфейса, которую вам придется реализовать самостоятельно.

Gridelements просто предоставляет несколько базовых примеров шаблонов, которые работают с основными элементами из коробки. Как только будут задействованы какие-либо данные конкретного плагина, вам нужно будет предоставить эти данные, поскольку Gridelements не может знать, какой плагин вы собираетесь использовать и какие параметры вы хотите предоставить.

Просто зарегистрируйте свои собственные шаблоны, фрагменты и макеты в настройках вашего пакета сайта, чтобы Gridelements мог использовать их, прежде чем возвращаться к своим собственным файлам.

person Jo Hasenau    schedule 23.08.2019
comment
Спасибо. Извините, наверное, я не совсем ясно выразился. Расширение имеет собственные шаблоны и правильно отображается, если не помещено в элемент сетки. Если я перенесу его в сетку, он больше не будет отображаться. Я думаю, это как-то связано с порядком статических включений. Если gridelements включается перед пакетом сайта, он не учитывает пути к шаблонам, определенные в пакете сайта, и возвращается к исходным шаблонам ext. Мне придется углубиться в это (или вернуться к определениям старой школы). - person Mikel Wohlschlegel; 23.08.2019
comment
Попробуйте добавить table = tt_content в вызов f: cObject Viewhelper. Если это сработает, отправьте отчет об ошибке на странице gitlab.com/coderscare/gridelements/issues. - person Jo Hasenau; 23.08.2019