核心概念:它们是什么?

这两种模板定义了不同类型页面的“皮肤”和“布局”。

dedecms 封面模板 列表模板
(图片来源网络,侵删)
  1. 封面模板

    • 作用:用于显示一个频道(栏目)或内容的首页,你可以把它理解为一个“门面”“欢迎页”
    • :它不直接列出文章,而是以更宏观、更吸引人的方式展示该频道的信息,通常包括:
      • 频道/栏目名称和简介
      • 指定的一篇或多篇推荐文章/头条文章
      • 该频道下的子栏目列表
      • 该频道下的文章列表(通常数量较少,或者只展示特定条件的文章)
      • 相关的图片集、专题
    • 典型场景
      • 网站首页(通常设置为网站的“主站”封面)。
      • 一个产品大类(如“手机”频道)的介绍页,页面上展示几款热门手机和所有手机品牌的子分类。
      • 一个新闻频道(如“科技新闻”)的聚合页,展示最重要的几条科技新闻和新闻分类。
  2. 列表模板

    • 作用:用于显示一个频道(栏目)下的所有文章列表,你可以把它理解为一个“目录页”“文章索引页”
    • :它的核心功能就是罗列文章,通常包括:
      • 发布时间、作者、来源
      • 简介)
      • 点击量、评论数等辅助信息
      • 分页导航
    • 典型场景
      • 点击“手机”频道下的“苹果”子栏目后,进入的页面就是“苹果”这个栏目的列表页,里面会列出所有苹果手机的文章。
      • 网站首页的“最新文章”板块,虽然它也在首页,但它调用的是列表模板的标签来展示内容。

关键区别:一张图看懂

特性 封面模板 列表模板
核心功能 展示频道概览,吸引访客,提供入口 罗列文章索引,方便访客查找和浏览
页面布局 灵活多样,可以包含大图、轮播图、图文混排等 相对规整,通常是标题列表、摘要列表等形式
使用场景 频道首页、专题页、自定义的欢迎页 栏目下的文章列表页、搜索结果页等
典型标签 {dede:arclist} (调用推荐文章), {dede:channel} (调用子栏目) {dede:list} (核心标签,用于循环列出文章)
模板文件 templets/default/default.htm (默认首页封面) templets/default/article_list.htm (默认列表页)

如何创建和使用?

步骤 1:在后台创建模板文件

  1. 登录 DedeCMS 后台。
  2. 菜单栏找到 “模板” -> “模板管理”
  3. 在左侧选择你的网站目录(默认是 default)。
  4. 点击右上角的 “增加模板”
  5. 创建封面模板
    • 模板名称:填写一个你容易识别的名字,如 index_cover.htm
    • 模板类型:选择 “封面模板”
    • :编写你的 HTML 和 DedeCMS 标签代码。
    • 点击 “保存”
  6. 创建列表模板
    • 模板名称:填写一个名字,如 article_list.htm
    • 模板类型:选择 “列表模板”
    • :编写你的 HTML 和 DedeCMS 标签代码。
    • 点击 “保存”

步骤 2:将模板分配给栏目

这是最关键的一步!模板文件本身不会生效,必须把它“挂载”到具体的栏目上。

  1. 菜单栏找到 “频道模型” -> “栏目管理”
  2. 点击你想要设置的那个栏目(手机”)的 “[更改]”“[修改]” 链接。
  3. 在弹出的栏目编辑页面中,找到 “高级选项” 标签页。
  4. “列表模板选项” 部分:
    • 封面模板:从下拉菜单中选择你刚刚创建的封面模板(如 index_cover.htm)。
    • 列表模板:从下拉菜单中选择你刚刚创建的列表模板(如 article_list.htm)。
  5. 点击 “确定” 保存。

当你访问这个“手机”栏目时,DedeCMS 就会自动调用你设置的封面模板,当你点击它的子栏目或进入“下一页”时,就会调用列表模板。

dedecms 封面模板 列表模板
(图片来源网络,侵删)

核心标签详解

封面模板常用标签

