在帝国 CMS 中,调用指定条件的信息主要通过灵动标签([e:loop])结合 SQL 查询条件实现,可根据栏目、时间、标题、自定义字段等多种条件筛选内容。以下是详细的使用方法和示例:

一、基础语法结构

灵动标签调用指定条件信息的基本格式:
php
[e:loop={"SQL查询语句", 调用数量, 缓存时间, 是否只显示有标题图}]
    <!-- 内容输出模板 -->
    <a href="<?=$bqr['titleurl']?>"><?=$bqr['title']?></a>
[/e:loop]

参数说明
  • SQL查询语句:核心条件,用于筛选符合要求的信息
  • 调用数量:显示的信息条数(0 为不限制)
  • 缓存时间:缓存秒数(0 为不缓存)
  • 是否只显示有标题图:1 = 只显示有标题图的信息,0 = 全部显示

二、常用条件调用示例

1. 按栏目 ID 调用(指定栏目内容)

调用栏目 ID 为 5 和 8 的文章,且已审核:
php
[e:loop={"SELECT * FROM phome_ecms_news WHERE classid IN (5,8) AND checked=1 ORDER BY newstime DESC LIMIT 10",10,24,0}]
    <li>
        <a href="<?=$bqr['titleurl']?>"><?=esub($bqr['title'],30)?></a>
        <span><?=date('Y-m-d',$bqr['newstime'])?></span>
    </li>
[/e:loop]
  • classid IN (5,8):筛选栏目 ID 为 5 或 8 的内容
  • checked=1:只调用已审核内容

2. 按时间条件调用(指定时间段)

调用近 7 天内发布的文章:
php
<?php
$time7 = time() - 7*24*3600; // 7天前的时间戳
?>
[e:loop={"SELECT * FROM phome_ecms_news WHERE newstime > $time7 AND checked=1 ORDER BY newstime DESC LIMIT 8",8,24,0}]
    <div class="news-item">
        <h3><?=$bqr['title']?></h3>
        <p>发布时间:<?=date('Y-m-d H:i',$bqr['newstime'])?></p>
    </div>
[/e:loop]
  • newstime > $time7:筛选发布时间在 7 天内的内容

3. 按标题 / 内容关键词调用

调用标题包含 “活动” 的文章:
php
[e:loop={"SELECT * FROM phome_ecms_news WHERE title LIKE '%活动%' AND checked=1 ORDER BY id DESC LIMIT 5",5,24,0}]
    <a href="<?=$bqr['titleurl']?>"><?=$bqr['title']?></a>
[/e:loop]
  • title LIKE '%活动%':模糊匹配标题包含 “活动” 的内容
  • 若需匹配内容字段,可使用smalltext LIKE '%关键词%'(简介)或newstext LIKE '%关键词%'(正文)

4. 按自定义字段条件调用

假设有自定义字段price(价格),调用价格大于 1000 的产品:
php
[e:loop={"SELECT * FROM phome_ecms_product WHERE price > 1000 AND checked=1 ORDER BY price ASC LIMIT 6",6,24,0}]
    <div class="product">
        <h4><?=$bqr['title']?></h4>
        <p>价格:<?=$bqr['price']?>元</p>
    </div>
[/e:loop]
  • 需替换表名phome_ecms_product为实际模型表名
  • 自定义字段直接作为条件使用(如price > 1000

5. 多条件组合调用

调用栏目 ID 为 3、浏览量大于 1000、且 2023 年发布的文章:
php
[e:loop={"SELECT * FROM phome_ecms_news WHERE 
    classid=3 AND 
    onclick > 1000 AND 
    newstime BETWEEN 1672502400 AND 1703952000 AND 
    checked=1 
    ORDER BY onclick DESC LIMIT 10",10,24,0}]
    <li>
        <span>浏览:<?=$bqr['onclick']?></span>
        <a href="<?=$bqr['titleurl']?>"><?=$bqr['title']?></a>
    </li>
[/e:loop]
  • BETWEEN 1672502400 AND 1703952000:2023 年时间戳范围
  • 多条件用AND/OR连接

三、高级用法:结合灵动标签参数

1. 调用带标题图的信息

php
[e:loop={"SELECT * FROM phome_ecms_news WHERE checked=1 ORDER BY newstime DESC",6,24,1}]
    <!-- 第4个参数为1,表示只调用有标题图的信息 -->
    <div class="pic-news">
        <img src="<?=$bqr['titlepic']?>" alt="<?=$bqr['title']?>">
        <a href="<?=$bqr['titleurl']?>"><?=$bqr['title']?></a>
    </div>
[/e:loop]

2. 按模型 ID 调用(跨栏目调用同一模型)

调用模型 ID 为 1 的所有内容(不限制栏目):
php
[e:loop={"SELECT * FROM phome_ecms_news WHERE mid=1 AND checked=1 ORDER BY newstime DESC LIMIT 8",8,24,0}]
    <p><a href="<?=$bqr['titleurl']?>"><?=$bqr['title']?></a></p>
[/e:loop]
  • mid=1:模型 ID,不同模型对应不同 ID(文章模型通常为 1)