如何在常量中使用Sitename作为TYPO3中的默认值?

时间:2018-03-28 18:38:15

标签: typo3 constants typoscript

我想在默认情况下在常量中设置Sitename,所以我可以在Fluidtemplate中使用此settings.variable。

我在stackoverflow上找到了another post

  • DB:sys_template | 1 |标题
  • GLOBAL:TYPO3_CONF_VARS | SYS |网站名称

但是如果我在我的constants.ts中使用这个:

# cat=plugin.tx_rmnavigation/01_NaviSettings/a; type=string; label=testing sitetitle
testsitetitle = DB:sys_template|1|title

OR

# cat=plugin.tx_rmnavigation/01_NaviSettings/a; type=string; label=testing sitetitle
testsitetitle = GLOBAL:TYPO3_CONF_VARS|SYS|sitename

在我的setup.ts中:

testsitetitle = {$plugin.tx_rmnavigation.settings.testsitetitle}

我只获得的文字不是“变量”的值,请参阅此图片Constant Editor ...

如何在常量中使用Sitename作为默认值?

修改

我忘了说,也许这对于这个问题很重要,我在这两个文件中尝试这个:

plugin.tx_rmnavigation {
    settings {
        ..
    }
}

3 个答案:

答案 0 :(得分:2)

您必须将常量分配给内容对象的数据属性(请参阅https://docs.typo3.org/typo3cms/TyposcriptReference/8.7/ContentObjects/Index.htmlhttps://docs.typo3.org/typo3cms/TyposcriptReference/8.7/Functions/Stdwrap/Index.html#data)以使其得到解决:

testsitetitle = TEXT
testsitetitle.data = {$plugin.tx_rmnavigation.settings.testsitetitle}

我更喜欢你的第二个变量用于常量定义,因为它使用当前模板记录中的值:

# cat=plugin.tx_rmnavigation/01_NaviSettings/a; type=string; label=testing sitetitle
testsitetitle = GLOBAL:TYPO3_CONF_VARS|SYS|sitename

但是如果你使用冒号而不是管道,第一个也应该有效:

testsitetitle = DB:sys_template:1:title

答案 1 :(得分:1)

感谢您的建议。我找到了你的信息的解决方案。

老实说,我认为这在Constants中不起作用,因为这两种方法都是只读的。

所以我为我的问题找到了一个有效的解决方案:我只需要在我的模板中读取该变量,因此我创建了一个新的Typoscript文件libs.ts并将其包括在内:

# Include Libraries
<INCLUDE_TYPOSCRIPT: source="FILE: EXT:rm_navigation/Resources/Private/TypoScript/libs.ts">

/Configuration/TypoScript/setup.ts文件中。

libs.ts的内容是:

TSFE-语法

lib.sitename = TEXT
lib.sitename.data = GLOBAL:TYPO3_CONF_VARS|SYS|sitename

OR

DB-语法

lib.sitename = TEXT
lib.sitename.data = DB:sys_template:1:sitetitle

两者都有效。我读到您使用冒号用于数据库用法管道语法用于全局变量

要使用Fluid,请使用此代码:

<f:cObject typoscriptObjectPath="lib.sitename" />

我希望它能帮助那些也有这个问题的人。

答案 2 :(得分:1)

如果您有一个多域页面,则对DB:sys_template:1:sitetitle的查询可能不起作用,因为1是UID,而不是模板根节点的PID。但TSFE要救援!

在页面调用的上下文中,TSFE已经加载了后端模板中的sitititle。

如果您要输出og:site_name,则可以使用以下命令访问该值:

og:site_name = TEXT
og:site_name {
    data = TSFE:tmpl|sitetitle
    attribute = property
}

这样就不需要额外的数据库查询,它可以在多域,多根节点页面上工作。