我已经使用 sulu(无头 cms)创建了以下社交媒体片段,现在我想在我的 twig.html 文件中使用它。唯一的问题是我不明白我使用哪些变量来让它运行。我尝试了各种不同的方法,但我只是不明白我需要使用哪些变量才能正确链接社交媒体链接。预先感谢您的帮助。
我使用 sulu 作为无头 cms,并使用 symfony/twig 来渲染它。
这是我的 Sulu 代码:
<?xml version="1.0" ?>
<template 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/template-1.0.xsd">
<key>socialmedia</key>
<meta>
<title lang="en">Social Media</title>
<title lang="de">Social Media</title>
</meta>
<properties>
<property name="title" type="text_line" mandatory="true">
<meta>
<title lang="en">Title</title>
<title lang="de">Titel</title>
</meta>
<tag name="sulu.node.name"/>
</property>
<property name="facebookImage" colspan="3" type="single_media_selection">
<meta>
<title lang="en">Facebook Icon</title>
<title lang="de">Facebook Icon</title>
</meta>
</property>
<property name="facebookLink" colspan="9" type="url">
<meta>
<title lang="en">Facebook Link</title>
<title lang="de">Facebook Link</title>
</meta>
<params>
<param name="schemes" type="collection">
<param name="http://"/>
<param name="https://"/>
</param>
</params>
</property>
<property name="instagramImage" colspan="3" type="single_media_selection">
<meta>
<title lang="en">Instagram Icon</title>
<title lang="de">Instagram Icon</title>
</meta>
</property>
<property name="instagramLink" colspan="9" type="url">
<meta>
<title lang="en">Instagram Link</title>
<title lang="de">Instagram Link</title>
</meta>
<params>
<param name="schemes" type="collection">
<param name="http://"/>
<param name="https://"/>
</param>
</params>
</property>
<property name="googleImage" colspan="3" type="single_media_selection">
<meta>
<title lang="en">Google Icon</title>
<title lang="de">Google Icon</title>
</meta>
</property>
<property name="googleLink" colspan="9" type="url">
<meta>
<title lang="en">Google Link</title>
<title lang="de">Google Link</title>
</meta>
<params>
<param name="schemes" type="collection">
<param name="http://"/>
<param name="https://"/>
</param>
</params>
</property>
</properties>
因此,您可以在页面中创建
snippet_selection
或 single_snippet_selection
将代码片段嵌入到您的页面中。
如果您想创建一个“全局”片段。您可以创建一个片段区域/默认片段。
这意味着您向代码片段添加一个区域:
<areas>
<area key="settings">
<meta>
<title lang="en">Settings</title>
</meta>
</area>
</areas>
然后进入 Sulu 管理并创建一个新的代码片段。之后,您转到您的网站空间并在“设置”点下的“默认片段”下选择新片段。
sulu_snippet_load_by_area.html
twig 函数加载该片段:
{% set snippet = sulu_snippet_load_by_area('settings') %}
{% if snippet %} {# if null content manager did not choice a default snippet in "Default Snippets" Tabs on Webspace #}
{{ dump(snippet) }} {# dump all properties #}
{% endif %}
PS:尽量不要为每件小事创建默认/全局片段。大多数情况下,“内容管理器”更适合创建 1 个“设置”片段。其中有一个“社交链接”部分,而不是有不同的默认片段。
我在渲染片段时也遇到类似的问题。但是,我在代码片段模板中定义了一个区域,在后端添加了一个代码片段并将其指定为默认代码片段。但是当我使用 'snippet_load_by_area() twig 函数时,symfony 抛出一个错误:ParameterNotFoundException。我调试了一点代码库,我注意到,这发生在文件 symfony/dependency-injection/ParameterBag/ParameterBag.php 函数“get”的第 66 行中。它是从函数 checkTemplate 中的文件 sulu/sulu/src/Sulu/Bundle/SnippetBundle/Snippet/DefaultSnippetManager.php 调用的,该函数是从函数 load 中的同一文件调用的。然而snippetNode 已加载。这对我来说很奇怪。似乎没有以某种方式注册(我不知道这是如何发生的)。我的区域是在模板内定义的,如下所示:
<areas>
<area key="footer_social_media">
<meta>
<title lang="en">Footer Social Media Links</title>
<title lang="de">Links zu sozialen Medien in der Fußzeile</title>
</meta>
</area>
</areas>
我正在尝试渲染这样的片段:
{% set social_icons = sulu_snippet_load_by_area('footer_social_media') %}
任何可以在哪里查找错误并进一步调试的帮助对我来说都是很大的帮助。