什么是 Dedecms 主题模板?

DedeCMS 的主题模板就是一套用于控制网站外观和布局的文件集合,它决定了你的网站长什么样,包括:

dedecms主题模板
(图片来源网络,侵删)
  • 页面布局:头部、导航、主体内容、侧边栏、页脚等。
  • 内容样式、字体、颜色、图片大小等。
  • 交互元素:搜索框、评论表单等。

这些模板文件主要由 HTML 代码和 DedeCMS 的模板标签 混合而成。


模板文件的基本结构

一个标准的 DedeCMS 主题(在 /templets/ 目录下)通常包含以下几个核心部分:

  1. index.html:网站首页模板。
  2. article_article.htm页模板(article 是栏目ID,article 是文章页的默认标识)。
  3. list_category.htm:栏目列表页模板(category 是栏目ID)。
  4. search.htm:搜索结果页模板。
  5. head.htm:公共头部模板,通常包含 <head> 标签、网站标题、Logo、主导航等,可以在其他模板中通过 {include file='head.htm'} 引用。
  6. footer.htm:公共底部模板,通常包含版权信息、友情链接、统计代码等,同样可以 {include file='footer.htm'} 引用。

重要目录:

  • /templets/:存放所有模板文件。
  • /templets/default/:DedeCMS 自带的默认主题模板。
  • /templets/你的主题名/:你自己创建和修改的主题模板。

核心模板标签详解

这是 DedeCMS 模板的精髓,这些标签就像函数一样,在模板被解析时会被替换成实际的数据。

dedecms主题模板
(图片来源网络,侵删)

全局标签

这些标签可以在任何模板文件中使用。

  • {dede:global.cfg_webname/}:获取网站后台设置的“网站名称”。
  • {dede:global.cfg_weburl/}:获取网站地址。
  • {dede:global.cfg_description/}:获取网站描述。
  • {dede:global.cfg_keywords/}:获取网站关键词。

首页常用标签

  • {dede:arclist}:文章列表标签,用于首页、栏目页等调用文章。

    • 常用属性
      • typeid: 指定栏目ID,调用该栏目下的文章。typeid='0' 表示调用所有栏目。
      • titlelen: 标题长度,如 titlelen='30'
      • row: 调用文章数量,如 row='10'
      • col: 每行显示数量,col='1' 表示单列。
      • orderby: 排序方式,如 orderby='hot' (按点击量), orderby='pubdate' (按发布日期)。
    • 底层模板字段:在 {dede:arclist}/dede:arclist 之间,可以使用字段变量。
      • [field:title/]
      • [field:arcurl/]:文章链接。
      • [field:pubdate function="MyDate('Y-m-d',@me)"/]:发布日期,使用 function 进行格式化。
      • [field:click/]:点击次数。
      • [field:litpic/]:文章缩略图。

    示例:调用首页最新5篇文章

    {dede:arclist row='5' titlelen='30' orderby='pubdate'}
      <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
      </li>
    {/dede:arclist}
  • {dede:channel}:栏目列表标签,用于调用一级栏目。

    dedecms主题模板
    (图片来源网络,侵删)
    • 常用属性
      • type='top':仅调用顶级栏目。
      • row='10':调用栏目数量。
    • 底层模板字段
      • [field:typename/]:栏目名称。
      • [field:typeurl/]:栏目链接。

    示例:调用主导航

    <nav>
      {dede:channel type='top'}
        <a href="[field:typeurl/]">[field:typename/]</a>
      {/dede:channel}
    </nav>

列表页常用标签

列表页通常使用 list_*.htm 文件。

  • {dede:list}:列表页内容标签,功能和 arclist 类似,但分页功能更强大。

    • 常用属性
      • pagesize: 每页显示文章数。
    • 底层模板字段:与 arclist 相同。

    示例:列表页文章循环

    {dede:list pagesize='10'}
      <div class="post">
        <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
        <div class="info">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</div>
        <p>[field:description/]...</p>
      </div>
    {/dede:list}
  • {dede:pagelist}:分页标签,用于生成分页导航。

    • 常用属性
      • listsize: 显示的页码数量。
      • listitem: 显示的分页项,如 listitem='index,pre,next,end,option'

    示例:列表页分页

    <div class="pagelist">
      {dede:pagelist listitem='index,pre,next,end,option' listsize='5'/}
    </div>

