我需要在某个colPos中打开TypoScript中的TextPic CElement

时间:2015-09-02 08:04:18

标签: typo3 typoscript

我想完全按照我在标题中提到的那样做。我想在某个Col位置(在我的后端布局中定义)打开(重新定义输出,即使需要)一个内容元素(textpic,因为我将它用于滑块输出)。 我是用Jquery完成的,但这似乎是一个低于标准的解决方案。

我的代码:

tt_content = CASE 
tt_content {
key.field = colPos
#10 = CASE
10 {
    #key.field = CType
    stdWrap.innerWrap.cObject >
    stdWrap.innerWrap2 >
    dataWrap >
    prepend >
    textpic.20.text.10.10.stdWrap.dataWrap >
    image.20.imageStdWrap.dataWrap >
    image.20.imageStdWrapNoWidth.wrap >
    image.20.imageColumnStdWrap.dataWrap >
    image.20.layout.default.value = ###IMAGES######TEXT###
    image.20.layout.1.value < image.20.layout.default.value
    image.20.layout.2.value < image.20.layout.default.value
    image.20.layout.8.value < image.20.layout.default.value
    image.20.layout.9.value < image.20.layout.default.value
    image.20.layout.10.value < image.20.layout.default.value
    image.20.layout.17.value < image.20.layout.default.value
    image.20.layout.18.value < image.20.layout.default.value
    image.20.layout.25.value < image.20.layout.default.value
    image.20.layout.26.value < image.20.layout.default.value
    image.20.rendering.dl.imageRowStdWrap.dataWrap >
    image.20.rendering.dl.oneImageStdWrap.dataWrap >
    image.20.rendering.dl.imgTagStdWrap.wrap >
    image.20.rendering.dl.editIconsStdWrap.wrap >
    image.20.rendering.dl.caption.wrap >
    textpic.20.text.10.10.stdWrap.dataWrap >
    textpic.20.text.wrap >
}
}

任何人都有想法甚至是片段? ;)

很多事先得到任何帮助。

1 个答案:

答案 0 :(得分:0)

I have answered a question similar this once before

而不是更改整个tt_content配置,只需将其更改为您需要的位置。

在下面的例子中,我创建了一个名为&#39; noWraps&#39;的新渲染方法。在这里,我已经清除了所有的包装。

接下来,我创建了一个内容库lib.yourContent,您可以根据需要为其命名。我们选择我们喜欢的colPos,从您的示例中我们使用colPos = 10。然后我们明确告诉renderObj复制tt_content配置,然后我们覆盖&#39; textpic&#39; renderMethod使用&#39; noWraps&#39;。

# Create a new renderMethod named 'noWraps' which can be used across the whole system
tt_content.textpic.20.rendering.noWraps {
  imageRowStdWrap.dataWrap = |
  noRowsStdWrap.wrap = |
  oneImageStdWrap.dataWrap = |
  imgTagStdWrap.wrap = |
  editIconsStdWrap.wrap = |
  caption.wrap = |
}

lib.yourContent < styles.content.get
lib.yourContent {
  select.where = colPos = 10
  renderObj < tt_content
  renderObj {
    # Set renderMethod to 'noWraps' only for this section
    textpic.20.renderMethod = noWraps
  }
}

上面的代码仍然没有经过测试,但它应该可行 - 只要询问它是否不合适。

我可以看到你也覆盖了默认布局,但你还没有提到你的问题?如果您需要覆盖它,则只需添加/更新以下内容。

lib.yourContent < styles.content.get
lib.yourContent {
  select.where = colPos = 10
  renderObj < tt_content
  renderObj {
    # Set renderMethod to 'noWraps' only for this section
    textpic.20.renderMethod = noWraps
    textpic.20.layout >
    textpic.20.layout = TEXT
    textpic.20.layout.value = ###IMAGES######TEXT###
  }
}

由于您在自己的示例中只是将所有不同的情况重写为相同的值,因此我们也可以将其重新定义为静态值。首先,我们使用textpic.20.layout >来清除默认配置。然后我们将其定义为TEXT对象textpic.20.layout = TEXT,然后在最后设置值textpic.20.layout.value = ###IMAGES######TEXT###

更新:以下测试并适用于TYPO3 CMS 7.4.0

我添加了一些额外的代码来删除最后一个包裹。

# Create a new renderMethod named 'noWraps' which can be used across the whole system
tt_content.textpic.20.rendering.noWraps {
  imageRowStdWrap.dataWrap = |
  noRowsStdWrap.wrap = |
  oneImageStdWrap.dataWrap = |
  imgTagStdWrap.wrap = |
  editIconsStdWrap.wrap = |
  caption.wrap = |
  allStdWrap.dataWrap = |
}

lib.yourContent < styles.content.get
lib.yourContent {
  select.where = colPos = 10
  renderObj < tt_content
  renderObj {
    # Set renderMethod to 'noWraps' only for this section
    textpic.20.renderMethod = noWraps
    textpic.20.imageStdWrap.dataWrap = |
    textpic.20.imageStdWrapNoWidth = |
    textpic.20.layout >
    textpic.20.layout = TEXT
    textpic.20.layout.value = ###IMAGES######TEXT###
  }
}