
帝国CMS的万能标签(也叫“灵动标签”)支持使用SQL语句直接调用数据库内容,灵活性非常高。通过自定义SQL,你可以实现各种复杂的调用需求,比如跨模型调用、多表联合查询、条件筛选排序等。
一、万能标签基本语法结构
万能标签的标准写法如下:
\[e:loop={栏目ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序}\]模板代码内容\[/e:loop\]
但如果你想使用自定义SQL语句,需要将前三个参数设为0,并在附加SQL条件位置填写完整的SQL查询语句。
二、使用SQL语句的万能标签写法
当使用自定义SQL时,格式如下:
\[e:loop={0,10,3,”,’select * from [!db.pre!]ecms_news where checked=1 order by newstime desc’,”}\]”>=$bqr[‘title’]?>\[/e:loop\]
参数说明:
0:栏目ID,设为0表示不限制10:显示条数,这里取10条3:操作类型,3表示使用自定义SQL语句”:只显示有标题图片,留空表示不限制’select …’:这里填写你的完整SQL语句”:排序字段,使用SQL中order by时可留空
三、常用SQL语句示例
1. 调用最新新闻文章
select * from [!db.pre!]ecms_news where checked=1 order by newstime desc limit 10
2. 调用某个分类下的带图新闻
select * from [!db.pre!]ecms_news where classid=6 and titlepic!=” order by newstime desc limit 8
3. 联合查询获取作者信息(假设存在会员字段)
select a.*,u.truename from [!db.pre!]ecms_news a left join [!db.pre!]enewsmemberadd u on a.userid=u.userid where a.checked=1 order by a.newstime desc limit 5
4. 调用评论数最多的文章
select * from [!db.pre!]ecms_news where checked=1 order by plnum desc limit 10
5. 调用不同数据表的内容(如商品+新闻)注意:需在PHP中处理或分两次调用,不建议在一条SQL中混合不同类型内容。
四、注意事项与技巧
1. 表前缀替换:[!db.pre!] 是系统自动替换的数据库表前缀,务必保留。
2. 数据表名称:常见数据表包括:
ecms_news:新闻系统模型ecms_download:下载系统模型ecms_photo:图库系统模型enewsmemberadd:会员附加表
3. 字段输出:在模板中使用 $bqr[‘字段名’] 获取对应值,例如:
$bqr[‘title’]:标题$bqr[‘titleurl’]:链接$bqr[‘newstime’]:发布时间(可用date转换)$bqr[‘titlepic’]:缩略图
4. 时间格式化示例:
=date(‘Y-m-d’,$bqr[‘newstime’])?>
5. 安全性提醒:避免在SQL中拼接用户输入,防止注入风险;后台开启SQL调试可查看执行语句。
基本上就这些。掌握SQL写法后,帝国CMS的调用能力会大大增强,几乎可以实现任何内容展示需求。

评论(0)