我试图使用page.meta.og:title
TYPO3 7.5
对象覆盖TypoScript
中的RECORDS
。
不幸的是,以下TypoScript
代码段无效:
[globalVar = GP:tx_myext_pi1|article > 0]
temp.newsTitle = RECORDS
temp.newsTitle {
dontCheckPid = 1
tables = tx_myext_domain_model_article
source.data = GP:tx_myext_pi1|article
source.intval = 1
conf.tx_myext_domain_model_article = TEXT
conf.tx_myext_domain_model_article {
stdWrap.field = title
stdWrap.wrap = |
}
}
# Overrides the template pageTitle
page.10.variables.pageTitle >
page.10.variables.pageTitle < temp.newsTitle
# Overrides the meta og:title
page.meta.og:title >
page.meta.og:title < temp.newsTitle
[global]
我明白了:
<meta name="og:title" content="RECORDS">
虽然页面标题的覆盖对我有效。
有没有办法用TypoScript实现这个目标?
答案 0 :(得分:2)
RECORDS仅适用于cObject。 https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Records/Index.html
[globalVar = GP:tx_myext_pi1|article > 0]
page.meta{
og:title {
attribute = property
stdWrap.cObject = RECORDS
stdWrap.cObject {
source = {GP:tx_myext_pi1|article}
source.insertData = 1
tables = tx_myext_domain_model_article
conf.tx_myext_domain_model_article= TEXT
conf.tx_myext_domain_model_article.field = title
}
}
[global]
答案 1 :(得分:1)
虽然它是你的分机,但是什么阻止你直接在行动中添加它而不是用一些奇怪的TS操纵? ;)
public function showAction($article) {
$ogTitle = trim(htmlentities($article->getTitle()));
$GLOBALS['TSFE']->getPageRenderer()->addMetaTag('<meta name="og:title" content="' . $ogTitle . '">');
// ... rest of action
}
另请查看Georg Ringer的News
扩展程序,了解他如何使用metaTagViewHeplper
(实际上他在VH中做同样的事情) - 您可以使用它来收集其他og
标签在og:image
和其他人的观点上。
修改:
(有关防止重复条目的更多信息)
请注意,重复的meta
组合这不是错误,它是根据OGP Arrays spec的功能;)实际上,您不能声明两个相同的元标记TypoScript是一个错误,原因? TypoScript不是一种编程语言,它只是配置表(数组要严格)。正如我们在PHP中所知的关联数组之后的关键覆盖更早。当我们处于og:*
metas的主题时,我们需要记住,有时它们会在每页重复,并且完全有效,即:og:image
。
作为程序员,您在行动中拥有的权力远远超过TS,即使您使用的某些即用型分机填充了来自og:title
的{{1}}记录,没有什么可以防止你丢弃它... TS中的简单技巧,在你的TS添加一个条件:
pages
然后确保您在[globalVar = GP:tx_myext_pi1|article > 0]
page.meta.og:title >
[end]
中添加它,如开头所示。
最后这种方式你不需要从TS站点为每个具有单一视图的模型进行昂贵的查找(相信我,我知道这意味着什么)
顺便说一下,我同意应该有一个可靠的API,但是我为这些东西的一个项目写了一些分机,这几个小时甚至几天都没有,如果我找到它,我会发布它到TER。