首页 > 解决方案 > 如何在流体模板中使用常量?

问题描述

我正在使用 Typo3 版本 10+ 我创建了一个“站点包扩展”来制作一些不错的模板和样式(页眉/页脚/等)

我正在使用这样的常量(constants.typoscript):

#cat=My website variables//a; type=string; label=Some id value
config.some_id = 123

BE 用户可以在 BE 中编辑常数。要在流体模板中使用常量,我使用这个打字稿代码(setup.typoscript)

page = PAGE
page {
   typeNum = 0
  
   10 = FLUIDTEMPLATE
   10 {
       variables {
            some_id = TEXT
            some_id.value = {$config.some_id}
       }
   }
   ...
}

在流体(footer.html)中,我使用这个变量:

<f:link.page pageUid="{some_id}">Some link</f:link.page>

到目前为止,一切都很好。

现在我正在创建一个新的扩展来输出一些简单的事件“Events ext”(列表/详细信息)

现在问题:是否可以在事件扩展(List.html)中使用这个常量(来自站点包ext的some_id)作为全局变量?

出于某种原因,我在“Event ext”的流体模板中看不到任何常量。(空值)

对于这两个扩展,我使用了下面的代码并将其配置包含在 Typoscript 设置中

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
   $extensionKey,
   'Configuration/TypoScript',
   'My ext'
);

标签: templatesconstantstypo3typoscriptfluid

解决方案


通过 page.10.variable 定义的常量仅适用于页面模板,不适用于您的扩展模板。

但是您可以使用一些 TypoScript 在您的扩展程序中轻松访问此变量。

添加此 TS - 在您的 my_ext/TypoScript/setup.typoscript 或通过模板设置字段中的 BE:

plugin.tx_you_ext.settings {
    some_id = {$config.some_id}
}

然后,您可以使用以下命令访问流体模板中的数据:

{settings.some_id}

推荐阅读