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 = |
    :