如何在模板中通过`include`、`extends`等标签组织可复用的显示模块?

📅 👁️ 62

安企CMS模板:巧用includeextends,打造高效可复用的显示模块

当你使用安企CMS搭建网站时,你很快就会发现它在组织内容展示方面非常灵活。尤其是处理模板时,内置的Django模板引擎语法让我们可以像搭积木一样高效地构建页面。今天,我们就来聊聊如何巧妙运用includeextends这两个强大的标签,来组织和管理你网站中的可复用显示模块,让你的模板更整洁、更易维护。

理解安企CMS模板的基础

在深入探讨之前,我们先回顾一下安企CMS模板的基本约定。模板文件通常以.html为后缀,并统一存放在/template目录下。你需要用到的样式、JavaScript脚本和图片等静态资源,则会放在/public/static/目录中。在模板里,我们用双花括号{{ 变量 }}来输出内容,用单花括号和百分号{% 标签 %}来控制逻辑,这与Django模板引擎的语法非常相似,上手起来也很自然。

include标签:代码片段的即插即用

想象一下,你网站的页眉、页脚、侧边栏或者某个广告位,这些内容几乎在每个页面都会出现。如果每个页面都复制粘贴一遍,不仅费时,将来要修改时也会非常麻烦。这时,include标签就派上用场了。

include标签允许你将一个独立的HTML片段(或者说代码片段)嵌入到当前的模板文件中。它的基本语法非常简单,你只需指定要引入的模板文件路径即可。通常,这些被include进来的代码片段会放在一个专门的目录下,比如/template/你的模板目录/partial/,这样方便管理。

举个例子,如果你的页眉(header)内容相对独立,可以把它放在partial/header.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>{{ title|default:"默认标题" }}</title>
    <meta name="keywords" content="{{ keywords|default:"默认关键词" }}">
    <link rel="stylesheet" href="{% system with name="TemplateUrl" %}/css/style.css">
</head>
<body>
    <header class="main-header">
        <h1><a href="{% system with name="BaseUrl" %}">{% system with name="SiteName" %}</a></h1>
        <nav>
            {% navList mainNavs %}
                <ul>
                    {% for item in mainNavs %}
                        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
                    {% endfor %}
                </ul>
            {% endnavList %}
        </nav>
    </header>

然后在你需要使用页眉的任何页面中,只需简单地引入:

{% include "partial/header.html" %}

有时,你可能不确定某个片段文件是否存在,或者希望它只是在存在时才被引入,这时可以加上if_exists

{% include "partial/sidebar.html" if_exists %}

另外,include标签还允许你为引入的片段传递特定的变量。比如,我们想为上面的header.html传递一个自定义的titlekeywords

{% include "partial/header.html" with title="我的首页标题" keywords="SEO优化关键词" %}

如果你只想让include的片段使用你显式传递的变量,而不继承当前模板的所有变量,可以在with后面加上only

{% include "partial/header.html" with title="我的首页标题" keywords="SEO优化关键词" only %}

这样,header.html中就只会识别titlekeywords这两个变量,其他变量则不会被继承。

extends标签:构建网站的整体骨架

如果说include是用来插入小块积木的,那么extends就像是为你的网站设计一张总体的蓝图或骨架。它允许你定义一个基础模板(通常称为“母版”或“布局模板”),其中包含网站的公共结构,比如导航、页眉、页脚、内容区域的划分等等。

