在网站建设与运营中,我们常常面临一个挑战:如何既能保证网站整体风格的一致性,又能灵活地修改各个页面的特定内容,同时还要兼顾开发效率与后期维护的便捷性?AnQiCMS 提供了一套强大而直观的模板继承机制,这正是解决这些问题的核心。它就像为你的网站打造了一个“母版”,让你可以轻松复用公共结构,专注于内容创作。

理解模板继承的核心原理

简单来说,AnQiCMS 的模板继承功能允许我们定义一个基础的页面布局,我们称之为“页面骨架”或“父模板”,其中包含了网站所有页面共有的结构元素,比如页头、页脚、导航栏、侧边栏等。在这个骨架中,我们会通过 {% block ... %} 标签预留出一些“可变区域”。子模板则通过 {% extends '父模板路径' %} 来继承这个骨架,并可以根据自己的需求,使用同名的 {% block ... %} 标签来填充或重写父模板中预留的区域。那些子模板没有重写的区域,则会自动沿用父模板中的内容。

这个机制类似于演示文稿软件中的“幻灯片母版”:母版定义了整体的排版和设计,而每张幻灯片则填充具体的内容。这样做的好处显而易见:网站的公共元素保持统一,而页面的独特内容则可以自由定制。

构建你的页面骨架:父模板的设计

要利用模板继承,首先需要创建一个基础的父模板,通常命名为 base.html,并将其放置在模板目录的根目录下。这个 base.html 将承载你网站最基础的 HTML 结构,例如 <!DOCTYPE html><html><head><body> 标签。

base.html 中,你可以布局通用的元素:

  • 头部导航区:通常包含 Logo、主导航、搜索框等。
  • 页面主体布局:例如左侧边栏、右侧内容区等。
  • 页脚信息:版权声明、备案号、友情链接等。

在这些固定结构中,你需要使用 {% block ... %} 来定义那些可能在不同页面中发生变化的区域。例如,你可以定义一个 title block 用于页面标题,一个 content block 用于页面的主要内容,或者 stylesscripts 等 block 用于引入页面特有的样式或脚本。

”`twig {# template/base.html #} <!DOCTYPE html>

<meta charset="UTF-8">
{# 页面标题,子模板可重写 #}
{% block title %}<title>我的网站</title>{% endblock %} 
{# 额外meta信息,子模板可重写 #}
{% block meta %}{% endblock %} 
<link rel="stylesheet" href="/public/static/css/common.css">
{# 页面特有样式,子模板可重写 #}
{% block styles %}{% endblock %}