在安企CMS中,网站内容的动态展示是提升用户体验和运营效率的关键。您可能常常遇到这样的需求:希望某个内容块只在特定条件下出现,或者针对不同情况显示不同的信息。这时,安企CMS强大的条件判断功能——if标签,就能派上大用场了。
安企CMS的模板系统采用了类似Django模板引擎的语法,让您能够以直观的方式在模板中实现逻辑判断。通过灵活运用if标签,您可以轻松控制页面元素的显示与隐藏,让网站内容呈现出前所未有的智能与个性化。
认识 if 标签的基本用法
if标签的核心思想是:如果某个条件为真(True),就执行它包裹的代码块。安企CMS提供了几种常见的if标签结构,以满足您不同的判断需求:
简单的
if判断 这是最基础的用法。当您只需要在满足单一条件时显示内容,或者检查某个变量是否存在时,可以使用它。{% if 条件 %} <!-- 当条件为真时,这里的内容会显示 --> {% endif %}例如,如果只想在文章有缩略图时显示图片:
{% if archive.Thumb %} <img src="{{ archive.Thumb }}" alt="{{ archive.Title }}" /> {% endif %}if-else判断 当您需要根据条件在两种内容之间进行选择时,if-else结构非常实用。{% if 条件 %} <!-- 当条件为真时显示 --> {% else %} <!-- 当条件为假时显示 --> {% endif %}比如,如果文章有描述就显示描述,否则显示一段默认提示:
{% if archive.Description %} <p>{{ archive.Description }}</p> {% else %} <p>暂无内容简介。</p> {% endif %}if-elif-else多重判断 当您需要处理多个互斥的条件时,if-elif-else结构能让您的逻辑更清晰。elif是“else if”的简写。{% if 条件1 %} <!-- 当条件1为真时显示 --> {% elif 条件2 %} <!-- 当条件1为假,且条件2为真时显示 --> {% else %} <!-- 所有条件都为假时显示 --> {% endif %}举个例子,根据文章的浏览量显示不同的热门状态:
{% if archive.Views > 1000 %} <span>🔥 超级热门!</span> {% elif archive.Views > 100 %} <span>👍 比较热门</span> {% else %} <span>✨ 持续更新中</span> {% endif %}无论使用哪种形式,最后都必须以
{% endif %}来结束整个条件判断块。
常用的条件表达式
在if标签中,您可以组合各种表达式来构建复杂的判断逻辑。
变量是否存在/是否为真 (Truthiness) 在安企CMS模板中,任何非空字符串、非零数字、非空对象或数组,都会被视为”真”。而空字符串、零、
nil(空值)或布尔值false则被视为”假”。{% if system.SiteLogo %} <img src="{{ system.SiteLogo }}" alt="{{ system.SiteName }}" /> {% else %} <p>网站Logo缺失</p> {% endif %}数值与字符串比较 您可以对数值(如ID、浏览量、价格)和字符串进行比较。
- 相等/不相等:
==(等于),!=(不等于) - 大小比较:
>(大于),<(小于),>=(大于等于),<=(小于等于)
{% if archive.CategoryId == 5 %} <!-- 这是ID为5的分类下的文章 --> {% endif %} {% if contact.Cellphone != "" %} <a href="tel:{{ contact.Cellphone }}">{{ contact.Cellphone }}</a> {% endif %}- 相等/不相等:
逻辑运算符 当您需要组合多个条件时,可以使用
and(逻辑与)、or(逻辑或)、not(逻辑非,也可以用!)。{% if archive.Thumb and archive.CreatedTime %} <p>文章带图且有发布时间</p> {% endif %} {% if archive.ModuleId == 1 or archive.ModuleId == 2 %} <p>这篇文章属于文章或产品模型</p> {% endif %} {% if not archive.Description %} <p>文章没有简介</p> {% endif %}列表或集合判断 您可以使用
in运算符来判断某个值是否在列表中。{% set allowed_ids = "1,3,5"|split:"," %} {# 假设这是一个ID列表 #} {% if archive.Id in allowed_ids %} <p>这是被允许展示的文章</p> {% endif %}
结合安企CMS标签的实际应用场景
现在,我们来看看如何在安企CMS的日常模板开发中,将if标签运用到具体场景中。
- 导航菜单中的活跃状态
网站导航是用户最常互动的部分。为当前页面对应的导航项添加高亮样式,是提升用户体验的常见做法。
这里,{% navList navs %} <ul> {% for item in navs %} <li {% if item.IsCurrent %}class="active"{% endif %}> <a href="{{ item.Link }}">{{ item.Title }}</a> {% if item.NavList %} {# 判断是否有子导航 #} <ul class="sub-menu"> {% for sub_item in item.NavList %} <li {% if sub_item.IsCurrent %}class="active"{% endif %}> <a href="{{ sub_item.Link }}">{{ sub_item.Title }}</a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endnavList %}item.IsCurrent是一个布尔值,用于判断当前导航项是否对应当前