我有以下问题。
我在单独的扩展中创建了一个自定义内容元素,如 Typo3 文档中所述。
在这种情况下,一切都会正常进行,直到渲染前端为止。没有显示错误,并且Typo3的核心内容元素(例如项目符号)显示正常。按照文档中的建议,我根据 sitepackage 文档构建了自己的页面扩展。
因此我有两个扩展。 sitepackage中,内容通过数据处理输出到Default.html中。
代码Default.html通过数据处理渲染内容
<f:layout name="Default" />
<f:section name="Main">
<main role="main" class="mainContainer">
<div class="row">
<div class="col-md-12">
<f:for each="{mainContent}" as="contentElement">
<f:cObject
typoscriptObjectPath="tt_content.{contentElement.data.CType}"
data="{contentElement.data}"
table="tt_content"
/>
</f:for>
</div>
</div>
</main>
</f:section>
我的 setup.typoscript 文件如下所示。 自定义内容元素的 setup.typoscript
lib.contentElement {
templateRootPaths.200 = EXT:accordion_contentelement/Resources/Private/Templates/
}
tt_content {
accordion_contentelement =< lib.contentelement
accordion_contentelement {
templateName = AccordionElement
}
}
站点包的setup.typoscript
@import 'EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript'
@import 'EXT:site_package/Configuration/TypoScript/Setup/CssFileInclusion.typoscript'
page = PAGE
page {
typeNum = 0
}
page.10 = FLUIDTEMPLATE
page.10 {
templateName = TEXT
templateName {
cObject = TEXT
cObject {
data = pagelayout
required = 1
case = ucfirst
split {
token = pagets__
cObjNum = 1
1.current = 1
}
}
ifEmpty = Default
}
templateRootPaths {
0 = EXT:site_package/Resources/Private/Templates/Page/
1 = {$page.fluidtemplate.templateRootPath}
}
partialRootPaths {
0 = EXT:site_package/Resources/Private/Partials/Page/
1 = {$page.fluidtemplate.partialRootPath}
}
layoutRootPaths {
0 = EXT:site_package/Resources/Private/Layouts/Page/
1 = {$page.fluidtemplate.layoutRootPath}
}
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
levels = 1
includeSpacer = 1
as = mainnavigation
}
20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
20 {
table = tt_content
orderBy = sorting
where = colPos = 0
as = mainContent
}
}
}
config {
# Adjust the title tag to be displayed as “website - page title”
pageTitleSeparator = -
pageTitleSeparator.noTrimWrap = | | |
# Display the Admin Panel at the bottom of pages to logged in backend users
admPanel = 1
}
我还尝试使用 lib.dynamicContent 获得具有相同结果的输出,没有错误消息,并且前端中只有标准内容元素。
setup.typoscript 中的代码
lib.dynamicContent = COA
lib.dynamicContent {
10 = LOAD_REGISTER
10.colPos.cObject = TEXT
10.colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
20 = CONTENT
20 {
table = tt_content
select {
orderBy = sorting
where = {#colPos}={register:colPos}
where.insertData = 1
}
}
90 = RESTORE_REGISTER
}
代码 Default.html 通过 lib.dynamicContent 渲染内容
<f:layout name="Default" />
<f:section name="Main">
<main role="main" class="mainContainer">
<div class="row">
<div class="col-md-12">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '0'}" />
</div>
</div>
</main>
</f:section>
我使用Typo3版本12.4.7。
希望有人能帮忙。谢谢你
下一步调试:
之后:
tt_content {
accordion_contentelement =< lib.contentelement
accordion_contentelement {
templateName = AccordionElement
}
}
删除配置并构建一个静态配置:
tt_content {
// remove
accordion_contentelement >
// define anew
accordion_contentelement = TEXT
accordion_contentelement.value = <p>my static text </p>
}