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

时间:2018-07-05 17:01:24

标签: seo typo3 extbase typo3-8.x typo3-8.7.x

我有一个自定义扩展名,并且在记录的详细信息页面上我想搜索配置文件站点。我也在使用tx_metaseo。

我已经通过如下所示的show操作更改了'title'标签:

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

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

}

但是由于我已经安装了tx_metaseo ...我也得到了generall元标记。因此,在我的扩展程序的详细信息页面上,我想覆盖它们:

<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="">

...此外,我想添加/设置:

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

...并且我想考虑一个语言因素(默认/德语/英语)...所以我想添加(对于德语):

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

我该怎么做?

我认为我需要使用挂钩/信号吗? 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]   

1 个答案:

答案 0 :(得分:2)

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

一种常见的方式是打字错误。
您通常可以通过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]

使用生成meta标签的扩展程序,如果没有选项,则可以通过印刷脚本来控制它,这会使整个过程变得非常复杂。

Outlook:使用TYPO3 9将更容易处理元标记。


对ext:metaseo的最简单操作类似于手册中提到的stdWraps
或使用挂钩操作扩展程序生成的所有值的整个数组。

扩展手册中的

并没有真正提示如何增强扩展功能以获取更多记录。因为您不仅需要为详细视图添加元标记,还需要做更多的事情:您需要增强生成的站点地图。扩展作者也许需要一些冲动来增强有关如何为自己的记录添加元信息的信息的手册。