两者都是国内非常流行的PHP开源CMS系统,虽然底层逻辑和设计理念不同,但都采用了模板与程序分离的架构,理解它们的标签系统是进行二次开发和模板制作的关键。

核心思想对比
在深入具体标签前,先理解它们的核心差异,这能帮助你快速上手:
| 特性 | 帝国CMS | 织梦CMS |
|---|---|---|
| 标签哲学 | 函数式:标签本质上是PHP函数的封装,更像是在调用程序接口。 | 标签式:标签更接近一个完整的、自包含的语言块,功能强大,结构清晰。 |
| 灵活性 | 相对灵活:可以直接在模板中嵌入少量PHP代码(<?php ... ?>),对有PHP基础的开发者更友好。 |
相对封闭:官方不推荐在模板中写PHP,强调通过标签和底层函数来实现,安全性更高。 |
| 学习曲线 | 对于熟悉PHP的开发者来说,入门快,对于纯前端,需要理解函数参数。 | 标签语法更规范、统一,初学者更容易记住和使用。 |
| 适用场景 | 对灵活性要求高,需要快速调用各种数据接口的场景。 | 展示、SEO优化,以及标签化、模块化开发的场景。 |
帝国CMS 模板标签
帝国CMS的标签通常以 <?php 开头,以 ?> 内部调用 e 函数或直接使用PHP函数。
信息调用标签(最常用)
这是列表页、首页调用文章的核心。
基本语法:
<?php $ecms_bq_sql=sys_ReturnEcmsLoopBq("查询条件"); $bqno=0; while($bqr=$empire->fetch($ecms_bq_sql)) { $bqsr=$empire->fetch1("select * from {$dbtbpre}enewsuser where userid='$bqr[userid]'"); $bqno++; ?>
**
[!--class.title--] (栏目名)
[!--bq.title--] (文章标题)
[!--bq.titleurl--] (文章链接)
[!--bq.smalltext--] (文章简介)
[!--bq.newstime--] (发布时间)
[!--bq classname--] (栏目名)
[!--bq.userid--] (发布者ID)
[!--bq.username--] (发布者名)

示例:调用最新10条资讯
<ul>
<?php
$ecms_bq_sql = sys_ReturnEcmsLoopBq("select * from [!db.pre!]ecms_news order by newstime desc limit 10");
$bqno = 0;
while($bqr = $empire->fetch($ecms_bq_sql)) {
$bqno++;
?>
<li>
<a href="[!--bq.titleurl--]">[!--bq.title--]</a>
<span>[!--bq.newstime--]</span>
</li>
<?php
} // 结束while循环
?>
</ul>
常用查询条件说明:
select * from [!db.pre!]ecms_news:从新闻数据表查询。order by newstime desc:按发布时间倒序。limit 10:限制输出10条。where classid in (1,2,3):指定栏目ID。where title like '%关键词%'包含关键词。
栏目导航标签
父栏目循环:
<?php
$ecms_bq_sql = sys_ReturnEcmsLoopBq("select * from [!db.pre!]enewsclass where bclassid=0 order by myorder");
while($bqr = $empire->fetch($ecms_bq_sql)) {
?>
<a href="[!--bq.classurl--]">[!--bq.classname--]</a>
<!-- 调用子栏目 -->
<?php
$s_ecms_bq_sql = sys_ReturnEcmsLoopBq("select * from [!db.pre!]enewsclass where bclassid={$bqr[classid]} order by myorder");
while($s_bqr = $empire->fetch($s_ecms_bq_sql)) {
?>
<a href="[!--s_bqr.classurl--]">[!--s_bqr.classname--]</a>
<?php } ?>
<?php } ?>
变量与系统变量
- 全局变量:
$GLOBALS或$public_r$GLOBALS[newsurl]:网站首页地址$public_r[newsurl]:同上
- 页面变量:
- :
<?=$GLOBALS[navinfor]['title']?> 栏目名:<?=$GLOBALS[navclassid]?'栏目名':''?>
- :
织梦CMS 模板标签
织梦的标签结构化更强,以 {dede:} 开头,以
信息调用标签(最常用)
基本语法:
{dede:arclist 标签属性1='值1' 标签属性2='值2'} ... {/dede:arclist}
常用标签属性:
typeid: 栏目ID,多个用逗号隔开。row: 调用条数,len`: 标题长度。infolen: 内容摘要长度。orderby: 排序方式,如click(点击量),pubdate(发布时间),id(ID)。orderway: 排序方式,desc(降序),asc(升序)。
字段说明(在标签内使用):
field.title: 文章标题field.titleurl: 文章链接field.description: 文章摘要field.pubdate: 发布时间 (时间戳)field.click: 点击量field.typeid: 栏目IDfield.typename: 栏目名
示例:调用最新10条资讯
<ul>
{dede:arclist typeid='1' row='10' titlelen='30' orderby='pubdate' orderway='desc'}
<li>
<a href="[field:titleurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
注意:织梦的时间戳通常需要用
function进行格式化,如MyDate('Y-m-d', @me)。
栏目导航标签
一级栏目循环:
{dede:channel type='top' row='8'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
带子栏目的二级菜单:
{dede:channelartlist typeid='top'}
<li>
<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>
<ul>
{dede:channel type='son' noself='yes'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
</li>
{/dede:channelartlist}
变量与系统变量
- 全局变量:通过
global标签获取。{dede:global.cfg_webname/}:网站名称{dede:global.cfg_weburl/}:网站首页地址
- 页面变量页模板中直接使用。
- :
{dede:field.title/} 栏目名:{dede:field.typename/}- :
{dede:field.body/}
- :
其他常用标签
- 分页标签:
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}/} - 调用友情链接:
{dede:flink row='24' linktype='image'/} - 调用指定广告位:
{dede:myad name='广告位标识'/}
对比总结与选择建议
| 功能点 | 帝国CMS 写法 | 织梦CMS 写法 | 特点对比 |
|---|---|---|---|
| 调用文章列表 | <?php $ecms_bq_sql=...; while($bqr=...) { ... } ?> |
{dede:arclist typeid='' row='' ...} ... {/dede:arclist} |
帝国:PHP循环,灵活但代码量大。 织梦:单标签,简洁易读。 |
| 获取文章标题 | [!--bq.title--] |
[field:title/] |
织梦的 field: 前缀更明确。 |
| 获取文章链接 | [!--bq.titleurl--] |
[field:titleurl/] |
功能一致,形式不同。 |
| 获取栏目列表 | sys_ReturnEcmsLoopBq("select... from enewsclass") |
{dede:channel type='top' ...} ... {/dede:channel} |
帝国:需要写SQL,灵活性高。 织梦:专用标签,安全且方便。 |
| 获取网站名称 | <?=$GLOBALS[newsurl]?> |
{dede:global.cfg_webname/} |
织梦的变量系统更统一和规范。 |
| 时间格式化 | <?=date('Y-m-d', $bqr[newstime])?> |
[field:pubdate function="MyDate('Y-m-d',@me)"/] |
织梦通过 function 属性调用底层函数,不破坏模板结构。 |
如何选择?
-
选择帝国CMS,如果你:
- 是一名PHP开发者,习惯于用代码思维解决问题。
- 项目有复杂的数据查询需求,需要直接操作SQL。
- 需要极高的模板灵活性,不排斥在模板中写少量PHP。
- 追求极致的性能,因为其标签开销极小。
-
选择织梦CMS,如果你:
- 是一名前端或网页制作者,希望模板代码干净、易维护。
- 展示为主,如企业官网、新闻门户、博客等。
- 非常注重SEO,织梦的标签系统对SEO非常友好。
- 希望团队协作时,模板和程序分离得更彻底,降低安全风险。
两者都是非常优秀的CMS系统,标签系统的差异反映了它们不同的设计哲学:帝国CMS更偏向“程序工具”,而织梦CMS更偏向“内容框架”,根据你的技术背景和项目需求来选择最合适的即可。
