dede织梦标签如何正确调用与使用?

99ANYc3cd6
预计阅读时长 36 分钟
位置: 首页 DEDE建站 正文

什么是 DedeCMS 调用标签?

DedeCMS 调用标签是一种类似于 HTML 标签的专用代码,它被放在模板文件(.htm)中,当网站页面被访问时,DedeCMS 的解析引擎会识别这些标签,并根据标签的指令从数据库中提取相应的数据,最终将动态内容渲染到页面上。

dede织梦调用标签
(图片来源网络,侵删)

基本语法格式: {dede:标签名 属性='值' /}

  • {dede:...}:标签的开始和结束。
  • 标签名:要执行的具体功能,如 arclist (文章列表)、arctitle (文章标题) 等。
  • 属性:控制标签行为的关键字和值,如 typeid (栏目ID)、row (调用条数) 等。
  • 表示这是一个单标签,没有中间内容。

最常用、最核心的标签实例

文章列表调用 ({dede:arclist})

这是最最常用的标签,用于在首页、列表页等地方调用文章列表。

场景:在首页调用最新发布的 10 篇文章。

<ul class="news-list">
  {dede:arclist row='10' titlelen='30' orderby='pubdate'}
  <li>
    <span class="date">[field:pubdate function="MyDate('m-d', @me)"/]</span>
    <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
  </li>
  {/dede:arclist}
</ul>

常用属性说明:

dede织梦调用标签
(图片来源网络,侵删)
属性名 说明 示例
typeid 指定栏目ID,调用该栏目下的文章,多个ID用逗号隔开。 typeid='1,2'
row 调用文章的数量。 row='8'
infolen 描述/摘要长度。 infolen='100'
orderby 排序方式,常用值:pubdate(发布日期)、click(点击量)、id(ID)、rand(随机)。 orderby='click'
orderway 排序方向。desc(降序)、asc(升序)。 orderway='desc'
channelid 指定模型ID,1为文章。 channelid='1'
flag 特殊属性。h (头条)、c (推荐)、p (图片)、j (跳转),多个用 隔开。 flag='h|c' (调用头条和推荐)

常用字段说明 (通过 [field:xxx/] 调用):

字段名 说明
[field:title/]
[field:arcurl/] 文章链接
[field:pubdate/] 发布日期 (时间戳格式)
[field:description/] 文章摘要
[field:litpic/] 文章缩略图
[field:click/] 文章点击量
[field:id/] 文章ID

日期格式化: [field:pubdate function="MyDate('Y-m-d H:i:s', @me)"/]

  • @me:代表当前字段的原始值(这里是时间戳)。
  • MyDate():DedeCMS 的内置函数。
  • 'Y-m-d H:i:s':PHP 的日期格式化字符。

页调用 ({dede:field})

页(article_article.htm)使用,用于获取当前文章的详细信息。

场景:在文章页显示标题、发布时间、来源、点击量等。

dede织梦调用标签
(图片来源网络,侵删)
<h1>{dede:field.title/}</h1>
<div class="article-info">
  <span>发布时间:{dede:field.pubdate function='GetDateTime(@me)'/}</span>
  <span>来源:{dede:field.source/}</span>
  <span>作者:{dede:field.writer/}</span>
  <span>点击:<script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field.aid/}&mid={dede:field.mid/}" type='text/javascript' language="javascript"></script> 次</span>
</div>
<div class="article-content">
  {dede:field.body/}
</div>

常用字段说明:

字段名 说明
{dede:field.title/} 当前文章标题
{dede:field.pubdate/} 发布日期
{dede:field.shorttitle/}
{dede:field.description/} 文章摘要
{dede:field.body/} 文章正文内容
{dede:field.source/} 来源
{dede:field.writer/} 作者
{dede:field.aid/} 当前文章ID,非常重要!
{dede:field.typename/} 当前文章所在的栏目名称

栏目导航调用 ({dede:channel})

