TypoScript 在 Fluid 模板中的最佳用法是什么?

Ber*_* πφ 5 typo3 fluid typoscript

如果我想在 Fluid 模板中使用 TypoScript 之类的菜单生成,我有两种可能的方法:

  • 使用 TypoScript 填充模板的变量。这样做:

    page.10 = FLUIDTEMPLATE
    page.10 {
        templateName = index.html
        // ... define pathes ...
        variables {
            contentMain < styles.content.get
            mainMenu < temp.mainMenu
            :
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    在模板中只使用变量:

    <div class="header">
        <div class="logo">{logo->f:format.raw()}</div>
        <div class="main-menu">{mainMenu->f:format.raw()}</div>
    </div> 
    
    Run Code Online (Sandbox Code Playgroud)
  • 另一种方式是使用 f:cObject ViewHelper 来调用 TypoScript 的一部分。
    打字稿:

    page.10 = FLUIDTEMPLATE
    page.10 {
        templateName = index.html
        // ... define pathes ...
        variables {
            contentMain < styles.content.get
            :
        }
    }
    lib.mainMenu < temp.mainMenu
    
    Run Code Online (Sandbox Code Playgroud)

    而 Fluid 模板如下所示:

    <div class="header">
        <div class="logo">{logo->f:format.raw()}</div>
        <div class="main-menu">
            <f:cObject typoscriptObjectPath="lib.mainMenu />
        </div>
    </div> 
    
    Run Code Online (Sandbox Code Playgroud)

所以。我的问题:每种方式的优缺点是什么?
TYPO3的不同版本有区别吗?

Geo*_*ger 5

我不同意 pgampe 的意见,因为这两种方法存在很大差异!

如果您使用变量,则始终会呈现这些变量,即使这些内容元素未在前端中使用。这可能会产生巨大的副作用,而且很难解决。一些例子

  • 您在某列的页面上有一些重型 USER_INT 插件,但该插件不再使用。即使它们从未显示过,它们仍然会被调用
  • 您正在使用 EXT:news 和功能ExcludeDisplayedNews。如果有一个新闻插件通过变量以某种方式渲染(但从未输出),则渲染和显示的新闻插件将丢失新闻记录