1

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

我已经通过显示操作更改了“标题”标签,如下所示:

/**
 * 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"/>

我怎样才能做到这一点?

我假设我需要使用 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]   
4

1 回答 1

3

因为您不能覆盖现有的元值,所以您需要防止创建默认元标记。

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

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

[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 。
或者使用钩子来操作扩展生成的所有值的整个数组。

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

于 2018-07-06T05:55:53.043 回答