问题描述
我目前正面临一个问题,当我通过打字稿从特定页面中获取内容时,如果我之前已删除所有缓存,则只能在第二次页面加载后获得全部内容。第一个content元素根本不呈现(似乎可以忽略)。
这是我的打字稿:
lib.dynamicContent = COA
lib.dynamicContent {
5 = LOAD_REGISTER
5 {
colPos.cObject = TEXT
colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
pageUid.cObject = TEXT
pageUid.cObject {
field = pageUid
ifEmpty.data = TSFE:id
}
contentFromPid.cObject = TEXT
contentFromPid.cObject {
data = DB:pages:{register:pageUid}:content_from_pid
data.insertData = 1
}
wrap.cObject = TEXT
wrap.cObject {
field = wrap
}
}
20 = CONTENT
20 {
table = tt_content
select {
includeRecordsWithoutDefaultTranslation = 1
orderBy = sorting
where = {#colPos}={register:colPos}
where.insertData = 1
pidInList.data = register:pageUid
pidInList.override.data = register:contentFromPid
}
stdWrap {
dataWrap = {register:wrap}
required = 1
}
}
90 = RESTORE_REGISTER
}
这是我如何流畅地呈现内容的方式:
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '41',colPos: '1'}" />
清除缓存后,第一个内容元素的输出在第一个页面加载上:<div />
。重新加载页面时,我会从页面中获取全部内容。
我已经检查了执行的数据库查询,但它们始终相同,并返回正确的结果。
系统:
TYPO3 10.4.8
PHP 7.3
解决方法
您应该删除stdWrap
部分,该部分包含wrap
,而该部分应通过Fluid模板中的纯HTML创建。
我不确定100%,但是我想required
部分中的stdWrap
检查也会禁用该内容,因为可能会在呈现实际内容之前对其进行检查。