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

Is there any difference between the syntax used for TypoScript constants and the syntax for "Extension Configuration"?

对于 "TypoScript constants" 和 "Extension Configuration"(如 ext_conf_template.txt 中定义)使用通用语法。它们记录在此处:

一个例子:

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

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

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

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

}

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

TypoScript 常量和扩展配置的存储位置以及它们的使用方式完全不同,但我想知道我们是否只看语法和您可以使用的功能 - 是否相同?

例如


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

由于 Typoscript 是一种配置,因此可以通过多种方式使用它。而 TYPO3 使用它的方式不同。所以你要区分。

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

在 Typoscript 设置中,(同时)几乎所有地方都有 stdWrap 功能。

但特别是扩展不会在所有地方对其进行评估。所以在某些地方,您在设置中有一个扩展配置,您只能在其中插入固定字符串。 (就像常量一样)


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

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


这将我们带到配置的第三部分:TSconfig

我们有 page-TSconfig 和 user-TSconfig。在 pagesbe_usersbe_groups 中,您可以使用错别字语法定义配置。这可以通过 'global' PHP 扩展代码来增强,这些代码在 ext_localconf.phpext_tables.php 中注入进一步的配置(或 /Configuration/TCA//Configuration/TCA/Overrides/ 中的后继者)



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

简答

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

深入分析

扩展配置

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

  • int:整数值
  • int+: 仅正整数值
  • integerint
  • 的别名
  • color:颜色选择器
  • wrap:换行,最后用|分隔行,保存值
  • offset: 偏移字段
  • options: select
  • 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: 文件 selection

来源可在此处获得:https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/core/Classes/TypoScript/ExtendedTemplateService.php#L993

其他问题

  • 您不能使用多行值

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

对于其他我目前没有意识到的问题,必须先进行更深入的调查:

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