后,看到的文章详情页,它通常用于展示文章的标题、作者、发布时间、来源、正文内容、相关文章、评论等信息。

dedecms 内容页模板
(图片来源网络,侵删)

内容页模板文件位置

在 Dedecms 中,内容页模板文件通常存放在以下目录:

/templets/default/

默认情况下,内容页模板文件名为 article_article.htm,你也可以在后台创建多个模板,并指定不同的文章栏目使用不同的模板。

内容页模板的核心结构

页模板主要由以下几个部分构成:

  1. 头部文件:包含网站的整体结构,如 <head> 标签(标题、关键词、描述)、网站Logo、主导航等。
  2. :这是文章页面的核心,展示文章的具体信息。
  3. 侧边栏:通常包含热门文章、推荐文章、友情链接等。
  4. 底部文件:包含网站的版权信息、备案号、底部导航等。

在 Dedecms 中,为了代码复用和维护方便,通常会使用 include 标签来引入头部和底部。

dedecms 内容页模板
(图片来源网络,侵删)
{dede:include filename="head.htm"/}
<!-- 主体内容区 -->
{dede:include filename="footer.htm"/}

主体内容区常用标签详解

页模板最核心的部分,我们来逐一解析常用的标签。

文章基本信息

说明 示例
{dede:field.title/} <h1>{dede:field.title/}</h1>
{dede:field.seotitle/} 文章的SEO标题(在后台文章编辑页的“高级选项”中设置) <title>{dede:field.seotitle/}_网站名称</title>
{dede:field.description/} 在后台文章编辑页的“处设置) <meta name="description" content="{dede:field.description/}">
{dede:field.keywords/} 文章关键词(在后台文章编辑页的“关键词”处设置) <meta name="keywords" content="{dede:field.keywords/}">
{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/} 文章发布时间,function用于格式化时间 <span>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M",@me)'/}</span>
{dede:field.source/} 文章来源 <span>来源:{dede:field.source/}</span>
{dede:field.writer/} 文章作者 <span>作者:{dede:field.writer/}</span>
{dede:field.click/} 文章点击数 <span>点击:{dede:field.click/}</span>
{dede:field.arcclick/} field.click 功能相同,也是文章点击数 <span>点击:{dede:field.arcclick/}</span>
说明 示例
{dede:field.body/} 最重要的标签,用于输出文章的正文内容。 <div class="article-content">{dede:field.body/}</div>

文章栏目相关信息

说明 示例
{dede:field.typename/} 当前文章所在的栏目名称 <span>栏目:<a href="{dede:type typeid='0'/}">{dede:field.typename/}</a></span>
{dede:type typeid='0'}{/dede:type} 获取当前文章栏目的链接。typeid='0' 表示获取当前栏目。 <a href="[field:typelink/]">返回[field:typename/]栏目</a>

文章分页标签

很长时,需要在后台设置“分页符”来将其分成多页,这时就需要分页标签。

说明 示例
{dede:pagebreak/} 中插入分页符,这个标签会直接在后台编辑时插入。 (在后台编辑文章时使用)
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/} 生成分页导航条。 <div class="page-nav">{dede:pagelist/}</div>

listitem 属性可以控制显示哪些分页元素:

  • info: 显示“共X页”等信息
  • index: 显示“首页”
  • pre: 显示“上一页”
  • next: 显示“下一页”
  • end: 显示“末页”
  • pageno: 显示页码

文章上下篇标签

用于在文章页底部显示上一篇和下一篇文章。

dedecms 内容页模板
(图片来源网络,侵删)
说明 示例
{dede:prenext get='pre'/} 获取上一篇链接。 <div class="prenext">{dede:prenext get='pre'/}</div>
{dede:prenext get='next'/} 获取下一篇链接。 <div class="prenext">{dede:prenext get='next'/}</div>
{dede:prenext/} 同时获取上下篇链接。 <div class="prenext">{dede:prenext/}</div>

完整的内容页模板示例

下面是一个简化但功能完整的 article_article.htm 模板示例,你可以基于此进行修改。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">{dede:field.seotitle/}_{dede:global.cfg_webname/}</title>
    <meta name="description" content="{dede:field.description function='html2text(@me)'/}">
    <meta name="keywords" content="{dede:field.keywords/}">
    <!-- 引入CSS文件 -->
    <link rel="stylesheet" href="/templets/default/css/style.css">
