Typo3 OnePager 使用 Fluidtemplate 加载内容
Typo3 OnePager load Content with Fluidtemplate
我正在借助这个 Blog Post 创建一个 Typo3 OnePager 网站。它将根页面的所有子页面作为 OnePager 中的部分加载。此工作如解释的那样,但它仅直接从 tt_content 加载内容,而不是通过 Fluidtemplate。我希望它用 Fuildtemplate 加载,因为我有几个不同的模板可以在后端选择。
所以加载内容和模板的整个 TS 如下所示:
lib.sectionContent = HMENU
lib.sectionContent {
1 = TMENU
1 {
NO = 1
NO {
doNotLinkIt = 1
stdWrap >
stdWrap {
cObject = COA
cObject {
if.value = 4
if.equals.field = doktype
if.negate = 1
10 < temp.titleSectionId
10.wrap = <section id="|">
20 = CONTENT
20 < styles.content.get
20 {
table = tt_content
select.where.field = column
select.where.wrap = colPos = |
}
}
30 = TEXT
30 {
wrap = </section>
}
}
}
}
}
}
lib.mainTemplate = FLUIDTEMPLATE
lib.mainTemplate{
templateName = TEXT
templateName.stdWrap{
cObject = TEXT
cObject{
data = levelfield:-2,backend_layout_next_level,slide
override.field = backend_layout
split {
token = pagets__
1.current = 1
1.wrap = |
}
}
ifEmpty = contentPage1column
}
templateRootPaths {
10 = {$path.privat}Templates/Page/
}
layoutRootPaths {
10 = {$path.privat}Layouts/Page/
}
partialRootPaths {
10 = {$path.privat}Partials/Page/
}
}
在模板中,我使用
加载内容
<f:format.raw><f:cObject typoscriptObjectPath="lib.sectionContent" data="{column:0}" /></f:format.raw>
但是当我尝试加载 FE 时,我得到了这个错误:
执行'SELECT * FROM tt_content
WHERE (tt_content
.pid
IN (1)) AND (colPos =) 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
<= 1546847160) AND ((tt_content
.endtime
= 0) OR (tt_content
.endtime
> 1546847160)) AND (((tt_content
.fe_group
= '') OR (tt_content
.fe_group
IS NULL) OR (tt_content
.fe_group
= '0' ) 或 (FIND_IN_SET('0', tt_content
.fe_group
)) 或 (FIND_IN_SET('-1', tt_content
.fe_group
))))) ORDER BY sorting
ASC': 你的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在 ') AND (tt_content
.sys_language_uid
= 0) AND ((tt_content
.deleted
= 附近使用的正确语法0) 第 1 行的 AN'
我做错了什么?
谢谢!
如您所见,查询中的列没有值:
[...] WHERE (tt_content.pid IN (1)) AND (colPos =) AND [...]
^
当您检查构建查询的位置时:
lib.sectionContent = HMENU
lib.sectionContent {
1 = TMENU
1 {
NO = 1
NO {
stdWrap {
cObject = COA
cObject {
20 = CONTENT
20 {
select.where.field = column
select.where.wrap = colPos = |
:
你可以看到上下文是TMENU。那里有一条 pages
记录作为当前数据。 pages
中没有字段 column
.
您可以将 lib.sectionContent
更改为 COA,其中第一个条目将 'parameter' column
存储到寄存器中,稍后您可以将其用作 register:column
lib.sectionContent = COA
lib.sectionContent {
10 = LOAD_REGISTER
10 {
column.cObject = TEXT
column.cObject.field = column
}
20 = HMENU
20 {
:
select.where.data = register:column
select.where.wrap = colPos = |
:
我正在借助这个 Blog Post 创建一个 Typo3 OnePager 网站。它将根页面的所有子页面作为 OnePager 中的部分加载。此工作如解释的那样,但它仅直接从 tt_content 加载内容,而不是通过 Fluidtemplate。我希望它用 Fuildtemplate 加载,因为我有几个不同的模板可以在后端选择。
所以加载内容和模板的整个 TS 如下所示:
lib.sectionContent = HMENU
lib.sectionContent {
1 = TMENU
1 {
NO = 1
NO {
doNotLinkIt = 1
stdWrap >
stdWrap {
cObject = COA
cObject {
if.value = 4
if.equals.field = doktype
if.negate = 1
10 < temp.titleSectionId
10.wrap = <section id="|">
20 = CONTENT
20 < styles.content.get
20 {
table = tt_content
select.where.field = column
select.where.wrap = colPos = |
}
}
30 = TEXT
30 {
wrap = </section>
}
}
}
}
}
}
lib.mainTemplate = FLUIDTEMPLATE
lib.mainTemplate{
templateName = TEXT
templateName.stdWrap{
cObject = TEXT
cObject{
data = levelfield:-2,backend_layout_next_level,slide
override.field = backend_layout
split {
token = pagets__
1.current = 1
1.wrap = |
}
}
ifEmpty = contentPage1column
}
templateRootPaths {
10 = {$path.privat}Templates/Page/
}
layoutRootPaths {
10 = {$path.privat}Layouts/Page/
}
partialRootPaths {
10 = {$path.privat}Partials/Page/
}
}
在模板中,我使用
加载内容<f:format.raw><f:cObject typoscriptObjectPath="lib.sectionContent" data="{column:0}" /></f:format.raw>
但是当我尝试加载 FE 时,我得到了这个错误:
执行'SELECT * FROM tt_content
WHERE (tt_content
.pid
IN (1)) AND (colPos =) 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
<= 1546847160) AND ((tt_content
.endtime
= 0) OR (tt_content
.endtime
> 1546847160)) AND (((tt_content
.fe_group
= '') OR (tt_content
.fe_group
IS NULL) OR (tt_content
.fe_group
= '0' ) 或 (FIND_IN_SET('0', tt_content
.fe_group
)) 或 (FIND_IN_SET('-1', tt_content
.fe_group
))))) ORDER BY sorting
ASC': 你的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在 ') AND (tt_content
.sys_language_uid
= 0) AND ((tt_content
.deleted
= 附近使用的正确语法0) 第 1 行的 AN'
我做错了什么?
谢谢!
如您所见,查询中的列没有值:
[...] WHERE (tt_content.pid IN (1)) AND (colPos =) AND [...]
^
当您检查构建查询的位置时:
lib.sectionContent = HMENU
lib.sectionContent {
1 = TMENU
1 {
NO = 1
NO {
stdWrap {
cObject = COA
cObject {
20 = CONTENT
20 {
select.where.field = column
select.where.wrap = colPos = |
:
你可以看到上下文是TMENU。那里有一条 pages
记录作为当前数据。 pages
中没有字段 column
.
您可以将 lib.sectionContent
更改为 COA,其中第一个条目将 'parameter' column
存储到寄存器中,稍后您可以将其用作 register:column
lib.sectionContent = COA
lib.sectionContent {
10 = LOAD_REGISTER
10 {
column.cObject = TEXT
column.cObject.field = column
}
20 = HMENU
20 {
:
select.where.data = register:column
select.where.wrap = colPos = |
: