我想在默认情况下在常量中设置Sitename,所以我可以在Fluidtemplate中使用此settings.variable。
我在stackoverflow上找到了another post:
但是如果我在我的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 {
..
}
}
答案 0 :(得分:2)
您必须将常量分配给内容对象的数据属性(请参阅https://docs.typo3.org/typo3cms/TyposcriptReference/8.7/ContentObjects/Index.html和https://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
的内容是:
lib.sitename = TEXT
lib.sitename.data = GLOBAL:TYPO3_CONF_VARS|SYS|sitename
OR
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
}
这样就不需要额外的数据库查询,它可以在多域,多根节点页面上工作。