如何拆分内容 - >使用typoscript将renderObj转换为变量?

时间:2017-10-18 14:45:40

标签: typo3 typoscript

我有一个简单的后端模块,您可以在其中切换或创建新的"主题" 。为简单起见,我们假设该模型仅包含徽标和颜色代码。在我的typoscript设置中,我使用以下代码从DB中获取项目:

temp.theme= CONTENT
temp.theme{
          select{
                ...
          }
          renderObj = COA
          renderObj {
                    #theme color
                    10 = TEXT
                    10.field = color
                    ...
                    #theme logo
                    40 = FILES
                    40{
                        references {
                              ...
                        }
                        renderObj = IMAGE
                        renderObj {
                              wrap = <div class="logo">|</div>
                              file.import.data = file:current:originalUid
                        }   
                    }
          }
}

如何将此对象拆分为变量? 这不会奏效,但我想这是我想要实现的目标的一个很好的代表:

lib.logo = COA
lib.logo < temp.theme.renderObj.40

另外,我想将颜色设置如下(显然这也不会起作用):

page.cssInline.1010 < temp.theme.renderObj.10

有没有更好的方法来实现我想要做的事情?到目前为止我的工作是复制这个对象,然后取消设置我不使用的内容:

temp.logo = COA
temp.logo{
          10 < temp.theme
          10.renderObj.10 >
          ...
          #10.renderObj.40 >
          ...
}

我确信有一种更简单的方法,但我无法找到它。

1 个答案:

答案 0 :(得分:1)

您必须阅读有关Typocript的运算符和cObject的更多信息。

lib.logo = COA
lib.logo < temp.theme.renderObj.40

这使lib.logo成为COA cObject,然后只复制其中的temp.theme的renderObj。但是如果没有它所属的CONTENT对象,renderObj就没用了。所以把它改成

lib.logo < temp.theme

它将整个对象复制到它。您之前不必将其声明为COA。也许你甚至不需要温度。 object - 你可以使整个lib.logo成为CONTENT对象。

同样适用于page.cssInline.1010 - 您不仅可以复制renderObj。将整个对象复制到它或使其直接成为CONTENT对象:

page.cssInline.1010 = CONTENT
page.cssInline.1010 {
  select{
    ...
  }
  renderObj = TEXT
  renderObj {
   field = color       
  }
}

存储renderObj的一些临时结果的唯一方法是使用 LOAD_REGISTER对象: https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/LoadRegister/Index.html?highlight=load_register

所有cObjects文档:https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Index.html 运营商: