如何轻松覆盖 Symfony 中的 SEO Sulu CMS 页面扩展?
How can I easily override SEO Sulu CMS page extension in Symfony?
我想用我自己的实现覆盖 SeoStructureExtension,它将支持 OpenGraph (OG) 标签。
覆盖它并添加额外输入的最简单方法是什么?
恐怕要覆盖SeoStructureExtension
文件不是很容易实现...它保存的字段是硬编码的。因此,您要做的第一件事就是覆盖引用此 class 的 sulu_page.extension.seo
服务。我想说实现这一目标的最佳选择是 decorate this service.
您必须扩展的另一部分是 XML file describing the page_seo
form. Luckily this part is a little bit easier. Your Sulu installation should already come with a config/forms
folder, where you can put a file similar to the original page_seo
form。给它相同的键 (page_seo
) 并只添加您要添加的新字段(属性的名称必须与您在装饰服务中实现的相匹配)。如果你例如想要添加一个新的文本字段,这个文件看起来像这样:
<?xml version="1.0" ?>
<form xmlns="http://schemas.sulu.io/template/template"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.sulu.io/template/template http://schemas.sulu.io/template/form-1.0.xsd"
>
<key>page_seo</key>
<properties>
<property name="ext/seo/ogTitle" type="text_line">
<meta>
<title lang="en">OG Title</title>
</meta>
</property>
</properties>
</form>
注意 ogTitle
之前的 ext/seo/
前缀,这是将信息传递给 SeoStructureExtension
所需要的。
我也认为将这些字段添加到 Sulu 的核心可能是有意义的。如果你create an issue,我会很高兴,解释你到底需要什么字段等。然后我们可以讨论是否在核心中实现它,这样你就不必在未来的版本中手动添加它。
我想用我自己的实现覆盖 SeoStructureExtension,它将支持 OpenGraph (OG) 标签。
覆盖它并添加额外输入的最简单方法是什么?
恐怕要覆盖SeoStructureExtension
文件不是很容易实现...它保存的字段是硬编码的。因此,您要做的第一件事就是覆盖引用此 class 的 sulu_page.extension.seo
服务。我想说实现这一目标的最佳选择是 decorate this service.
您必须扩展的另一部分是 XML file describing the page_seo
form. Luckily this part is a little bit easier. Your Sulu installation should already come with a config/forms
folder, where you can put a file similar to the original page_seo
form。给它相同的键 (page_seo
) 并只添加您要添加的新字段(属性的名称必须与您在装饰服务中实现的相匹配)。如果你例如想要添加一个新的文本字段,这个文件看起来像这样:
<?xml version="1.0" ?>
<form xmlns="http://schemas.sulu.io/template/template"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.sulu.io/template/template http://schemas.sulu.io/template/form-1.0.xsd"
>
<key>page_seo</key>
<properties>
<property name="ext/seo/ogTitle" type="text_line">
<meta>
<title lang="en">OG Title</title>
</meta>
</property>
</properties>
</form>
注意 ogTitle
之前的 ext/seo/
前缀,这是将信息传递给 SeoStructureExtension
所需要的。
我也认为将这些字段添加到 Sulu 的核心可能是有意义的。如果你create an issue,我会很高兴,解释你到底需要什么字段等。然后我们可以讨论是否在核心中实现它,这样你就不必在未来的版本中手动添加它。