SeoBundle - 未设置标题和说明

时间:2017-07-15 10:04:36

标签: symfony seo sonata symfony-cmf

我已根据docs

中的说明配置了SeoBundle
sonata_seo:
    page:
        title: Default title
        metas:
            name:
                description: Defualt description
                keywords: key1, key2

cmf_seo:
    title: seo.title
    description: seo.description
    content_listener:
        enabled: false

放在base.html.twig

<head>
    {# meta #}
    <meta name=viewport content="width=device-width, initial-scale=1">
    <meta name="format-detection" content="telephone=no"/>

    {{ sonata_seo_title() }}

    {{ sonata_seo_metadatas() }}

    ...
</head>

现在,当我刷新页面时,我可以看到设置sonata_seo块标题和描述而不是cmf_seo。在文档中有一个警告:

  

标题和说明模板仅在标题不是时使用   在内容对象上设置或当内容对象不可用时,   否则它将使用SonataSeoBundle的默认设置。你应该   确保默认值也遵循模板。

如果只有文档会澄清什么是&#34;内容对象&#34;会很棒...无论如何,我尝试从sonata_seo块删除标题和描述:

sonata_seo:
    page: ~

cmf_seo:
    title: seo.title
    description: seo.description
    content_listener:
        enabled: false

现在我的头衔变成了#34; Sonata Project&#34;这是默认的SonataSeoBundle标题。

如何显示cmf_seo标题? {{ cmf_seo_title() }}无效。

1 个答案:

答案 0 :(得分:0)

seo.titleseo.description的价值是什么,您希望翻译的是什么?你可以为例外服务更长的堆栈跟踪吗?

通常CmfSeoBundle期望一些占位符(%%content_description%%%%content_title%%加倍,以便在结尾处进行翻译),以使用动态数据丰富标题/描述。动态数据可以作为SeoContent存在于您持久存在的文档(内容对象)上,也可以作为从文档中获取数据的提取器(内容对象)。在第一种情况下,你必须在第二种情况下实现SeoAwareInterface,你可以在[doucmentation [(https://symfony.com/doc/current/cmf/bundles/seo/extractors.html)中找到几个提取器。

如果您只想设置静态标题,则应该使用SonataSeoBundle。我们只是使用当前内容中的动态数据来丰富cmf_seo.title|description中定义的模板。对于没有内容文档的页面(即静态页面),我们确实需要sonata_seo.title