在网站的日常运营和维护中,我们常常会遇到这样的情况:每个页面都需要包含一个统一的页头、一个标准的页脚,或者一个固定的侧边栏。如果每个页面都重复编写这些内容,不仅效率低下,而且一旦需要修改,工作量将是巨大的。安企CMS(AnQiCMS)深知这一痛点,因此提供了灵活且强大的模板引用机制,帮助我们高效地管理这些公共内容,确保网站的统一性和可维护性。

安企CMS模板机制概述

在安企CMS中,所有的模板文件都统一以.html为后缀,并集中存放在网站根目录下的/template文件夹中。安企CMS的模板引擎采用了类似Django的语法风格,这使得我们可以非常灵活地组织和管理模板内容。对于那些在多个页面中反复出现的公共元素,安企CMS提供了几种强大的方式来引用它们,确保您能以最有效率的方式构建和维护网站。

核心方法一:利用 include 标签嵌入公共片段

当您需要将一些相对独立、可以在不同页面或模板块中反复使用的代码片段嵌入进来时,include 标签是您的首选工具。想象一下,一个公共的侧边栏广告、一个通讯订阅表单或者一个简短的联系信息块,它们可能出现在网站的多个位置,但功能和内容相对独立。

通常,这些可复用的代码片段会放置在一个名为 partial/ 的子目录下,例如 partial/header.html(页头)、partial/footer.html(页脚)或 partial/sidebar.html(侧边栏)。

引用起来非常直观,只需要在需要引入的地方使用 {% include "partial/header.html" %} 这样的语法即可。

如果您想让被引入的片段接收一些特定的变量,可以使用 with 关键字。比如,您想在页头动态显示一个标题,可以这样调用:{% include "partial/header.html" with page_title="我的网站首页" %}。在 header.html 模板中,您就可以直接使用 {{ page_title }} 来获取这个值,并与其他继承而来的变量一同使用。

此外,如果您不确定某个公共片段文件是否存在,可以使用 if_exists 关键词。这样,即使文件不存在,也不会导致页面报错,而是会被系统忽略:{% include "partial/optional_ad.html" if_exists %}。这种方式非常适合引入一些可选或实验性的内容块。

核心方法二:利用 extends 标签实现模板继承

对于网站整体布局的定义,extends 标签提供了更强大的模板继承机制。这就像是设计一个网站的“母版页”或“骨架”,您可以把所有页面共享的结构,例如页头、主导航、页脚、版权信息,定义在一个基础模板(通常命名为 base.htmllayout.html)中。

在基础模板里,您会使用 block 标签来定义可被子模板填充或覆盖的区域,例如 {% block page_title %}{% endblock %} 用于定义页面标题区域,或者 {% block main_content %}{% endblock %} 用于定义页面的主要内容区域。

任何继承这个基础模板的子模板,例如 index.htmlarticle_detail.html,只需要在文件的开头声明 {% extends 'base.html' %},然后就可以通过同名的 block 标签来填充或重写相应区域的内容了。未被子模板重写的 block 区域,将自动显示父模板中的默认内容。

这种继承方式极大地简化了页面的结构管理。当您需要调整页头或页脚时,只需修改