如何在安企CMS模板中根据条件判断显示不同内容块?

📅 👁️ 52

在安企CMS的模板设计中,根据不同的条件显示或隐藏内容块,是实现动态网站效果和提升用户体验的关键能力。利用系统内置的模板语法和丰富的标签功能,我们可以轻松地构建出灵活多变、响应不同情境的页面。

安企CMS的模板引擎采用了类似Django语法的标记方式,这使得条件判断和循环控制非常直观且易于上手。它允许我们在模板中直接获取各种数据,并通过逻辑判断来决定哪些内容应该被呈现给访问者。


一、核心机制:条件判断标签(if/elif/else

在安企CMS的模板中,实现条件判断的核心是if标签。它的基本语法与其他常见的模板引擎类似,通过{% if 条件 %}{% elif 其他条件 %}{% else %}来构建逻辑分支,并以{% endif %}结束。

基本语法结构:

{% if 条件 %}
    <!-- 当条件为真时显示的内容 -->
{% endif %}

{% if 条件1 %}
    <!-- 当条件1为真时显示的内容 -->
{% elif 条件2 %}
    <!-- 当条件1为假,条件2为真时显示的内容 -->
{% else %}
    <!-- 当所有条件都为假时显示的内容 -->
{% endif %}

在这里,“条件”可以是多种形式:

  • 比较运算: 例如,判断一个数值是否等于、不等于、大于、小于或介于某个范围。
    • archive.Id == 10 (文档ID是否等于10)
    • item.Views > 1000 (文章浏览量是否大于1000)
    • item.Price < 50 (产品价格是否小于50)
  • 布尔值判断: 检查变量本身是否为truefalse
    • item.HasChildren (是否有子分类,如果为true则执行)
    • system.SiteCloseStatus (网站是否处于关闭状态)
  • 逻辑组合: 使用and(且)、or(或)、not(非)来组合多个条件。
    • item.IsCurrent and item.HasChildren (既是当前项又有子分类)
    • not item.Thumb (没有缩略图)
  • 空值或非空判断: 判断一个变量是否存在内容。
    • {% if item.Title %} (标题不为空则显示)

二、数据来源:如何获取可用于判断的变量?

要进行条件判断,我们首先需要获取可供判断的数据。安企CMS提供了丰富的标签来获取网站的各项信息,并将这些信息作为变量在模板中直接使用。

  1. 系统全局设置(system标签) 通过{% system with name="字段名称" %}可以获取网站的全局配置,例如网站的名称、Logo、备案号,甚至自定义的系统参数。

    • 示例: {% system with name="SiteCloseStatus" %} 可以获取网站的关闭状态(通常是一个布尔值或字符串),进而判断是否显示闭站提示。
  2. 分类、文档、单页详情(categoryDetail, archiveDetail, pageDetail标签) 在分类列表页、文档详情页、单页等特定页面,系统会将当前页面的主要信息自动加载到上下文中,可以直接通过archive.Titlecategory.Description等方式访问。如果需要获取其他指定ID的详情,或者获取详细的字段信息,则可以使用categoryDetailarchiveDetailpageDetail标签。

    • 示例: 在文章详情页,可以直接使用{{archive.Title}}获取标题。如果想判断当前文章是否有缩略图,可以使用{% if archive.Thumb %}
  3. 列表数据(archiveList, categoryList, navList等标签结合for循环) 当我们使用archiveListcategoryListnavList等标签遍历列表时,在{% for item in items %}循环内部,item变量就包含了当前循环项的所有数据。这些数据是进行条件判断最常用的来源。

    • 示例: 循环分类列表时,item.HasChildren可以判断该分类是否有子分类;item.IsCurrent可以判断是否为当前激活的分类,从而添加不同的样式。
  4. 自定义字段 安企CMS支持为内容模型、分类等添加自定义字段。这些自定义字段的数据也可以直接用于模板中的条件判断。

    • 示例: 如果你为文章模型添加了一个名为VIPAccess的自定义字段,在文章详情页可以通过{% if archive.VIPAccess == 'true' %}来判断是否仅供VIP用户访问。

三、实用场景与示例

结合条件判断标签和数据来源,我们可以实现各种灵活的内容展示。

1. 根据网站状态显示不同内容 假设您的网站因维护需要暂时关闭,您可以在模板中判断SiteCloseStatus变量,以显示维护提示信息而不是正常内容。

{% system siteStatus with name="SiteCloseStatus" %}
{% if siteStatus == "true" %} {# 假设后台设置为字符串"true"或"false" #}
    <div class="maintenance-message">
        <h1>网站维护中</h1>
        <p>抱歉,网站正在进行系统升级,请稍后访问。给您带来的不便敬请谅解!</p>
        {% system closeTips with name="SiteCloseTips" %}
        {% if closeTips %}<p>{{ closeTips }}</p>{% endif %}
    </div>
{% else %}
    <!-- 正常网站内容 -->
    {% include "partial/header.html" %}
    <main>
        <!-- 页面主体内容 -->
    </main>
    {% include "partial/footer.html" %}
{% endif %}

2. 在导航菜单中高亮当前活跃项和显示子菜单 在构建导航菜单时,经常需要根据用户当前访问的页面来高亮显示对应的导航项,并判断是否有子菜单来动态展开。

<nav>
    <ul class="main-menu">
        {% navList navs %}
        {% for item in navs %}
            <li class="menu-item {% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}">{{ item.Title }}</a>
                {% if item.NavList %} {# 判断是否有下级导航 #}
                    <ul class="sub-menu">
                        {% for subItem in item.NavList %}
                            <li class="sub-menu-item {% if subItem.IsCurrent %}active{% endif %}">
                                <a href="{{ subItem.Link }}">{{ subItem.Title }}</a>
                            </li>
                        {% endfor %}
                    </ul>
                {% endif %}
            </li>
        {% endfor %}
        {% endnavList %}
    </ul>
</nav>

3. 列表循环中特殊处理首条、尾条或有图片的项 在文章列表或产品列表中,可能需要为第一篇文章、最后一篇文章或带有缩略图的文章添加特别

相关文章

安企CMS的“全站内容替换”功能如何影响已发布内容的最终显示?

在网站运营的日常工作中,内容的更新与维护是持续不断且至关重要的一环。安企CMS(AnQiCMS)深知这一需求,因此提供了一项强大而高效的功能——“全站内容替换”。这项功能并非简单地修改前端显示,而是对已发布内容进行深度且即时的数据库层面的修改,其对网站内容的最终显示效果有着直接而全面的影响。 ### 什么是“全站内容替换”功能? 安企CMS的“全站内容替换”功能,顾名思义

2025-11-08

如何在安企CMS中获取并显示友情链接列表?

在网站运营中,友情链接(也称作友链)是提升网站权重、增加外部引流、促进网站间互动的重要组成部分。一个精心维护的友情链接列表,不仅能增加网站的外部链接,对SEO有积极作用,还能为用户提供更多相关信息,提升用户体验。安企CMS深知其重要性,提供了直观友好的后台管理界面和便捷的模板调用方式,让您能轻松地获取并显示友情链接列表。 接下来,我们将详细介绍如何在安企CMS中实现这一功能。 --- ##

2025-11-08

安企CMS是否支持文章内容中的数学公式和流程图的显示?

在内容创作中,尤其是在技术文章、学术论文或项目文档里,我们经常需要展示复杂的数学公式和清晰的流程图,以增强内容的专业性和可读性。对于安企CMS(AnQiCMS)的用户而言,这确实是一个非常实际的需求。那么,安企CMS是否支持在文章内容中显示数学公式和流程图呢?答案是肯定的,而且实现起来并不复杂。 安企CMS为内容创作者提供了灵活多样的内容管理方式,其核心之一便是内置的Markdown编辑器

2025-11-08

如何在安企CMS中显示指定ID的单页面内容,如“关于我们”?

在安企CMS中,无论是展示“关于我们”这样的企业简介,还是“联系方式”、“服务条款”等静态内容,单页面功能都是非常实用的。它允许您创建独立、不属于任何分类的页面,并且提供了灵活的方式来控制这些页面的显示方式。 要让安企CMS显示指定ID的单页面内容,您主要会用到系统内置的模板标签和后台的页面管理功能。这使得在网站的任何位置,或者为特定单页面定制专属布局变得非常便捷。 ### 1.

2025-11-08

安企CMS如何实现文章列表的多条件筛选显示(如按价格、地域)?

在现代网站运营中,用户对于内容筛选的需求日益增长。无论是寻找特定价位的产品,还是查询某个地区的活动信息,一个支持多条件筛选的文章列表都能极大地提升用户体验和内容触达效率。安企CMS(AnQiCMS)凭借其灵活的内容模型和强大的模板标签,为网站运营者提供了实现这类复杂筛选功能的便捷方案。 ### 构建多维内容的基石:内容模型的自定义字段 在安企CMS中,实现文章列表的多条件筛选

2025-11-08

如何在安企CMS中设置网站Logo、备案号、版权信息等全局显示内容?

网站的Logo、备案号、版权信息,这些看似细枝末节的元素,却是构成网站专业形象、品牌识别以及确保合规性的基石。在安企CMS中,管理这些全局性的显示内容远比想象中便捷,无需复杂的代码修改,只需通过直观的后台操作,就能轻松打造出专业且符合规范的网站门面。本文将带您一步步了解如何在安企CMS中高效设置并运用这些重要的全局信息。 ### 轻松管理全局内容——走进安企CMS后台 在安企CMS中

2025-11-08

安企CMS如何自动提取文章内容的第一张图片作为缩略图显示?

在网站内容运营中,为每篇文章精心挑选并设置缩略图是一项常规而又耗时的工作。这些小图不仅能有效吸引访客的注意力,也是列表页、推荐位保持视觉统一性的关键。安企CMS深谙此道,为用户提供了一项极为便捷的功能:自动从文章内容中提取首张图片作为缩略图显示。 ### 核心功能揭秘:自动缩略图提取机制 安企CMS在内容管理方面展现出其人性化的一面。当您撰写或编辑文章时,如果尚未手动上传特定的缩略图

2025-11-08

如何在安企CMS中防止内容被采集,并为图片添加水印显示?

在当今内容为王的时代,原创内容的价值不言而喻,然而随之而来的内容抄袭和图片盗用问题也日益猖獗。对于网站运营者而言,如何有效保护自己的辛勤成果,防止内容被恶意采集,并为图片加上专属标识,是维护品牌形象和内容权益的关键一环。安企CMS(AnQiCMS)深知这一痛点,内置了专门的功能来应对这些挑战。 ### 守护原创内容:安企CMS的防采集策略 安企CMS提供了一套强大的防采集机制

2025-11-08