extends标签总是放在模板文件的最顶部,声明当前模板继承自哪个母版。例如,我们创建一个名为base.html的母版文件,它定义了页面的基本结构:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    {# 这个title块是可被子模板重写的区域 #}
    {% block title %}
        <title>默认网站标题 - {% system with name="SiteName" %}</title>
    {% endblock %}
    <meta name="keywords" content="{% tdk with name="Keywords" %}">
    <meta name="description" content="{% tdk with name="Description" %}">
    <link rel="stylesheet" href="{% system with name="TemplateUrl" %}/css/global.css">
    {% block head_extra %}{# 预留给子模板添加额外head内容 #}{% endblock %}
</head>
<body>
    <div class="wrapper">
        <header>
            {# 这里通常会include页眉代码片段 #}
            {% include "partial/header.html" %}
        </header>

        <nav class="main-nav">
            {# 导航栏代码,可能也是一个include片段 #}
        </nav>

        <main class="content-area">
            <aside class="sidebar">
                {# 侧边栏内容,也可以是include片段 #}
            </aside>
            <article class="main-content">
                {# 这个content块是页面的主体内容,子模板会在这里填充 #}
                {% block content %}
                    <p>这是母版中定义的默认内容。</p>
                {% endblock %}
            </article>
        </main>

        <footer>
            {# 这里通常会include页脚代码片段 #}
            {% include "partial/footer.html" %}
        </footer>
    </div>
    {% block body_extra %}{# 预留给子模板添加额外body内容 #}{% endblock %}
</body>
</html>

在母版中,你需要用block标签来定义可被子模板重写或填充的区域。当子模板继承这个母版时,它可以选择性地重写这些block区域的内容。如果子模板没有重

相关文章

如何配置301重定向规则以避免内容调整后导致的SEO影响?

网站内容运营是一项持续性的工作,随着业务发展,内容的更新、调整,乃至网站结构的优化都可能导致页面URL发生变动。然而,这些URL的变化如果处理不当,往往会对网站的搜索引擎优化(SEO)带来显著的负面影响,例如排名下降、流量流失等。这时,301重定向就成为了我们避免这些不利影响、维护网站SEO健康的关键工具。 ### 理解301重定向的价值 简单来说,301重定向(Moved

2025-11-07

如何将图片资源进行分类管理,并在前台按分类显示?

图片是网站内容不可或缺的一部分,它们不仅能美化页面,还能有效传达信息,提升用户体验。然而,随着网站图片数量的增长,如何高效地管理这些图片资源,并灵活地在前台页面按需展示,成为了许多网站运营者面临的挑战。安企CMS(AnQiCMS)深谙此道,提供了一套直观且功能强大的图片资源管理系统,帮助我们轻松驾驭这些视觉元素。 ### 图片资源的后台分类管理:让一切井井有条 在安企CMS中

2025-11-07

如何在AnQiCMS模板中定义和使用变量进行内容显示?

安企CMS(AnQiCMS)凭借其基于Go语言的高效架构和灵活的模板机制,让内容呈现变得既强大又直观。在网站内容运营中,我们经常需要展示动态信息,比如文章标题、产品价格、联系方式等,这就离不开在模板中定义和使用变量。理解如何在AnQiCMS模板中灵活运用变量,是搭建和维护高效、富有个性化网站的关键。 安企CMS的模板引擎借鉴了Django的语法,它使得变量的定义和引用变得非常易于理解。基本上

2025-11-07

如何在模板中引用并显示外部静态资源(如CSS、JS)?

在 AnQiCMS 的模板中引用和显示外部静态资源,如 CSS 样式表和 JavaScript 脚本,是构建功能完善、视觉美观网站的关键步骤。了解其工作原理和推荐的做法,能让我们的网站开发工作更加高效和灵活。 ### 静态资源存放位置 在使用 AnQiCMS 构建网站时,样式表(CSS)、JavaScript 脚本(JS)以及图片等静态文件是构成网站视觉和交互体验不可或缺的部分

2025-11-07

如何在网站维护或升级时,向用户显示友好的提示页面?

在网站运营过程中,无论是系统升级、数据迁移,还是常规维护,都不可避免地会遇到需要暂时关闭网站,或者部分功能无法访问的情况。这个时候,如何向访问网站的用户传递清晰、友好的信息,避免用户感到困惑或直接流失,是提升用户体验、维护品牌形象的关键。幸运的是,AnQiCMS 提供了一套简洁高效的机制,帮助我们轻松应对这类场景。 ### 网站维护升级,为何需要友好的提示页面? 想象一下

2025-11-07

如何在Docker部署的AnQiCMS多站点环境中,每个站点独立显示其内容和配置?

在当今的互联网运营中,许多企业或个人往往需要管理多个网站,以服务不同的品牌、产品或目标受众。安企CMS(AnQiCMS)凭借其强大的多站点管理能力,能够在一个核心系统上轻松应对这种需求。当结合Docker这一流行的容器化技术进行部署时,如何确保每个站点既能高效运行,又能独立显示其内容和配置,成为一个值得探讨的话题。 安企CMS在Docker环境中实现多站点独立显示

2025-11-07

AnQiCMS 如何高效管理并展示多个站点的独立内容和数据?

管理多个网站的内容和数据,对于许多企业和内容运营者来说,常常是一项既耗时又容易出错的挑战。不同品牌、产品线,或是针对不同地区、语言受众的独立站点,往往意味着需要独立搭建、维护各自的内容管理系统,导致资源分散、工作量剧增,甚至难以实现有效的协同管理。 然而,随着内容管理技术的不断发展,像 AnQiCMS 这样的系统,正致力于提供一套优雅且高效的解决方案,让我们能够在一个统一的平台上

2025-11-07

如何自定义内容模型以灵活展示文章、产品、活动等不同类型信息?

在当今内容营销日益多元化的时代,网站需要承载的信息类型也越来越丰富。仅仅依靠“文章”和“产品”这两种通用类型,往往难以满足企业或自媒体运营者个性化的展示需求,例如发布活动通知、招聘岗位、案例研究或是行业报告等。这时,安企CMS(AnQiCMS)提供的自定义内容模型功能,就成为了我们灵活管理和展示这些多元化信息的强大工具。 内容模型,顾名思义,是内容的一种结构蓝图。它定义了某一类信息包含哪些字段

2025-11-07