在AnQiCMS中构建网站模板时,我们常常需要显示一些网站级的通用信息,例如网站的名称、Logo图像以及法律要求的备案号等。这些信息通常在后台全局设置中统一管理,以确保全站内容的一致性和便于维护。AnQiCMS强大的模板标签体系,特别是system标签,让在模板中获取并展示这些全局设置变得非常直观和高效。
理解全局设置与 system 标签
AnQiCMS将网站的一些核心配置归类为“全局设置”,这些设置一旦修改,会立即影响到网站的各个页面。为了在模板中灵活地调用这些信息,系统提供了一个专门的system标签。
system标签的基本用法是:{% system 变量名称 with name="字段名称" %}。
这里的变量名称是一个可选的参数,你可以用它来临时存储获取到的设置值,以便在模板中重复使用或进行更复杂的处理。而name参数则指定了你想要获取的具体全局设置项的字段名称,例如SiteName用于网站名称,SiteLogo用于网站Logo等。
获取并显示网站名称 (SiteName)
网站名称是网站的门面,通常会出现在页面的<title>标签中、页眉或页脚等关键位置。在AnQiCMS后台的“全局设置”中配置好“网站名称”后,你可以在模板中使用以下方式获取:
<title>{% tdk with name="Title" siteName=true %}</title>
{# 或者,如果你只想获取网站名称本身,不带页面标题和分隔符 #}
<h1>{% system with name="SiteName" %}</h1>
上述示例中,{% tdk with name="Title" siteName=true %}是获取页面标题的更佳实践,它会自动拼接当前页面的标题和网站名称,并提供分隔符选项。如果你的网站名称包含在HTML内容中(例如带有强调标签),你可能还需要考虑使用|safe过滤器来避免HTML实体转义。
获取并显示网站Logo (SiteLogo)
网站Logo是品牌的视觉标识,几乎所有网站都会在页眉部分展示。假设你已在后台“全局设置”中上传了网站Logo图片,那么在模板中显示它会很简单:
<div class="header-logo">
<a href="{% system with name="BaseUrl" %}">
<img src="{% system with name="SiteLogo" %}" alt="{% system with name="SiteName" %}" />
</a>
</div>
在这个例子中,我们不仅获取了Logo的图片路径(SiteLogo),还将其包裹在一个链接中,指向网站首页(BaseUrl)。同时,为了SEO友好性和可访问性,我们使用SiteName作为alt属性的值。
获取并显示备案号 (SiteIcp)
对于在中国大陆运营的网站,备案号是法律要求必须展示的信息,通常放置在网站页脚。在AnQiCMS后台“全局设置”中填写“备案号码”后,你可以这样在模板中显示它:
<p class="footer-icp">
<a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">
{% system with name="SiteIcp" %}
</a>
</p>
这里,备案号被放置在一个链接中,指向工信部备案查询网站,并加上了rel="nofollow"和target="_blank"属性,这都是常见的Web开发实践。
获取并显示版权信息 (SiteCopyright)
版权信息也是网站页脚的常见元素,它保障了内容的合法权益。在后台“全局设置”中填写“版权内容”后,可以在模板中这样显示:
<div class="footer-copyright">
{% system siteCopyright with name="SiteCopyright" %}
{{ siteCopyright|safe }}
</div>
值得注意的是,如果你在后台填写的版权信息可能包含HTML标签(例如©符号、链接等),那么在使用{% system siteCopyright ... %}{{ siteCopyright }}时,需要额外加上|safe过滤器。这是因为AnQiCMS的模板引擎默认会对输出的变量进行HTML实体转义,以防止XSS攻击。|safe过滤器会告诉模板引擎,这段内容是安全的,无需转义,从而确保HTML内容能正确渲染。
获取其他常用全局设置与自定义参数
除了上述几个核心设置外,system标签还能获取更多预设的全局信息,例如:
- 网站首页地址 (BaseUrl):
{% system with name="BaseUrl" %},通常用于构建绝对路径链接。 - 模板静态文件地址 (TemplateUrl):
{% system with name="TemplateUrl" %},方便引用模板目录下的CSS、JS等静态资源。 - 站点语言 (Language):
{% system with name="Language" %},可以用于设置HTML的lang属性,例如<html lang="{% system with name='Language' %}">。
AnQiCMS的强大之处还在于它允许你在后台的“全局设置”中添加自定义参数。如果你的网站需要展示一些没有预设字段的全局信息(例如“客服电话”、“公司邮箱”等),你可以在后台添加一个自定义参数,比如参数名为CustomerPhone。然后在模板中,你就可以通过{% system with name="CustomerPhone" %}来获取它的值。这为模板的灵活性和可扩展性提供了极大的便利。
总结
通过灵活运用system标签,AnQiCMS让网站全局设置的调用变得异常简单和高效。它不仅简化了模板开发过程,更重要的是,确保了网站信息的一致性,便于未来的内容更新和多站点管理,从而构建出更加健壮和易于维护的网站。
常见问题 (FAQ)
问:为什么我的网站Logo或备案号没有显示,或者显示不正确? 答:首先,请确保你已经在AnQiCMS后台的“全局设置”中正确填写了“网站Logo”和“备案号码”等信息。对于Logo,还需要检查你上传的图片路径是否有效。如果图片路径正确但仍然不显示,可能是浏览器缓存问题,尝试清空浏览器缓存后刷新页面。另外,如果你是多站点用户,请确认模板中是否需要通过
siteId参数指定特定站点的设置。问:除了预设的网站名称、Logo等,我还能获取其他自定义的全局信息吗? 答:当然可以。AnQiCMS允许你在后台的“全局设置”页面添加自定义参数。例如,你可以添加一个名为“客服电话”的参数,其字段名称(供模板调用)为
CustomerServicePhone。在模板中,你就可以使用{% system with name="CustomerServicePhone" %}来获取并显示这个自定义信息了。这极大地增加了模板的灵活性。问:如果我管理多个站点,如何在模板中获取不同站点的全局设置? 答:AnQiCMS的
system标签支持siteId参数。如果你想获取特定站点(非当前站点)的全局设置,可以在system标签中明确指定siteId。例如,{% system with name="SiteName" siteId="2" %}会获取ID为2的站点的网站名称。这对于构建多站点管理下的共享模块或交叉引用信息非常有用。