我正在学习打字3,并创建了一个网站与几个子页,但每次我点击一个子页我得到这个错误。
An exception occurred while executing 'SELECT * FROM `tt_content` WHERE
(`tt_content`.`pid` IN (19)) AND (`colPos`=Array) AND
(`tt_content`.`sys_language_uid` = 0) AND ((`tt_content`.`deleted` = 0) AND
(`tt_content`.`t3ver_state` <= 0) AND (`tt_content`.`pid` <> -1) AND
(`tt_content`.`hidden` = 0) AND (`tt_content`.`starttime` <= 1540989540) AND
((`tt_content`.`endtime` = 0) OR (`tt_content`.`endtime` > 1540989540)) AND
(((`tt_content`.`fe_group` = '') OR (`tt_content`.`fe_group` IS NULL) OR
(`tt_content`.`fe_group` = '0') OR (FIND_IN_SET('0',
`tt_content`.`fe_group`)) OR (FIND_IN_SET('-1', `tt_content`.`fe_group`)))))
ORDER BY `sorting` ASC': Unknown column 'Array' in 'where clause'
为什么是colpos=array?它不应该是数字而不是数组吗?
这在我的dynamiccontent.typoscript文件中。
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
}
如果我改变{register:colpos}例如,将站点加载到0,但布局错误。你能解释一下为什么我会有这个例外吗?
2条答案
按热度按时间pqwbnv8z1#
通过在dynamiccontent.typoscript中使用此解决了此问题
ql3eal8s2#
以排版3呈现内容
无论如何,您必须将后端列Map到fluid(variable或viewhelper)。为此,需要打字。
以前,你必须用排印字体写这样的东西(注意注解):
在流体模板中,然后使用此变量在需要的地方呈现内容(简化):
对于您需要的每一个新列,都有一个新变量要添加到您的排版脚本中。想象一下一个总共有15列的页面布局:将所有这些Map到fluid是很麻烦的。
新方法:lib.dynamiccontent
为了防止这种情况,这个打字助手被发明了。这是相当新的typo3网站包教程的一部分。我假设您已经阅读了本教程,作为您的
lib.dynamicContent
完全相同。一个扩展版本也可以在bootstrap\u包扩展中找到,它也是官方typo3介绍包的一部分。我不会在这里解释所有的选择。
因此,我将此解决方案视为typo3中呈现列的当前状态。
它有什么作用?
简而言之,它基本上会将内容Map到流体模板,就像
leftColumn = CONTENT
上面显示的零件。但是,通过使用一些打字功能,它可以节省手动Map所有列的工作。在流体模板中,然后将使用流体viewhelper
f:cObject
. 此viewhelper提供到打字脚本的连接。与data
属性,您可以将值传递给此打字脚本。对于基本版本lib.dynamicContent
您可以传递所需的colpos编号。或者,您可以指定一个不同于当前页面id的页面id。然后,此打字脚本将使用它动态构建select语句:你的具体情况
要回答您最初的问题,我们需要更多信息:
你用的是哪种版本?
您是如何尝试在流体模板中呈现内容的?你只通过了考试吗
colPos
数据属性中的数字?我试着在typo3v8和v9中用不同的输入错误重现你的错误信息,但没有成功。在所有情况下,我得到了一个例外
colPos
部分始终包含数据属性的确切内容,而不是Array
.