DedeCMS 的专题功能是一个非常强大的内容聚合和专题展示工具,它允许你将不同栏目、不同文章甚至外部链接,按照一个特定的主题集中展示出来,非常适合制作年终盘点、活动专题、系列报道等。

(图片来源网络,侵删)
专题的基本工作原理
在深入了解模板之前,先理解专题是如何工作的,这有助于你更好地修改模板。
- 创建专题:在后台“专题管理”中创建一个专题,并设置专题的基本信息,如标题、简介、封面等。
- :向专题中添加内容,内容来源可以是:
- 本站文章:从网站的任意栏目中选择文章加入。
- 外部链接:添加一个外部网址。
- :直接在专题中编写一段文字或上传一个图片。
- 模板调用:通过特定的模板标签(如
{dede:arclist}),系统会自动从你选定的内容中提取数据,并按照你设定的专题模板进行渲染,最终生成专题页面。
专题模板文件的位置
DedeCMS 的专题模板文件存放在 /templets/ 目录下,默认情况下,系统会使用一个通用的专题模板。
- 默认专题模板目录:
/templets/default/ - 默认专题模板文件:
special.htm
当你创建一个专题并保存时,系统会自动在 /templets/default/ 目录下生成一个以专题ID命名的HTML文件,special_1.htm,这个文件就是最终生成的静态专题页面。
默认专题模板 (special.htm) 的结构解析
打开 /templets/default/special.htm 文件,你会发现它的结构和普通的内容页面(如 article_article.htm)非常相似,主要由以下几部分构成:

(图片来源网络,侵删)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:field.description function='html2text(@me)'/}">
<meta name="keywords" content="{dede:field.keywords/}">
<link href="{dede:global.cfg_cmsurl/}/templets/default/css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="top">
<!-- 这里是网站顶部,通常包含logo、搜索框等 -->
</div>
<div class="main">
<!-- 左侧主要内容区 -->
<div class="left">
<!-- 专题头部信息 -->
<div class="special-title">
<h1>{dede:field.title/}</h1>
<p class="special-info">发布时间:{dede:field.senddate function='MyDate(@me, 'Y-m-d')'/} 作者:{dede:field.writer/}</p>
<div class="special-description">
{dede:field.description/}
</div>
</div>
<!-- 专题封面图 -->
{dede:field name='imgurl'/}
<!-- 专题内容列表 - 这是核心部分 -->
<div class="special-content">
{dede:arclist titlelen='40' row='20'}
<div class="item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me, 150)'/]...</p>
<div class="info">阅读([field.click/]) | [field:pubdate function='MyDate(@me, 'Y-m-d')'/]</div>
</div>
{/dede:arclist}
</div>
<!-- 分页标签 -->
<div class="page">
{dede:pagelist listsize='4'/}
</div>
</div>
<!-- 右侧边栏 -->
<div class="right">
<!-- 热门专题推荐 -->
<div class="sidenav">
<h3>推荐专题</h3>
{dede:sql sql="SELECT title,id FROM dede_special WHERE ismake=1 order by id DESC limit 0,10"}
<li><a href='[field:global name='cfg_cmspath'/]/special/index.php?id=[field:id/]'>[field:title/]</a></li>
{/dede:sql}
</div>
<!-- 其他边栏模块,如热门文章、最新评论等 -->
</div>
</div>
<div class="footer">
<!-- 网站底部信息 -->
</div>
</body>
</html>
核心标签详解
专题基本信息标签
这些标签用于显示专题本身的元数据。
{dede:field.title/}:专题的标题。{dede:field.description/}:专题的简介(支持HTML)。{dede:field.keywords/}:专题的关键词。{dede:field.senddate function='MyDate(@me, 'Y-m-d')'/}:专题的创建时间,function用于格式化日期。{dede:field.writer/}:专题的发布者。{dede:field name='imgurl'/}:专题的封面图。注意:这个标签在默认模板中可能只是一个占位符,实际效果取决于你在后台上传的封面图是否被正确调用,更常用的方式是直接在后台设置封面图,然后在模板中通过自定义字段或直接使用后台生成的图片路径。
列表标签 ({dede:arclist})
这是专题模板的核心,它用于循环输出加入到该专题中的所有文章。
-
基本用法:
{dede:arclist} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} -
常用属性:
(图片来源网络,侵删)row='20':显示的文章数量。titlelen='40'的长度(字符数)。infolen='100':文章简介的长度。orderby='pubdate':排序方式,默认按发布时间排序,也可以用click(点击量)、id等。idlist='':指定文章ID列表,用逗号隔开,这个属性在专题中很少用,因为专题文章是动态添加的。channelid=''模型ID,默认为文章模型。
分页标签 ({dede:pagelist})
当专题中的文章数量超过了 arclist 的 row 值时,就需要分页。
- 基本用法:
<div class="page"> {dede:pagelist listsize='4'/} </div> listsize='4':显示页码的数量,1 2 3 4 ... 20 21 22。
循环内部字段 ([field:xxx/])
这些标签必须放在 {dede:arclist}...{/dede:arclist} 循环内部,用于获取当前文章的特定信息。
[field:title/]。[field:arcurl/]:文章的链接地址。[field:description/]:文章的摘要(从文章内容中自动截取)。[field:pubdate function='MyDate(@me, 'Y-m-d')'/]:文章的发布时间。[field:click/]:文章的点击量。[field:litpic/]:文章的缩略图。
如何自定义专题模板
如果你想创建一个独特的专题样式,可以按照以下步骤操作:
- 复制默认模板:复制
/templets/default/special.htm文件到你当前使用的模板目录下(/templets/你的模板名/),并重命名,myspecial.htm。 - 修改HTML和CSS:打开
myspecial.htm,修改其HTML结构和CSS样式,你可以使用Bootstrap、Foundation等前端框架来快速构建响应式布局。 - 调整标签:根据你的新布局,调整
{dede:arclist}和其他标签的位置和属性,你可能需要改变arclist的row值,或者为它添加不同的CSS类。 - 创建专题时选择模板:
- 在DedeCMS后台进入“专题管理”。
- 点击“增加专题”。
- 填写专题标题、简介等信息后,向下滚动找到“专题模板”选项。
- 在下拉菜单中选择你刚刚创建的
myspecial.htm。 - 保存专题。
- 生成专题:向专题中添加内容后,点击“更新HTML”或“生成专题HTML”,系统就会使用你自定义的模板来生成专题页面。
专题的高级技巧
- 多模板切换:你可以为同一个网站创建多个专题模板(如
list_style1.htm,list_style2.htm),然后在创建专题时根据需求选择不同的模板,实现风格的多样化。 - 使用自定义字段:如果专题内容需要一些特殊字段(如“专题负责人”、“活动时间”等),可以在后台为专题模型添加自定义字段,然后在模板中通过
{dede:field.字段名/}来调用。 - 调用专题列表:在网站首页或其他页面,你可以使用
{dede:sql}或{dede:loop}标签来调用所有已发布的专题列表,链接到它们的专题页面。
DedeCMS 的专题功能默认模板 (special.htm) 是一个功能强大且易于扩展的基础,它通过 {dede:field*} 标签展示专题元信息,核心是 {dede:arclist} 标签来聚合展示专题内容,通过理解其结构和工作原理,你可以轻松地修改默认模板或创建全新的模板,以满足各种复杂的专题展示需求。
