dede标签快速手册

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

DedeCMS 标签快速手册

核心概念

DedeCMS 的模板引擎使用一种类似 XML 的标签语法,核心格式是 {dede:标签名 属性='值'}...{/dede:标签名}

dede标签快速手册
(图片来源网络,侵删)
  • 单标签:没有闭合标签,通常用于输出一个值,如 {dede:field.name/}
  • 双标签:有开始和结束标签,标签之间的内容可以作为循环或条件判断,如 {dede:arclist}{/dede:arclist}

核心必备标签

这些是构建任何一个 DedeCMS 网站都离不开的基础标签。

站点信息标签

用于在模板中调用网站的全局配置信息。

用途 示例
{dede:global.cfg_webname/} 网站名称 <title>{dede:global.cfg_webname/}</title>
{dede:global.cfg_weburl/} 网站首页URL <link rel="canonical" href="{dede:global.cfg_weburl/}" />
{dede:global.cfg_description/} 网站描述 <meta name="description" content="{dede:global.cfg_description/}" />
{dede:global.cfg_keywords/} 网站关键词 <meta name="keywords" content="{dede:global.cfg_keywords/}" />

字段标签

用于获取当前文档(文章、栏目等)的特定字段值,通常用在文章内容页 (article_article.htm) 或栏目列表页 (list_category.htm)。

用途 示例
{dede:field.title/} 当前文档标题 <h1>{dede:field.title/}</h1>
{dede:field.seotitle/} 当前文档SEO标题(标题后缀) <title>{dede:field.title/}_{dede:global.cfg_webname/}</title>
{dede:field.description function='html2text(@me)'/} 当前文档摘要,并过滤HTML标签 <meta name="description" content="{dede:field.description function='html2text(@me)'/}">
{dede:field.keywords/} 当前文档关键词 <meta name="keywords" content="{dede:field.keywords/}">
{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/} 发布时间,格式化输出 <span>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d",@me)'/}</span>
{dede:field.source/} 文章来源 <span>来源:{dede:field.source/}</span>
{dede:field.writer/} 文章作者 <span>作者:{dede:field.writer/}</span>
{dede:field.body/} 文章正文内容 <div class="content">{dede:field.body/}</div>
{dede:field.click/} 文章点击量 <span>点击:{dede:field.click/}</span>

循环标签

用于在列表页(首页、栏目页、搜索页等)循环输出文章列表。

dede标签快速手册
(图片来源网络,侵删)
用途 常用属性 示例
{dede:arclist} 文章列表循环标签 titlelen: 标题长度
row: 输出条数
typeid: 栏目ID (0表示所有)
orderby: 排序方式 (如 click, pubdate)
channelid: 频道ID
{dede:arclist titlelen='30' row='10' typeid='1' orderby='pubdate'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist}

{dede:arclist} 内部字段:

  • [field:title/]: 文章标题
  • [field:arcurl/]: 文章链接URL
  • [field:pubdate function='strftime("%Y-%m-%d",@me)'/]: 格式化后的发布时间
  • [field:click/]: 点击量
  • [field:description/]: 文章摘要
  • [field:litpic/]: 文章缩略图

高级与常用标签

栏目标签

用途 常用属性 示例
{dede:channel} 栏目列表循环标签 type: top (顶级栏目), son (下级栏目), self (同级栏目)
row: 输出条数
typeid: 父栏目ID
{dede:channel type='top'} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel}

{dede:channel} 内部字段:

  • [field:typename/]: 栏目名称
  • [field:typelink/]: 栏目链接URL

分页标签

用于在列表页生成分页导航。

用途 示例
{dede:pagelist listsize='4'/} 生成分页条 <div class="pagelist"> {dede:pagelist listsize='4'/} </div>

文章页导航标签页生成“上一篇”和“下一篇”链接。

用途 示例
{dede:prenext get='pre'/} 上一篇链接 <div class="prenext"> {dede:prenext get='pre'/} {dede:prenext get='next'/} </div>
{dede:prenext get='next'/} 下一篇链接

搜索表单标签

用于生成站内搜索的表单。

