我已根据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() }}
无效。
答案 0 :(得分:0)
seo.title
和seo.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
。