</head>
<body>
    <!-- 引入头部文件 -->
    {dede:include filename="head.htm"/}
    <!-- 主体内容区 -->
    <div class="main-content">
        <div class="article-container">
            <!-- 文章标题 -->
            <h1 class="article-title">{dede:field.title/}</h1>
            <!-- 文章信息栏 -->
            <div class="article-info">
                <span>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M",@me)'/}</span>
                <span>来源:{dede:field.source/}</span>
                <span>作者:{dede:field.writer/}</span>
                <span>点击:<span id="hits">{dede:field.click/}</span></span>
                <span>栏目:<a href="{dede:type typeid='0'/}">{dede:field.typename/}</a></span>
            </div>
            <!-- 文章正文内容 -->
            <div class="article-content">
                {dede:field.body/}
            </div>
            <!-- 文章分页 -->
            <div class="article-page">
                {dede:pagelist listitem="index,end,pre,next,pageno" listsize="5"/}
            </div>
            <!-- 文章上下篇 -->
            <div class="article-pre-next">
                {dede:prenext get='pre'/}
                {dede:prenext get='next'/}
            </div>
            <!-- 相关文章标签 -->
            <div class="related-articles">
                <h3>相关文章</h3>
                {dede:likearticle row='6' titlelen='30'}
                <li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
                {/dede:likearticle}
            </div>
            <!-- 文章评论标签 -->
            {dede:include filename="plus/feedback_templet.htm"/}
        </div>
        <!-- 引入侧边栏文件 -->
        {dede:include filename="sidebar.htm"/}
    </div>
    <!-- 引入底部文件 -->
    {dede:include filename="footer.htm"/}
    <!-- 引入JS文件 -->
    <script src="/templets/default/js/jquery.min.js"></script>
    <script>
        // 点击数实时更新
        $.get("/plus/ajaxhits.php?ajax=yes&aid={dede:field.id/}", function(data){
            $("#hits").html(data);
        });
    </script>
</body>
</html>

如何修改和使用内容页模板

  1. 备份原模板:在修改任何模板文件之前,请务必备份原始的 article_article.htm 文件,以防修改出错无法恢复。
  2. FTP/SFTP登录:使用FTP工具(如 FileZilla)登录到你的网站服务器。
  3. 找到模板文件:进入 /templets/default/ 目录,找到 article_article.htm 文件。
  4. 下载并编辑:将文件下载到本地,使用代码编辑器(如 VS Code, Sublime Text, Dreamweaver)打开它。
  5. 修改代码:根据你的网站设计,修改HTML结构、CSS类名,并替换或添加上述的Dedecms标签。
  6. 上传并覆盖:将修改好的文件重新上传到服务器,覆盖原来的文件。
  7. 后台更新:登录Dedecms后台,进入“模板” -> “默认模板管理”,找到你的内容页模板,点击“更新”按钮,使系统重新编译模板。

常见问题与注意事项

  • 标签不显示内容
    • 检查标签拼写是否正确,{dede:field.title/} 不要写成 {dede:filed.title/}
    • 检查后台文章中对应的字段(如摘要、关键词)是否已经填写。
    • 确保模板文件路径正确。
  • 样式错乱
    • 检查HTML结构是否完整,标签是否正确闭合。
    • 检查CSS选择器是否与模板中的 classid 匹配。
    • 确保引入的CSS文件路径正确。
  • 分页不生效
    • 确保在后台编辑文章时,确实插入了分页符(通常是 [page] 标签)。
    • 检查 {dede:pagebreak/}{dede:pagelist/} 标签是否都正确放置。
  • 点击数不更新
    • 确保网站的 plus 目录存在且有执行权限。
    • 检查是否启用了“启用页面静态化”功能,如果开启了静态化,点击数可能不会实时更新,需要用户访问后才会生成新的HTML文件并记录点击,示例中的JS代码可以解决这个问题,实现点击数的动态加载。

希望这份详细的指南能帮助你更好地理解和定制 Dedecms 的内容页模板!