dede标签快速手册
(图片来源网络,侵删)
用途 示例
{dede:global.cfg_searchbox/} 生成搜索框HTML <form action="{dede:global.cfg_cmspath/}/search.php" method="get"> <input type="text" name="q" placeholder="请输入关键词"> <button type="submit">搜索</button> </form>

模板引擎常用函数

函数用于对标签输出的值进行二次处理,语法为 function='函数名(@me)'

函数 用途 示例
textln 截取文本,不包含HTML标签 {dede:field.description function='textln(@me,100)'/} (截取100个字符)
cn_substr 截取包含HTML的字符串 [field:description function='cn_substr(@me,100)'/]
strftime 格式化时间戳 {dede:field.pubdate function='strftime("%Y年%m月%d日",@me)'/}
Html2Text 将HTML文本转为纯文本 {dede:field.body function='Html2Text(@me)'/}
str_replace 字符串替换 [field:typelink function='str_replace("首页","Home",@me)'/]

实用技巧与示例

示例1:首页文章列表

<!-- 最新文章 -->
<h2>最新文章</h2>
<ul class="news-list">
    {dede:arclist row='8' titlelen='30' orderby='pubdate'}
    <li>
        <span class="date">[field:pubdate function='strftime("%m-%d",@me)'/]</span>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
    {/dede:arclist}
</ul>
<!-- 热门文章 -->
<h2>热门文章</h2>
<ul class="hot-list">
    {dede:arclist row='6' titlelen='25' orderby='click'}
    <li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
    {/dede:arclist}
</ul>

示例2:栏目列表页 (list_category.htm)

<h1>{dede:field.typename/}</h1>
<p>{dede:field.description/}</p>
<ul class="article-list">
    {dede:list pagesize='10'}
    <li>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <p class="info">
            <span>发布时间:[field:pubdate function='strftime("%Y-%m-%d",@me)'/]</span>
            <span>点击:[field.click/]</span>
        </p>
        <p class="desc">[field:description function='cn_substr(@me,200)'/]...</p>
    </li>
    {/dede:list}
</ul>
<!-- 分页 -->
<div class="page">
    {dede:pagelist listsize='4'/}
</div>

注意:在栏目列表页,文章循环标签使用的是 {dede:list},而不是 {dede:arclist}

示例3:调用指定栏目的子栏目

<h2>产品分类</h2>
<ul>
    {dede:channel type='son' typeid='2'} <!-- 假设2是“产品”栏目的ID -->
    <li><a href="[field:typelink/]">[field:typename/]</a></li>
    {/dede:channel}
</ul>

自定义标签

如果内置标签无法满足需求,你可以自定义PHP函数标签。

  1. /include/extend.func.php 中添加PHP函数

    // 示例:获取指定栏目的文章数量
    function GetArctypeNum($typeid) {
        global $dsql;
        $query = "SELECT COUNT(*) as num FROM `dede_archives` WHERE typeid = $typeid";
        $row = $dsql->GetOne($query);
        return $row['num'];
    }
  2. 在模板中调用

    本栏目共有 {dede:getarctypenum typeid='1'/} 篇文章

    (注意:此功能需要修改核心文件以支持,新版DedeCMS已简化,推荐使用更灵活的SQL查询标签)

SQL查询标签

这是最强大的自定义方式,可以直接执行SQL语句。

用途 示例
{dede:sql} 执行SQL查询并循环输出 {dede:sql sql='SELECT * FROM dede_archives WHERE typeid = 1 ORDER BY pubdate DESC LIMIT 10'} <li>[title]</li> {/dede:sql}

  • 基础:先掌握 globalfieldarclistchannel 四大金刚。
  • 进阶:学习 listpagelistprenext 和各种函数。
  • 灵活:善用 sql 标签解决复杂需求。
  • 参考:官方自带的模板是最好的学习范例,多看多模仿。

这份手册涵盖了80%以上的日常开发场景,希望对你有所帮助!

-- 展开阅读全文 --
头像
织梦导航为何突然变成两排了?
« 上一篇 04-16
Random C语言是什么?如何入门?
下一篇 » 04-16

相关文章

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

目录[+]