核心语法

帝国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_id1 的文章。

[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 属性的值需要用英文双引号 括起来。


总结与最佳实践

  1. 判断“不等于空”:推荐使用 [if condition="$bqr[字段名] not value=''"][if condition="!empty($bqr[字段名])"]
  2. 判断“不等于某个值”:使用 [if condition="$bqr[字段名] not value='指定的值'"]
  3. 善用 <else />:当 if 条件不满足时,使用 <else /> 来定义要显示的备用内容,使模板逻辑更清晰。
  4. 变量和值:始终确保变量名(如 $bqr[titlepic])和比较的值(如 'default.jpg')的拼写正确,并且值要用引号括起来。

希望这些详细的解释和示例能帮助你完美地在帝国CMS模板中实现 if 不等于的逻辑!