TYPO3 - 在自定义扩展的详细视图上覆盖和添加元标记(来自 tx_metaseo)

TYPO3 - Overriding & adding meta tags (from tx_metaseo) on detail view of custom extension

我有一个自定义扩展,我想在记录的详细信息页面上对个人资料网站进行 seo 拉皮条。我也在使用 tx_metaseo.

我已经通过这样的显示操作更改了 'title' 标签:

/**
 * action show
 *
 * @param Application $record
 * @return void
 */
public function showAction(Application $record=null) {

        // For the search
        $GLOBALS['TSFE']->indexedDocTitle = $record->getName();     
    }   

}

但是因为我安装了 tx_metaseo... 我也得到了通用元标记。所以在我的扩展的详细信息页面上,我想覆盖它们:

<meta name="DCTERMS.title" content="">
<meta name="description" content="">
<meta name="DCTERMS.description" content="">
<meta name="keywords" content="">
<meta name="DCTERMS.subject" content="">

<meta property="og:title" content="">
<meta property="og:type" content="">
<meta property="og:email" content="">

...另外我想 add/set:

<meta property="og:description" content="">

...我想考虑一下(Default/German/English)...所以我想添加(对于德语):

<meta http-equiv="Content-Language" content="de" />
<meta name="Language" CONTENT="Deutsch"/>

我该怎么做?

我想我需要和 Hooks/Signals 一起工作? https://docs.typo3.org/typo3cms/extensions/metaseo/DeveloperManual/Index.html#signals 但是如何呢?

这里有一个类似的讨论:https://github.com/webdevops/TYPO3-metaseo/issues/477

编辑:我尝试这样做是为了防止 tx_metaseo

创建的元标记
#[globalVar = TSFE:id = 71, GP:tx_metaseo|var = 0]
[globalVar = TSFE:id = 71, GP:tx_metaseo]
    #page.metaseo.meta.og:title >
    #page.metaseo.meta.og:description >
    page.meta.og:title = 
    page.meta.og:description = 
[global]

... 或:

[globalVar = TSFE:id = 71]
    plugins.tx_metaseo >
[global]   

由于您无法覆盖现有元值,因此您需要防止创建默认元标记。

一种常见的方式是打字错误条件。
您通常可以通过 URL 参数来识别显示记录详细视图的页面,该参数获取要显示的记录的 uid。

关于新闻记录,您可以在网站扩展模板中这样做:

[globalVar = GP:tx_news_pi1|news > 0]
    // set news-specific meta tags
[else]
    // set default meta tags (based just on the pages record)
[global]

或其他方式:

// somewhere (site_extension or other specific template):
// set default meta tags (based just on the pages record)


// in the static template of your extension:
[globalVar = GP:tx_news_pi1|news > 0]
    // clear default meta tags (if that is possible) 
    page.meta.og:title >
    page.meta.og:site_name >
    page.meta.og:description >
    page.meta.og:image >

    // or deactivate the extension for generating the default meta tags
    // maybe something like
    plugins.tx_metatagsgenarator >

    // finaly: set news-specific meta tags
     :
[global]

第一个示例可以通过添加更多条件来针对多个记录进行增强(假设这些记录的详细视图位于不同的页面上):

[globalVar = GP:tx_news_pi1|news > 0]
    // set news-specific meta tags
[globalVar = GP:tx_myext|myrec_uid > 0]
    // set myext-specific meta tags
[else]
    // set default meta tags (based just on the pages record)
[global]

使用生成没有选项的元标记的扩展程序来控制它会使整个过程非常复杂。

Outlook:使用 TYPO3 9 可以更轻松地处理元标记。


ext:metaseo 的最简单操作看起来像手册中提到的 stdWraps
或者使用挂钩来操纵扩展生成的所有值的整个数组。

在扩展手册中,没有真正的提示如何增强附加记录的扩展功能。因为您需要做的不仅仅是详细视图的元标记:您需要增强生成的站点地图。也许扩展作者需要一些冲动来使用有关如何为自己的记录添加元信息的信息来增强手册。