页常用标签

页通常使用 article_*.htm 文件。

  • {dede:field}:获取文章的单个字段。

    • 常用属性
      • name: 字段名。
    • 常用字段
      • {dede:field.title/}
      • {dede:field.pubdate function="MyDate('Y-m-d H:i:s',@me)"/}:发布时间。
      • {dede:field.source/}:文章来源。
      • {dede:field.writer/}:文章作者。
      • {dede:field.click/}:点击次数。
      • {dede:field.body/}:文章正文内容(重要)。

    示例:文章内容页头部

    <h1>{dede:field.title/}</h1>
    <div class="article-info">
      <span>发布时间:{dede:field.pubdate function="MyDate('Y-m-d',@me)"/}</span>
      <span>点击:{dede:field.click/}</span>
    </div>
  • {dede:field name='body'/}:这是最重要的标签,它会输出文章编辑器里的所有内容。


如何创建和修改一个主题模板?

步骤 1:复制默认主题 最安全的方法是先复制 /templets/default/ 文件夹,重命名为你自己的主题名,mytheme

步骤 2:修改模板文件 用代码编辑器(如 VS Code, Sublime Text, Dreamweaver)打开 /templets/mytheme/ 下的模板文件(如 index.html)。

  1. 搭建 HTML 结构:用普通的 HTML 和 CSS 搭建出你想要的页面布局。
  2. 替换静态内容为动态标签
    • <title>我的网站</title> 替换为 {dede:global.cfg_webname/}
    • 将导航栏的 <a href="#">首页</a> 替换为 {dede:channel type='top'}<a href="[field:typeurl/]">[field:typename/]</a>{/dede:channel}
    • 将文章列表的静态 HTML 替换为 {dede:arclist}...{/dede:arclist} 循环。
  3. 引入公共文件:将重复的头部和底部代码提取出来,分别保存为 head.htmfooter.htm,然后在其他模板中使用 {include file='head.htm'}{include file='footer.htm'} 引入。

步骤 3:后台设置主题 登录 DedeCMS 后台,进入 “系统” -> “系统基本参数” -> “核心设置”,找到 “默认模板风格” 选项,选择你刚刚创建的 mytheme

步骤 4:生成和更新 修改完模板后,需要在后台的 “生成” 菜单下重新生成相应的页面(如首页、栏目页、文章页),新的样式才会生效。


常用模板技巧

  1. 判断标签:使用 if/else 逻辑。

    {dede:field name='typeid' runphp='yes'}
      if(@me == 5) {
        @me = "<span class='current'>关于我们</span>";
      } else {
        @me = "<a href='/about/'>关于我们</a>";
      }
    {/dede:field}
  2. 自定义函数:在 include/extend.func.php 文件中添加自定义 PHP 函数,然后在模板中调用。

    // 在 extend.func.php 中
    function subtext($text, $length) {
      if(mb_strlen($text, 'UTF-8') > $length) {
        return mb_substr($text, 0, $length, 'UTF-8').'...';
      }
      return $text;
    }
    // 在模板中调用
    [field:description function="subtext(@me, 100)"/]
  3. 调用子栏目:在列表页调用当前栏目的子栏目。

    {dede:channel type='son' typeid=''}
      <a href="[field:typeurl/]">[field:typename/]</a>
    {/dede:channel}

资源和社区

  • 官方模板库:DedeCMS 官网会提供一些官方和认证的模板。
  • 第三方模板网站:如 Dedecms 模板吧、站长素材等网站有大量免费的和付费的商业模板。
  • 开发者社区:CSDN、博客园、知乎等平台上有大量关于 DedeCMS 模板开发的教程和问答。

DedeCMS 的模板系统虽然有其特定的语法,但一旦掌握了核心标签和文件结构,修改和创建一个个性化主题就变得非常直接,关键在于 “模仿、修改、理解”,从默认主题开始,逐步替换和调整,最终达到你想要的效果。