Пользовательский элемент Typo3 с Flexform: Как мне записать значение в заголовок tt_content?

Я пишу расширение Typo3 с настраиваемыми элементами содержимого с помощью Flexforms. Все работает нормально. Я просто хотел бы добавить значение в заголовок внутри tt_content, как это делают стандартные элементы содержимого Typo3. Таким образом, если я создам перевод, заголовок переведенного содержимого по умолчанию должен отображаться как Мой заголовок (копия 1), а не просто как (копия 1). Кроме того, заголовок должен появиться, если я попытаюсь добавить ссылку привязки к элементу.

Например, моя гибкая форма начинается так:

<T3DataStructure>
  <sheets>
    <sGeneral>
    <ROOT>              
      <TCEforms>
        <sheetTitle>My Element</sheetTitle>
      </TCEforms>               
      <type>array</type>
      <el>
        <headline>
          <TCEforms>
            <label>Text</label>
            <config>
               <type>input</type>                                               
            </config>
          </TCEforms>
        </headline>
        ...

Я получаю доступ к значению заголовка в моем шаблоне HTML следующим образом: {flexform.sGeneral.headline}

Это хорошо работает. Как я могу добиться, чтобы это значение также записывалось в заголовок tt_content?

Я действительно ценю твою помощь.


person Port Islander 2009    schedule 20.12.2020    source источник
comment
Короткий ответ: нельзя. Гибкая форма хранит значения всех ваших полей гибкой формы в одном атрибуте таблицы базы данных. В то время как стандартное поле заголовка имеет собственный атрибут таблицы. Что вы можете сделать, так это включить и показать поле заголовка для вашего элемента содержимого. Это делается через TCA. У вас должен быть файл типа Configuration / TCA / Overrides / tt_content.php, который определяет, какие поля доступны для вашего элемента содержимого. Одним из них должен быть ваш атрибут flexform (который показывает несколько полей). Там вы должны включить и показать поле заголовка.   -  person Stefanos Karasavvidis    schedule 20.12.2020
comment
Большое спасибо за полезный ответ. Да, у меня есть файл переопределения TCA tt_content. Могу ли я установить только статическое значение для заголовка или каким-то образом указать значение внутри гибкой формы?   -  person Port Islander 2009    schedule 21.12.2020


Ответы (1)


Flexform (и все поля, объявленные внутри) являются одним полем всей записи tt_content. Таким образом, существует большая разница, получаете ли вы доступ к данным поля гибкой формы или к данным из любого обычного поля в записи. Вы не можете перепутать. (Поле header в вашей гибкой форме не имеет отношения к обычному полю header записи)

Чтобы предоставить редакторам доступ к обычному полю заголовка, вам необходимо объявить доступ для вашего типа tt_content (CType). Это делается в объявлении TCA.

В любом случае у вас должен быть доступ к полю header из вашего FLUID, так как у вас есть доступ ко всей записи tt_content. нормально, как {data.fieldname}, вы можете проверить с помощью отладчика:
<f:debug title="all fluid variables">{_all}</f:debug>

person Bernd Wilke πφ    schedule 21.12.2020
comment
Большое тебе спасибо. Я добавил доступ к палитре заголовков в файле переопределения TCA и могу отображать значение, используя {data.header} в жидкости. Это решает мою проблему. Кстати, есть ли простой способ избавиться от полей [header_layout], [header_position], [date] и [header_link] в палитре заголовков? Мне действительно нужно только поле [заголовок] .. - person Port Islander 2009; 22.12.2020
comment
не добавляйте «палитру заголовка», а только «поле заголовка» к вашему типу контента - person Bernd Wilke πφ; 22.12.2020