如何从TypoScript RECORDS中设置TYPO3 7元标记?

时间:2015-10-08 14:01:10

标签: typo3 typoscript typo3-7.x

我试图使用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实现这个目标?

2 个答案:

答案 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。