用于生成网站的栏目导航菜单。

场景:调用顶级栏目。

<nav>
  <ul>
    {dede:channel type='top' row='8'}
    <li><a href="[field:typelink/]">[field:typename/]</a></li>
    {/dede:channel}
  </ul>
</nav>

常用属性说明:

属性名 说明 示例
typeid 指定从哪个栏目开始调用。 typeid='0' (从顶级开始)
type 栏目类型。top (顶级栏目)、son (下级栏目)、self (同级栏目)。 type='top'
row 调用栏目数量。 row='10'

当前栏目信息调用 ({dede:field})

在列表页(list_栏目ID.htm)使用,用于获取当前栏目的信息。

场景:在列表页显示当前栏目的名称和描述。

<div class="category-info">
  <h2>{dede:field.typename/}</h2>
  <p>{dede:field.description/}</p>
</div>

常用字段说明:

字段名 说明
{dede:field.typename/} 当前栏目名称
{dede:field.description/} 当前栏目描述
{dede:field.seotitle/} 当前栏目SEO标题
{dede:field.typelink/} 当前栏目链接

友情链接调用 ({dede:flink})

用于调用网站后台设置的友情链接。

场景:在页脚显示友情链接。

<div class="friend-links">
  <h3>友情链接</h3>
  {dede:flink row='24' type='text' titlelen='24'}
  <a href="[field:url/]" target="_blank">[field:name/]</a>
  {/dede:flink}
</div>

常用属性说明:

属性名 说明 示例
typeid 指定链接分类ID。 typeid='1'
row 调用链接数量。 row='20'
type 显示类型。text (文字)、image (图片)。 type='text'

调用 ({dede:myad} / {dede:sql})

  • 广告调用 ({dede:myad})

    场景:在页面指定位置调用后台添加的广告位。

    {dede:myad name='topbanner'/}

    name 的值是后台广告位管理中设置的“广告位标识”。

  • 任意SQL查询调用 ({dede:sql})

    场景:调用某个特定条件下的文章,或者调用自定义表单的数据等(高级用法)。

    示例1:调用ID为 10 的栏目下的最新5篇文章

    {dede:sql sql='Select * from dede_archives where typeid=10 order by pubdate desc limit 0,5'}
    <a href='/plus/view.php?aid=[field:id/]'>[field:title/]</a><br>
    {/dede:sql}

    注意:直接使用 sql 标签有安全风险,请确保你的SQL语句是安全的,并且对用户输入进行了严格过滤。


高级技巧与常用组合

循环嵌套:调用子栏目及其下的文章

这是一个非常经典的需求,比如在首页显示每个一级栏目,并附带该栏目下的几篇文章。

{dede:channel type='top' row='8'}
  <dl>
    <dt><a href="[field:typelink/]">[field:typename/]</a></dt>
    <dd>
      {dede:arclist flag='c' row='5' titlelen='20' typeid='[field:id]'}
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
      {/dede:arclist}
    </dd>
  </dl>
{/dede:channel}

关键点:在 arclist 中使用 typeid='[field:id]',这里的 [field:id] 是外层 {dede:channel} 循环中当前栏目的ID,从而实现了动态调用子栏目文章。

判断与条件输出 (if 语法)

在文章列表中,有时想对特定文章(如头条、图片集)进行特殊处理。

{dede:arclist row='5'}
  <li>
    <!-- 如果是头条 -->
    [field:flag runphp='yes']
      if(@me=='h') @me = "<span class='headline'>[头条]</span>";
      else @me = "";
    [/field:flag]
    <!-- 如果是图片集 -->
    [field:flag runphp='yes']
      if(strpos(@me,'p') !== false) @me = "<span class='pic'>[图]</span>";
      else @me = "";
    [/field:flag]
    <a href="[field:arcurl/]">[field:title/]</a>
  </li>
{/dede:arclist}

