在安企CMS中管理和展示网站内容,灵活运用模板变量无疑是提升效率和保持网站一致性的关键。无论是需要统一调整全站信息,还是为特定内容定制独有属性,理解如何定义和复用模板变量,都能让内容运营变得更加得心应手。
从后台源头定义变量
在安企CMS中,很多我们日常在网站上看到的信息,实际上都是通过后台预设的变量来管理的。这意味着您无需触碰一行代码,就能轻松定义和修改这些内容。
首先,网站的全局设置和联系方式设置就是定义全局变量的绝佳场所。比如,您可以在“全局功能设置”中设定“网站名称”、“网站Logo”、“备案号码”等,这些信息一旦定义,就可以在网站的任何一个页面中被调用,并且当您需要修改时,只需在后台更新一次,全站内容便会同步更新,极大地保证了网站信息的一致性。更有趣的是,这两个模块都提供了“自定义设置参数”功能。这意味着您可以根据自己的特定需求,添加任何您认为有用的全局变量,例如,为您的网站设置一个统一的“帮助页面链接”或一个特定的“客服工作时间”,这些自定义参数同样能被方便地在模板中复用。
其次,对于网站上丰富多样的内容,安企CMS提供了灵活的内容模型。这意味着您可以为不同类型的内容(如文章、产品、活动等)定义各自独特的字段。例如,一个“产品模型”除了标题和内容外,可能还需要“产品型号”、“价格”、“库存”等特有属性。这些在“内容模型使用帮助”中定义的自定义字段,就成了该模型下所有内容独有的变量。当您在后台发布具体的文章或产品时,这些字段就会作为内容本身的属性被填充和存储,等待在前端被调用展示。
此外,分类和单页面也支持定义一些特定变量。例如,您可以为某个产品分类设置一个专属的“Banner图”,或者为“关于我们”这个单页面添加一段独有的“分类内容”或“页面简介”。这些设置同样扩展了我们可用的变量范围,让页面的个性化展示变得更加便捷。
在模板中灵活定义临时变量
除了在后台预设全局或内容相关的变量,在编写模板文件时,我们也有能力按需定义一些临时的变量,以满足更复杂的逻辑或简化代码。
{% set %}标签就允许您在模板中直接声明并赋值一个变量。这个变量的生命周期仅限于当前模板文件及其子模板,非常适合存储一些计算结果或者临时的字符串。例如,您可能需要将两个数字相加,然后把结果存储在一个变量中以便后续使用;或者从一个较长的字符串中截取一部分内容作为新变量。通过{% set newVariable = existingVariable|filter:param %}这样的写法,您可以轻松实现这些临时的变量定义。
而{% with %}标签则提供了一个带有作用域的变量定义方式。它常常与{% include %}标签配合使用,以便在引入某个代码片段时,向该片段传递特定的数据,而不影响其他部分的变量。比如,您的网站有一个通用的页头模板,但在某些特定页面,您希望页头的标题能有所不同。这时,您就可以使用{% with title="自定义标题" %}{% include "partial/header.html" %}{% endwith %}的方式,在引入页头时临时覆盖其标题变量,从而实现内容的动态展示。
在内容显示中复用这些变量
定义了变量,接下来最关键的就是如何在网站前台的内容显示中有效地复用它们。安企CMS的模板引擎(类似Django模板引擎语法)提供了多种直观的调用方式。
最直接的调用方式是使用双花括号语法:{{ variable.property }}。如果您的模板上下文中已经包含了某个对象(例如,在文章详情页,archive对象通常会包含当前文章的所有信息),那么您就可以直接通过{{ archive.Title }}来显示文章标题,{{ archive.Description }}来显示文章简介。对于在内容模型中定义的自定义字段,如果它们不是以数组或复杂结构的形式存在,也可以直接通过{{ archive.您的自定义字段名 }}来获取。
此外,安企CMS还为我们提供了许多专用的标签,用于获取特定类型的变量:
{% system %}标签:用于获取全局设置中的各类信息,如{% system with name="SiteName" %}来显示网站名称,或者调用您在后台自定义的HelpUrl等。{% contact %}标签:专门获取联系方式设置中的信息,比如{% contact with name="Cellphone" %}来显示联系电话。同样,您在联系方式中自定义的参数也能通过此标签获取。{% tdk %}标签:用于获取页面的SEO信息,如{% tdk with name="Title" %}可以获取页面的标题。{% archiveDetail %}、{% categoryDetail %}、{% pageDetail %}标签:这些标签分别用于获取当前文档、分类或单页面的详细信息。通过name="字段名称"的参数,您可以精确获取如文档标题、分类描述、页面内容等具体数据。当需要获取内容模型中的自定义字段时,这个标签同样适用,例如{% archiveDetail with name="price" %}。{% archiveParams %}标签:如果您需要遍历一个文档下所有的自定义参数,而不是只调用其中某一个,{% archiveParams %}标签就非常有用。它会将所有自定义参数作为一个数组对象返回,您可以通过{% for item in params %}循环来逐一显示它们的名称和值。
当然,在复用这些变量时,我们经常会结合{% for %}循环和{% if %}条件判断标签。例如,遍历文章列表时,您可以通过{% for item in archives %}来逐一显示每篇文章的标题和链接;在展示图片时,您可以使用{% if item.Thumb %}<img src="{{ item.Thumb }}" />{% endif %}来判断缩略图是否存在,避免显示空白图片。
最后,千万不要忽视过滤器(Filters)的强大作用。过滤器可以对变量进行各种转换和处理,从而在显示时更符合您的需求。比如,使用{{ item.CreatedTime|stampToDate:"2006-01-02" }}可以将时间戳格式化为可读的日期;{{ item.Description|truncatechars:100 }}可以截取过长的描述并自动添加省略号;{{ archiveContent|safe }}则能确保富文本内容中的HTML标签被正确解析而不是作为纯文本显示。add过滤器甚至可以将数字或字符串相加,让简单的计算在模板中直接完成。
通过巧妙地定义和复用这些模板变量,您的安企CMS网站将拥有更高的维护效率、更好的内容一致性,并能轻松实现更多动态和个性化的展示效果。
常见问题 (FAQ)
1. 为什么有时候我需要在后台定义变量,有时候又直接在模板里用{% set %}或{% with %}?它们有什么区别?
后台定义的变量(如全局设置、内容模型自定义字段)是持久化存储在数据库中的,它们可以被全站不同页面和模块复用,并方便地通过后台界面进行管理和修改,无需触碰代码。这适用于网站基础信息、内容核心属性等。而{% set %}或{% with %}是在模板文件中临时定义的变量,它们只在当前请求的模板渲染过程中有效,不存储,主要用于简化模板内的复杂逻辑、传递参数给引入的代码片段,或存储计算结果。选择哪种方式取决于变量的作用范围、生命周期以及是否需要通过后台界面管理。
2. 我可以在哪里查看所有可用的模板变量及其属性?
安企CMS的文档中提供了详尽的“模板调用标签”部分,您可以在index.md -> “模板调用标签”下找到如tag-system.md(系统标签)、tag-contact.md(联系方式标签