封面模板主要用来“展示”,所以常用的是 arclistchannel

  • {dede:arclist}:万能的文章列表标签,在封面模板中用来调用推荐、头条等特定文章。

    • 常用属性
      • row:调用文章数量。
      • titlelen长度。
      • orderby:排序方式(如 pubdate 按发布时间,click 按点击量)。
      • typeid:指定栏目ID,调用某个栏目下的文章。
      • flag:指定文章属性,如 h (头条), c (推荐), p (图片)。
    • 示例:调用“手机”栏目(ID=3)下的5篇推荐文章。
      {dede:arclist typeid='3' flag='c' row='5' titlelen='30'}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        </li>
      {/dede:arclist}
  • {dede:channel}:用于调用栏目列表,常用于展示子栏目。

    • 常用属性
      • typeid:指定从哪个栏目开始调用(通常填当前栏目ID {dede:field.id/})。
      • row:调用栏目数量。
      • type='son':调用子栏目。
    • 示例:调用当前栏目的所有子栏目。
      {dede:channel type='son' typeid='{dede:field.id/}'}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
      {/dede:channel}

列表模板核心标签

列表模板只有一个核心标签,但它是循环生成列表的关键。

  • {dede:list}:列表页的“灵魂”,用于循环列出当前栏目下的所有文章。

    dedecms 封面模板 列表模板
    (图片来源网络,侵删)
    • 重要{dede:list} 标签内部必须有一个 {listpages} 标签来生成分页代码。

    • 内部字段:通过 [field:字段名/] 来获取文章的各个信息。

    • 常用内部字段

      • [field:title]
      • [field:arcurl]:文章链接
      • [field:pubdate]:发布时间
      • [field:description]:文章摘要
      • [field:click]:点击量
      • [field:writer]:作者
    • 示例:一个完整的列表页模板结构。

      <!DOCTYPE html>
      <html>
      <head>
        <title>{dede:field.title/}_{dede:global.cfg_webname/}</title>
      </head>
      <body>
        <h1>{dede:field.title/}</h1>
        <p>{dede:field.description/}</p>
        <ul class="article-list">
            {dede:list pagesize='10'}  <!-- pagesize控制每页显示10条 -->
                <li>
                    <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
                    <div class="info">
                        发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/] &nbsp;&nbsp;
                        作者:[field:writer/] &nbsp;&nbsp;
                        点击:[field:click/]
                    </div>
                    <p class="summary">[field:description/]...</p>
                </li>
            {/dede:list}
        </ul>
        <!-- 分页代码,必不可少! -->
        <div class="page-nav">
            {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
            </div>
        </div>
      </body>
      </html>

实战演练:一个简单的栏目

假设我们要做一个“公司新闻”栏目。

  1. 创建模板文件

    • 在后台创建一个名为 news_cover.htm封面模板如下:
      <h1>公司新闻</h1>
      <p>这里是公司新闻频道的首页,展示最重要的新闻。</p>

    【最新新闻】

      {dede:arclist typeid='新闻栏目ID' row='5' titlelen='40'}
    • [field:title/]
    • {/dede:arclist}

    【新闻分类】

      {dede:channel type='son' typeid='新闻栏目ID'}
    • [field:typename/]
    • {/dede:channel}
    ```
    • 再创建一个名为 news_list.htm列表模板就是上面 list 标签的示例代码。
  2. 分配模板

    • 进入“栏目管理”,找到“公司新闻”栏目。
    • 修改其属性,将封面模板指向 news_cover.htm列表模板指向 news_list.htm
  3. 查看效果

    • 访问“公司新闻”栏目链接,看到的是 news_cover.htm 的布局。
    • 点击其中的任意一个子分类(如果有的话),或者点击页脚的“下一页”,页面会跳转到由 news_list.htm 生成的、包含所有新闻文章的列表页。
  • 封面模板 = “门面”,用于展示频道精华,吸引用户深入浏览。
  • 列表模板 = “目录”,用于罗列所有内容,方便用户查找。

通过灵活运用这两种模板和它们对应的标签,你可以构建出结构清晰、内容丰富的网站,多练习、多模仿现有网站的布局,很快就能熟练掌握。