如何使用Django模板引擎语法在AnQiCMS中高效显示各类动态内容?

在安企CMS中管理网站内容,您会发现其内置的Django模板引擎语法是极其强大和灵活的工具,它能帮助您高效地将后台数据转化为前端页面上生动活泼的动态内容。掌握这套语法,您不仅能展示基本的文本和图片,更能构建复杂的、互动性强的动态页面,让您的网站充满活力。

安企CMS的模板语法设计得非常直观,它借鉴了Django模板引擎的特点,并融入了Go语言的简洁高效。您主要会接触到两种核心元素:用于输出变量的{{ 双花括号 }}和用于控制逻辑的{% 单花括号加百分号 %}。理解这两者,是高效利用安企CMS模板的第一步。

灵活展示网站基础信息

首先,我们从网站最基础的动态信息开始。安企CMS提供了方便的标签来获取全局配置和联系方式:

  • 网站全局设置:想要在网站的任何位置显示网站名称、Logo、备案号或版权信息?system标签能轻松实现。例如,在页面标题中显示网站名称,可以这样写:<title>{% system with name="SiteName" %}</title>。需要网站Logo的图片地址,就是<img src="{% system with name="SiteLogo" %}" alt="网站Logo" />
  • 联系方式:要展示公司的联系电话、地址、邮箱,甚至是WhatsApp或Facebook链接,contact标签能派上用场。比如,显示联系电话:电话:{% contact with name="Cellphone" %}
  • 页面TDK:对于每个页面的SEO优化至关重要的标题(Title)、关键词(Keywords)和描述(Description),tdk标签可以动态生成。例如,设置页面的<title>标签:<title>{% tdk with name="Title" siteName=true %}</title>,这里的siteName=true还会自动带上您在后台设置的网站名称后缀。

这些标签让您无需硬编码,后台一改,前台即时更新,极大地提升了运营效率。

动态呈现内容核心:文章、产品与自定义数据

安企CMS的核心价值在于其灵活的内容模型。无论是文章、产品,还是您自定义的任何内容类型,都能够通过模板语法轻松展示。

  • 列表展示

    • 要显示最新的文章列表,archiveList标签结合for循环是您的得力助手。例如,获取指定分类下的最新10篇文章:
      
      {% archiveList archives with type="list" categoryId="1" limit="10" %}
          {% for item in archives %}
          <li>
              <a href="{{item.Link}}">{{item.Title}}</a>
              <p>{{item.Description}}</p>
              <span>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
          </li>
          {% endfor %}
      {% endarchiveList %}
      
      这里的archives是您定义的变量名,item是每次循环中当前文章的对象。您可以通过item.Linkitem.Title等方式访问文章的各种属性。stampToDate是一个实用的过滤器,能将时间戳格式化为易读的日期。
    • 同样地,categoryList可以列出分类,pageList列出单页面,tagList列出标签。它们都遵循类似的{% for item in collection %}循环模式。
  • 详情页展示

    • 当用户点击列表中的文章进入详情页时,archiveDetail标签会根据当前页面的文章ID自动获取并显示详细内容。要显示文章标题,直接<h1>{% archiveDetail with name="Title" %}</h1>。文章内容通常需要特殊处理,因为可能包含HTML标签,此时要用|safe过滤器来确保HTML被正确解析而不是作为纯文本显示:
      
      <div>
          {%- archiveDetail articleContent with name="Content" %}
          {{articleContent|safe}}
      </div>
      
    • categoryDetailpageDetail等标签也以类似的方式获取分类和单页面的详情。
    • 上下篇导航:在文章详情页,prevArchivenextArchive标签可以方便地生成上下篇文章的链接,提升用户浏览体验。
    • 相关文档archiveList标签配合type="related"参数,能智能地为您展示与当前文章相关的其他文章,这对于SEO和用户留存都非常有益。
  • 自定义字段与筛选

    • 安企CMS允许您为内容模型添加自定义字段。如果您为产品模型添加了“尺寸”、“颜色”等字段,archiveParams标签能够帮助您动态获取并显示这些自定义参数。
    • 对于更高级的需求,比如根据多个自定义参数筛选内容,archiveFilters标签能在列表页动态生成筛选条件,配合archiveListtype="page"模式,可以构建出强大的筛选功能,例如房产网站的“区域-户型-价格”筛选。

优化网站结构与用户体验

  • 导航菜单navList标签是构建多级导航菜单的利器。您可以根据后台设置的导航类别,灵活地展示网站的顶部、侧边或底部导航。通过嵌套for循环,轻松实现下拉菜单效果。
  • 面包屑导航breadcrumb标签能自动生成当前页面的层级路径,帮助用户了解自己在网站中的位置,提升导航清晰度。
  • 分页功能:当内容列表很长时,pagination标签可以智能地生成分页链接,控制页码显示数量,确保页面加载速度和用户友好性。

提升模板复用性与可维护性

模板的复用性是高效开发的关键。安企CMS提供了几种强大的机制:

  • include 标签:将页头、页脚、侧边栏等公共部分抽取为独立的模板片段,然后通过{% include "partial/header.html" %}在需要的地方引用,避免重复代码。您甚至可以通过with参数向这些片段传递特定的变量。
  • extends 标签:用于模板继承,您可以创建一个基础布局(例如base.html),定义好页面骨架和可替换的block区域。然后其他页面只需{% extends 'base.html' %}并重写相应block,就能快速构建出风格一致的页面。
  • macro 标签:如果某些代码块需要频繁使用,并且需要接受参数,macro标签就像是模板中的函数。定义一次,多处调用,让代码更加模块化和可读。
  • withset 标签:这两个标签允许您在模板内部定义临时变量,用于存储计算结果或简化复杂表达式,使模板逻辑更加清晰。

深入数据处理:过滤器(Filters)的妙用

过滤器是模板中的“数据处理器”,通过管道符|应用到