runphp='yes':让标签支持PHP代码。 @me:代表当前字段的原始值,在 if 判断中,修改 @me 的值就等于修改了最终的输出。

分页标签 ({dede:pagelist})

在列表页(list_*.htm)底部使用,用于生成分页导航。

<div class="page-nav">
  {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
  </div>

常用属性说明:

属性名 说明
listsize 显示的页码链接数量。
listitem 显示的分页项。info(页数信息)、index(首页)、pre(上一页)、next(下一页)、end(尾页)、pageno(页码)。

实战案例:首页布局示例

<!DOCTYPE html>
<html>
<head>{dede:global.cfg_webname/}</title>
  <meta name="description" content="{dede:global.cfg_description/}">
  <meta name="keywords" content="{dede:global.cfg_keywords/}">
</head>
<body>
  <!-- 顶部导航 -->
  <header>
    {dede:channel type='top' row='8'}
      <a href="[field:typelink/]">[field:typename/]</a>
    {/dede:channel}
  </header>
  <!-- 轮播图/焦点图 -->
  {dede:myad name='index_focus'/}
  <!-- 左侧主内容区 -->
  <div class="main-content">
    <!-- 栏目一:公司新闻 (调用ID为1的栏目下的文章) -->
    <div class="news-box">
      <div class="box-title">
        <h2><a href="/plus/list.php?tid=1">公司新闻</a></h2>
        <a href="/plus/list.php?tid=1" class="more">更多+</a>
      </div>
      <ul>
        {dede:arclist typeid='1' row='5' titlelen='30' orderby='pubdate'}
          <li><span>[field:pubdate function="MyDate('m-d', @me)"/]</span><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
      </ul>
    </div>
    <!-- 栏目二:产品中心 (调用ID为2的栏目下的文章,带缩略图) -->
    <div class="product-box">
      <div class="box-title">
        <h2><a href="/plus/list.php?tid=2">产品中心</a></h2>
        <a href="/plus/list.php?tid=2" class="more">更多+</a>
      </div>
      <ul>
        {dede:arclist typeid='2' row='4' titlelen='20' orderby='pubdate' imgwidth='120' imgheight='90'}
          <li>
            <a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]"></a>
            <a href="[field:arcurl/]">[field:title/]</a>
          </li>
        {/dede:arclist}
      </ul>
    </div>
  </div>
  <!-- 右侧边栏 -->
  <div class="sidebar">
    <!-- 关于我们 -->
    <div class="widget">
      <h3>关于我们</h3>
      {dede:field name='description' runphp='yes'}
        $str = @me;
        @me = cn_substr($str, 200); // 截取200个字符
      {/dede:field}
    </div>
    <!-- 联系我们 -->
    <div class="widget">
      <h3>联系我们</h3>
      <p>电话:{dede:global.cfg_tel/}</p>
      <p>邮箱:{dede:global.cfg_email/}</p>
    </div>
    <!-- 友情链接 -->
    <div class="widget">
      <h3>友情链接</h3>
      {dede:flink type='text'/}
    </div>
  </div>
  <!-- 页脚 -->
  <footer>
    <p>&copy; {dede:global.cfg_powerby/} - {dede:global.cfg_webname/}</p>
  </footer>
</body>
</html>
  • 熟能生巧:DedeCMS 的标签虽然多,但最核心的就是 arclistfield,掌握了这两个,就能完成大部分网站搭建工作。
  • 善用官方文档:DedeCMS 有非常详细的官方文档,遇到不熟悉的标签或属性,随时查阅是最好的方法。
  • 安全第一:在使用 sql 标签时,务必小心,防止SQL注入攻击。
  • 命名规范:给栏目、文章、广告位等取一个清晰、规范的“标识”(name),方便在模板中调用。

希望这份详细的指南能帮助您更好地掌握 DedeCMS 的标签调用!

-- 展开阅读全文 --
头像
织梦程序搭建网站步骤有哪些?
« 上一篇 今天
dede友情链接怎么设置?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]