用于 TypoScript 常量的语法和用于 "Extension Configuration" 的语法之间有什么区别吗?



对于"TypoScript常量"one_answers"扩展配置"(如ext_conf_template.txt中所定义),使用通用语法。它们记录在这里:

  • 常量(在"TypoScript模板引用"中)
  • 扩展配置(在"TYPO3解释"中)

一个例子:

# cat=basic; type=string; label=Some title
title = 

第1行描述变量的数据类型、类别等。

或者,我们可能有这样的东西:

tx_plugins.my_plugin {
# cat=basic; type=string; label=Some title
title = 
}

除了这个相当简单的例子,你还可以用它做更多的事情。

TypoScript常量和Extension Configuration的存储位置和使用方式完全不同,但我想知道我们是否只看语法和您可以使用的功能——是一样的吗?

例如

  • 可用的数据类型(布尔值、整数等)
  • 不能使用多行值
  • 可以使用环境变量
  • 如何访问文件
  • 如何进行本地化

我问的原因是:为了简化文档,我还在自己的扩展中使用它。

简短回答

TS模板常量和扩展配置使用的语法相同,但当前可用类型存在一些细微差异。

深入分析

扩展配置

对于TYPO3 CMS版本6,扩展管理器和配置是基于Extbase并使用FormEngine从头开始重写的。可用类型有:

  • int:整数值
  • int+:仅限正整数值
  • integerint的别名
  • color:颜色选择器
  • wrap:换行,行最后由保存值的|分隔
  • offset:偏移字段
  • options:选择
  • boolean:复选框
  • user:用户函数用于渲染
  • small:小文本字段
  • string:文本字段
  • inputstring的别名,仅用于向后兼容性,许多扩展都依赖于此
  • defaultstring的别名,仅用于向后兼容性,许多扩展都依赖于此

此处提供源代码:https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/core/Classes/ViewHelpers/Form/TypoScriptConstantsViewHelper.php#L36

TypoScript模板常量编辑器

另一方面,TypoScript模板常量编辑器从未被重写以使用FormEngine,并且有自己的实现。这里还提供以下类型:

  • comment:用于切换常量的复选框
  • files:文件选择

此处提供源代码:https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/core/Classes/TypoScript/ExtendedTemplateService.php#L993

其他问题

  • 不能使用多行值

对于TS常量编辑器来说,这几乎是真的,但有wrap类型可以实现类似多行的功能。对于扩展配置,有smallstring两种类型。

对于我目前不知道的其他问题,必须先深入研究一下:

  • 您可以使用环境变量
  • 如何访问文件
  • 如何进行本地化

由于Typoscript是一种配置,它可以以多种方式使用。TYPO3使用不同。所以你必须有所不同。

常量只能用于前端渲染。在那里,它们是在不同地方使用给定值的快捷方式
或者在不了解详细设置的情况下轻松配置某些东西(扩展)。因此,您有一个常量编辑器,可以在其中定义得到特殊信息/注释的常量。它就像TCA一样,有助于构建表单,并自动为数据提供一些验证器。由于TS常量只是可以在设置中使用的字符串,因此您没有实际的数据类型。这只是一种在常量编辑器中进行一些验证的配置
除了常量定义中的一些常量的递归替换(高达10级)之外,您没有其他计算值的选项。

在Typoscript设置中,(同时)stdWrap几乎无处不在。

但特别是扩展并不能在任何地方都对其进行评估。因此,在某些地方,您在setup中有一个扩展配置,您只能在其中插入固定字符串。(如常数)


另一方面:
如何配置扩展(使用TYPO3工具)?

除了主要用于前端渲染(*)的Typoscript设置(您可以在其中使用常量)之外,您还可以使用扩展管理器配置扩展
此数据以串行方式存储在typo3conf/LocalConfiguration.php中。由于TYPO3 9未被序列化
它可以在前端和后端访问,并在全局范围内工作,而前端打字脚本或TSconfig取决于页面(和用户)。


这就引出了配置的第三部分:TSconfig

我们有页面TSconfig和用户TSconfig。在pagesbe_usersbe_groups中,可以使用打字脚本语法定义配置。这可以通过扩展的"全局"PHP代码来增强,该代码在ext_localconf.phpext_tables.php(或/Configuration/TCA//Configuration/TCA/Overrides/中的后续代码)中注入进一步的配置



(*)一些扩展评估后端模块或插件选项配置的前端打字脚本

最新更新