核心语法
帝国CMS模板的 if 标签支持 not 属性来表示“不等于”或“非”的逻辑。
基本结构如下:
[e:loop={栏目ID, 显示条数, 操作类型, 只显示有标题图片}]
<!-- 你的代码 -->
<if condition="$bqr[字段名] not value='要比较的值'">
<!-- 如果字段值 不等于 '要比较的值',则显示这里的代码 -->
[!--news.url--]<?=$bqr['title']?>
</if>
[/e:loop]
语法解析:
[if condition="..."]:这是条件判断的开始。$bqr[字段名]:这是你要判断的字段变量。$bqr是在e:loop循环中代表当前文章信息的数组。not:这是关键字,表示“不等于”或“非”。value='要比较的值':这是你要用来比较的值,值需要用英文单引号 或双引号 括起来。
常见用法示例
假设我们有一个字段 titlepic图片),如果这个字段为空(即没有上传标题图),我们想在列表中显示一个默认图片。
示例1:判断字符串不等于
不等于“置顶文章”。
[e:loop={栏目ID, 显示条数, 操作类型}]
<if condition="$bqr['title'] not value='置顶文章'">
<a href="[!--news.url--]<?=$bqr['titleurl']?>" target="_blank"><?=$bqr['title']?></a>
</if>
[/e:loop]
示例2:判断字段为空(最常用)
这是最常见的需求,比如判断标题图片字段 titlepic 是否为空。
写法A (推荐,使用 not)
[e:loop={栏目ID, 显示条数, 操作类型}]
<if condition="$bqr[titlepic] not value=''" >
<!-- titlepic 字段不为空,则显示这张图片 -->
<img src="<?=$bqr[titlepic]?>" alt="<?=$bqr[title]?>">
<else />
<!-- 否则(如果为空),显示默认图片 -->
<img src="[!--news.url--]images/default.jpg" alt="默认图片">
</if>
[/e:loop]
说明: value='' 表示判断字段值是否等于空字符串。not value='' 就表示“不等于空字符串”,也就是“不为空”。
写法B (同样常用,使用 empty)
[e:loop={栏目ID, 显示条数, 操作类型}]
<if condition="!empty($bqr[titlepic])" >
<!-- titlepic 字段不为空,则显示这张图片 -->
<img src="<?=$bqr[titlepic]?>" alt="<?=$bqr[title]?>">
<else />
<!-- 否则(如果为空),显示默认图片 -->
<img src="[!--news.url--]images/default.jpg" alt="默认图片">
</if>
[/e:loop]
说明: empty($var) 是PHP函数,用于检查变量是否为空。 是逻辑非运算符,!empty($bqr[titlepic]) 的意思和 $bqr[titlepic] not value='' 完全一样,表示“字段不为空”,这两种写法都非常普遍,可以根据个人习惯选择。
示例3:判断数字不等于
假设我们有一个自定义字段 group_id (分组ID),我们不希望显示 group_id 为 1 的文章。
[e:loop={栏目ID, 显示条数, 操作类型}]
<if condition="$bqr[group_id] not value='1'">
<div>
<h3><a href="[!--news.url--]<?=$bqr['titleurl']?>"><?=$bqr['title']?></a></h3>
<p>分组ID: <?=$bqr[group_id]?></p>
</div>
</if>
[/e:loop]
if 标签的完整语法
为了让你更全面地了解,这里列出 if 标签的其他常用属性,方便你组合使用。
eq或 : 等于neq或<>或not: 不等于gt: 大于 (greater than)egt: 大于等于 (equal or greater than)lt: 小于 (less than)elt: 小于等于 (equal or less than)heq: 恒等于 (值和类型都相等)nheq: 不恒等于
组合使用示例: 长度大于10个字符且不等于“公告”的文章。
[e:loop={栏目ID, 显示条数, 操作类型}]
<if condition="strlen($bqr['title']) gt '10' && $bqr['title'] not value='公告'">
<a href="[!--news.url--]<?=$bqr['titleurl']?>" target="_blank"><?=$bqr['title']?></a>
</if>
[/e:loop]
注意: 多个条件组合时,使用 && (与) 或 (或) 连接,并且整个 condition 属性的值需要用英文双引号 括起来。
总结与最佳实践
- 判断“不等于空”:推荐使用
[if condition="$bqr[字段名] not value=''"]或[if condition="!empty($bqr[字段名])"]。 - 判断“不等于某个值”:使用
[if condition="$bqr[字段名] not value='指定的值'"]。 - 善用
<else />:当if条件不满足时,使用<else />来定义要显示的备用内容,使模板逻辑更清晰。 - 变量和值:始终确保变量名(如
$bqr[titlepic])和比较的值(如'default.jpg')的拼写正确,并且值要用引号括起来。
希望这些详细的解释和示例能帮助你完美地在帝国CMS模板中实现 if 不等于的逻辑!
