有条件地隐藏前端插件的 tt_content div

Conditional hiding of tt_content div for plugin in Frontend

我正在使用 TYPO3 8fluid_styled_content

正在开发具有以下要求的扩展:如果满足特定条件(取决于 URL 查询参数),前端中的插件不应显示任何内容。在这种情况下,插件的流体输出将为空(取决于控制器中设置的变量)。但是 TYPO3 仍然 - 默认情况下 - 呈现一个环绕 div 和 header。

所以,基本上,我得到的是这样的:

<div id="c217" class="...">
  <header>
    <h2 class="...">Header</h2>
  </header>
  <p> <!-- plugin output here is empty -- > </p>
</div>

我如何(动态地)防止这种情况发生?


之前有人问过这个问题,但我找到的解决方案不适用于 fluid_styled_content:

你应该使用FSC方式。
所有内容都使用使用布局和部分的模板呈现。除了简单的 CE,您还有一个插件模板,该模板请求呈现 header.

的布局

用你的插件的特殊条件增强(全局)布局以避免header(一定要自己渲染header)或者避免header如果你插件不会呈现任何输出。


编辑:

将覆盖 template-pathes 添加到 FSC:

lib.contentElement {
   templateRootPaths {
      200 = EXT:your_extension_key/Resources/Private/FSC/Templates/
   }
   partialRootPaths {
      200 = EXT:your_extension_key/Resources/Private/FSC/Partials/
   }
   layoutRootPaths {
      200 = EXT:your_extension_key/Resources/Private/FSC/Layouts/
   }
}

现在您可以将 default-layout 从 FSC 文件夹复制到您的布局文件夹,并在该布局中添加一个条件,如果您的插件被渲染,该条件将跳过 header 和全局环绕。

<f:if condition="{data.CType} == 'list' && {data.list_type} == 'myPlugin'">
  <f:then>
    <f:comment> only plugin output </fcomment>

  </f:then>
  <f:else>
    <f:comment> original output with headers and wrap </fcomment>

  </f:else>
</f:if>