Рендеринг контента в TYPO3
Так или иначе, вам придется сопоставить внутренний столбец с Fluid (переменная или viewhelper). Для этого нужен TypoScript.
Ранее вам приходилось писать что-то вроде этого в TypoScript (обратите внимание на комментарии):
page = PAGE
page {
10 = FLUIDTEMPLATE
10 {
// [...]
variables {
// Add new variable of type CONTENT.
// 'colPos=0' selects all content in backend column with number '0':
leftColumn = CONTENT
leftColumn {
table = tt_content
select {
orderBy = sorting
where = colPos=0
where.insertData = 1
}
}
// Copy configuration of the first variable,
// but change the column number to '1':
rightColumn < .leftColumn
rightColumn.select.where = colPos=1
}
}
}
В шаблоне Fluid вы затем используете эти переменные для визуализации содержимого там, где оно необходимо (упрощенно):
<div class="row">
<div class="col-sm-6">{leftColumn}</div>
<div class="col-sm-6">{rightColumn}</div>
</div>
Для каждого нового столбца, который вам нужен, в TypoScript была добавлена новая переменная. Представьте себе макет страницы в общей сложности с 15 столбцами: сопоставить их все с Fluid сложно.
Новый способ: lib.dynamicContent
Для предотвращения этого был изобретен этот помощник TypoScript. Он является частью довольно нового TYPO3 Site Package Tutorial . Я предполагаю, что вы уже читали этот учебник, так как ваша версия lib.dynamicContent
идентична.
Расширенная версия также может быть найдена в расширении bootstrap_package , которое также является частью официального ознакомительного пакета TYPO3. Я не буду объяснять все варианты здесь.
Поэтому я рассматриваю это решение как текущее состояние визуализации столбцов в TYPO3.
Что это делает?
Короче говоря, он в основном сопоставляет контент с вашим шаблоном Fluid, как и часть leftColumn = CONTENT
, показанная выше.
Но это избавит вас от необходимости отображать все столбцы вручную, используя некоторые функции TypoScript.
В своем шаблоне Fluid вы затем будете использовать панель просмотра Fluid f:cObject
. Этот viewhelper обеспечивает соединение с TypoScript. С атрибутом data
вы можете передавать значения этому TypoScript. Для базовой версии lib.dynamicContent
вы можете передать желаемый номер colPos. При желании вы можете назначить другой идентификатор страницы, чем текущий. Затем он будет использован этим TypoScript для динамического построения оператора select:
<div class="row">
<div class="col-sm-6">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '0'}"/>
</div>
<div class="col-sm-6">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '1'}"/>
</div>
</div>
Ваш конкретный случай
Чтобы ответить на ваш первоначальный вопрос, нам понадобится дополнительная информация:
- Какую версию TYPO3 вы используете?
- Как вы пытались отобразить содержимое в шаблоне Fluid? Вы только передали номер
colPos
в атрибуте данных?
Я пытался воспроизвести ваше сообщение об ошибке в TYPO3 v8 и v9 с разными ошибками при печати, но безуспешно. Во всех случаях, когда я получал исключение, часть colPos
всегда содержала точное содержимое атрибута данных, а не Array
.