tags.php 是用于显示“标签列表页”的模板,当用户点击网站上的任何一个标签(tag)时,就会跳转到由 tags.php 控制和展示的页面,该页面会列出所有包含了这个标签的文章。

dede tags.php 模板
(图片来源网络,侵删)

工作原理

  1. 触发: 用户在前台页面点击一个标签链接,<a href='/tags.php?/织梦CMS/'>织梦CMS</a>
  2. 接收: tags.php 脚本接收到这个请求,它会解析 URL 中的 tag 参数(在这个例子中是 织梦CMS)。
  3. 查询: tags.php 会调用数据库查询,找到所有与 织梦CMS 这个标签关联的文章。
  4. 渲染: tags.php 加载其对应的模板文件(默认是 /templets/default/tags.htm),并将查询到的文章数据填充到模板中。
  5. 输出: 最终生成一个完整的 HTML 页面展示给用户。

默认模板文件位置

在 DedeCMS 的默认安装中,tags.php 模板文件通常位于:

/你的网站目录/templets/default/tags.htm

你可以根据自己的主题和设计需求,修改这个文件,或者在 templets 目录下创建新的文件夹(mytheme),然后将 tags.htm 放进去,再到后台“模板管理”中设置你当前使用的模板风格。


tags.php 模板代码详解与示例

下面是一个功能完整、注释清晰的 tags.php 模板示例,你可以基于此进行修改。

{dede:global name='keyword' function='RemoveXSS(@me)'/}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
    <meta name="keywords" content="{dede:field.title/}, {dede:global.cfg_webname/}" />
    <meta name="description" content="{dede:field.title/}”的相关文章列表" />
    <!-- 引入你的CSS文件 -->
    <link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style/css/style.css">
</head>
<body>
    <!-- 头部文件 -->
    {dede:include filename="head.htm"/}
    <div class="main-container">
        <div class="main-content">
            <!-- 左侧内容区 -->
            <div class="left-content">
                <!-- 面包屑导航 -->
                <div class="breadcrumb">
                    <a href="{dede:global.cfg_cmsurl/}/">首页</a> &gt;
                    <a href="/tags.php">标签</a> &gt;
                    <span>{dede:field.title/}</span>
                </div>
                <!-- 标签列表标题 -->
                <div class="tag-title">
                    <h1>标签:{dede:field.title/}</h1>
                    <p>与“<strong>{dede:field.title/}</strong>”相关的文章,共找到 <span class="count">{dede:field.total/}</span> 篇。</p>
                </div>
                <!-- 文章列表开始 -->
                <ul class="article-list">
                    {dede:taglist}
                    <li>
                        <h2><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h2>
                        <div class="article-info">
                            <span class="date">发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]</span>
                            <span class="category">分类:<a href="[field:typeurl/]">[field:typename/]</a></span>
                            <span class="views">浏览:[field:click/]</span>
                        </div>
                        <div class="article-summary">
                            [field:description function="cn_substr(@me, 200)"/]...
                        </div>
                    </li>
                    {/dede:taglist}
                </ul>
                <!-- 文章列表结束 -->
                <!-- 分页条 -->
                <div class="page-nav">
                    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
                </div>
            </div>
            <!-- 右侧边栏 -->
            <div class="right-sidebar">
                <!-- 调用右侧模板文件 -->
                {dede:include filename="side.htm"/}
            </div>
        </div>
    </div>
    <!-- 底部文件 -->
    {dede:include filename="footer.htm"/}
    <!-- 引入你的JS文件 -->
    <script src="{dede:global.cfg_templets_skin/}/style/js/jquery.min.js"></script>
</body>
</html>

核心标签说明

{dede:global name='keyword'.../}

  • 作用: 获取当前标签页面的关键词,这个关键词就是用户点击的那个标签名。
  • 用途:
    • <title> 中显示,如 标签:织梦CMS - 网站名称
    • <meta name="keywords"> 中使用,优化 SEO。
    • 中显示,如 标签:织梦CMS
    • function='RemoveXSS(@me)' 是一个安全函数,用于过滤掉潜在的 XSS 攻击代码,建议保留。

{dede:field.title/}

  • 作用: 与 keyword 基本相同,获取当前标签的名称。
  • 用途: 在页面内容区(如面包屑、标题)中显示标签名。

{dede:field.total/}

  • 作用: 获取当前标签下关联的文章总数。
  • 用途: 在页面中显示“共找到 X 篇文章”,给用户一个直观的数量概念。

{dede:taglist} ... {/dede:taglist}

  • 作用: 这是标签列表页最核心的循环标签,它会循环遍历所有与当前标签关联的文章。
  • 内部常用字段:
    • [field:arcurl/]: 文章的链接地址。
    • [field:title/]: 文章的标题。
    • [field:pubdate function="MyDate('Y-m-d H:i',@me)"/]: 文章的发布时间。function 用于格式化日期。
    • [field:typeurl/]: 文章所属分类的链接地址。
    • [field:typename/]: 文章所属分类的名称。
    • [field:click/]: 文章的点击数。
    • [field:description function="cn_substr(@me, 200)"/]: 文章的摘要。function 用于截取前200个字符,避免摘要过长。

{dede:pagelist} ... {/dede:paglist}

  • 作用: 生成文章列表的分页导航条。
  • 常用属性:
    • listsize='4': 显示页码的数量,当前页前后各显示2个。
    • listitem='info,index,end,pre,next,pageno': 定义分页条显示哪些元素。
      • info: 显示总页数、总条数等信息。
      • index: 显示首页链接。
      • pre: 显示上一页链接。
      • next: 显示下一页链接。
      • end: 显示尾页链接。
      • pageno: 显示页码数字。

自定义与进阶

修改默认模板路径

如果你不想把模板文件放在 default 文件夹下,可以这样做:

dede tags.php 模板
(图片来源网络,侵删)
  1. /templets/ 目录下新建一个文件夹,mytheme
  2. default/tags.htm 复制到 mytheme/ 目录下。
  3. 登录 DedeCMS 后台,进入 “系统” -> “系统基本参数” -> “核心设置”
  4. 找到 “默认模板风格目录” 这一项,将其值修改为 mytheme
  5. 保存后,系统就会自动加载 mytheme 目录下的模板文件。

常见问题:标签页样式错乱或内容不显示

  • 问题: 点击标签后,页面布局错乱,或者文章列表不显示。
  • 排查步骤:
    1. 检查模板文件名: 确保文件名是 tags.htm,并且位于正确的 templets/你的主题/ 目录下。
    2. 检查标签调用: 确保页面中使用了 {dede:taglist} 标签来循环文章。
    3. 检查缓存: 有时是模板缓存问题,进入后台 “生成” -> “更新缓存”,然后重新点击标签页。
    4. 检查文章: 确保被关联的文章是“已审核”状态,并且确实设置了该标签。
    5. 检查标签本身: 确保你点击的标签是真实存在的,并且该标签下有文章,你可以在后台的“标签管理”中查看。

自定义标签页的URL形式

默认的标签URL是 tags.php?/标签名/,如果你希望它更美观,/tag/标签名.html,可以通过修改 tags.php 文件来实现,但这需要一定的 PHP 知识,并且可能会影响 SEO(因为标签页通常参数化,不利于搜索引擎索引),对于大多数网站,默认形式已经足够。

希望这份详细的解析能帮助你完全掌握 DedeCMS 的 tags.php 模板制作!

dede tags.php 模板
(图片来源网络,侵删)