通过CASE定义workOnSubpart不起作用

时间:2013-11-16 11:48:53

标签: typo3 typoscript

我正在尝试使前端的布局取决于backend_layout值。这是我的TypoScript:

temp {
  layout = CASE
  layout {
    key.field = backend_layout
    key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide

    default = LAYOUT_ONECOLUMN
    1 = LAYOUT_ONECOLUMN
    2 = LAYOUT_GALLERYTOP
  }

  pageContent = TEMPLATE
  pageContent {
    template = FILE
    template.file = fileadmin/templates/index.html
    workOnSubpart < temp.layout
    marks {
      COLUMN0 < styles.content.getLeft
      COLUMN1 < styles.content.get
      COLUMN2 < styles.content.getRight
      COLUMN3 < styles.content.getBorder
    }
  }
}

page = PAGE
page {
  10 < temp.pageContent
}

这是相应的html-excerpt:

<!-- ###LAYOUT_ONECOLUMN### begin -->
    EINSPALTIG ;)
<!-- ###LAYOUT_ONECOLUMN### end -->

<!-- ###LAYOUT_GALLERYTOP### begin -->
###COLUMN0###

<div class="grid2">
    ###COLUMN1###
</div>

<aside class="grid1">
    ###COLUMN2###
</aside>
<!-- ###LAYOUT_GALLERYTOP### end -->

结果是一个空白页面。为什么这不起作用?出于调试目的,我做了以下事情:

temp {
  layout = CASE
  layout {
    key.field = backend_layout
    key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide

    default = TEXT
    default.value = LAYOUT_ONECOLUMN
    1 = TEXT
    1.value = LAYOUT_ONECOLUMN
    2 = TEXT
    2.value = LAYOUT_GALLERYTOP
  }
}

page = PAGE
page {
  10 < temp.layout
}

按预期方式将“LAYOUT_GALLERYTOP”打印到页面上。

我做了第二次测试:

temp {
  pageContent = TEMPLATE
  pageContent {
    template = FILE
    template.file = fileadmin/templates/index.html
    workOnSubpart = LAYOUT_GALLERYTOP
    marks {
      COLUMN0 < styles.content.getLeft
      COLUMN1 < styles.content.get
      COLUMN2 < styles.content.getRight
      COLUMN3 < styles.content.getBorder
    }
  }
}

page = PAGE
page {
  10 < temp.pageContent
}

这也产生了所需的布局,但当然不会响应更改后端的backend_layout值。

为什么我无法通过workOnSubpart定义CASE值。有解决方案或解决方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

CASE是一个cObject,因此您需要使用stdWrap cObject功能:

temp {
  layout = CASE
  layout {
    key.field = backend_layout
    key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide

    default = TEXT
    default.value = LAYOUT_ONECOLUMN
    1 = TEXT
    1.value = LAYOUT_ONECOLUMN
    2 = TEXT
    2.value = LAYOUT_GALLERYTOP
  }

  pageContent = TEMPLATE
  pageContent {
    template = FILE
    template.file = fileadmin/templates/index.html
    workOnSubpart.cObject < temp.layout
    marks {
      COLUMN0 < styles.content.getLeft
      COLUMN1 < styles.content.get
      COLUMN2 < styles.content.getRight
      COLUMN3 < styles.content.getBorder
    }
  }
}