dede文章前如何自动添加栏目名称?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

最简单直接的方法(推荐)

这种方法最简单,只需要修改一个模板文件,并且不会影响 URL 的美观性。

dede 文章前加栏目名称
(图片来源网络,侵删)

适用场景:你希望在文章的标题(<h1> 标签)前直接显示栏目名称。

操作步骤

  1. 登录后台:用管理员账号登录你的 DedeCMS 后台。

  2. 找到模板文件

    dede 文章前加栏目名称
    (图片来源网络,侵删)
    • 在后台左侧菜单,找到 【模板】 -> 【默认模板管理】
    • 在列表中找到你正在使用的文章内容页模板,通常是 article_article.htm,点击后面的 【修改】 按钮。
  3. 代码

    • 在模板代码中,找到显示文章标题的 <h1> 标签,它通常看起来像这样:
      <h1>{dede:field.title/}</h1>
    • 将其修改为:
      <h1>{dede:field.typename/} - {dede:field.title/}</h1>
    • 代码解释
      • {dede:field.typename/}:这个标签的作用是获取当前文章所属的栏目名称。
      • 这是连接符,你可以换成你喜欢的任何符号,、> 或者直接留空。 是最常见的选择。
  4. 保存并更新

    • 点击模板编辑器右上角的 【保存】 按钮。
    • 重要:修改模板后,之前已经生成的文章页面不会自动更新,你需要去更新这些文章,新修改才能生效。
    • 在后台左侧菜单,进入 【生成】 -> 【HTML更新】
    • 你可以选择 【选择栏目】 更新特定栏目下的所有文章,或者 【开始执行】 更新整个网站,为了看到效果,建议更新一下你刚刚修改的文章所在的栏目。

效果: 修改后,文章页面的标题会显示为: 栏目名称 - 文章标题


更灵活的方法(使用自定义函数)

如果你想在页面的不同位置(比如面包屑导航、文章标题旁、页眉等)都显示栏目名称,并且希望有更灵活的控制,可以使用自定义函数。

dede 文章前加栏目名称
(图片来源网络,侵删)

适用场景:需要在多个地方重复使用栏目名称,或者需要对栏目名称进行特殊处理(如截取、添加样式等)。

操作步骤

  1. 创建自定义函数文件

    • 使用 FTP 或你的主机文件管理器,进入 /include/extend.func.php 文件。
    • 如果这个文件不存在,请手动创建一个。
    • 在这个文件中添加以下 PHP 函数代码:
      // 获取当前栏目名称
      if (!function_exists('getTypename'))
      {
          function getTypename()
          {
              global $dsql;
              $typeid = GetTypeId(); // 获取当前文章的栏目ID
              if (empty($typeid)) return '';
              $query = " typename FROM `dede_arctype` WHERE id = $typeid ";
              $row = $dsql->GetOne($query);
              return $row['typename'];
          }
      }

      注意:如果你的 dede_arctype 表有表前缀(如 dede_),请确保代码中的表名一致,上面的代码假设没有前缀。

  2. 在模板中调用函数

    • 打开 article_article.htm 模板文件。
    • 在你需要显示栏目名称的地方,使用以下标签:
      {dede:global.name function='getTypename()'/}
    • <h1> 标签中使用:
      <h1>{dede:global.name function='getTypename()'/} - {dede:field.title/}</h1>
    • 这个方法和方法一的效果是一样的,但这种方式更灵活,你可以在模板的任何地方调用 getTypename() 函数。
  3. 保存并更新

    • 保存模板文件,然后去后台 【生成】 -> 【HTML更新】 相应的栏目。

修改数据库(不推荐,仅作了解)

这种方法非常直接,它会永久性地修改你所有文章的标题。极不推荐,因为它破坏了数据的原始性和可维护性,并且会影响到后台的搜索和管理。

操作步骤

  1. 备份数据库:在进行任何数据库操作前,务必备份数据库!
  2. 登录 phpMyAdmin:通过你的主机控制面板进入 phpMyAdmin。
  3. 选择数据库:选择你的 DedeCMS 数据库。
  4. 执行 SQL 语句
    • 在 SQL 标签页中,输入以下代码(请将 dede_ 替换为你数据库的真实表前缀):
      UPDATE dede_archives SET title = CONCAT((SELECT typename FROM dede_arctype WHERE id = dede_archives.typeid), ' - ', title);
    • 代码解释
      • UPDATE dede_archives:要修改的表是文章表。
      • SET title = ...:要修改的字段是标题。
      • CONCAT(...):一个字符串拼接函数。
      • (SELECT typename FROM ...):这是一个子查询,它会根据 dede_archives 表中的 typeid 字段,去 dede_arctype 表中找到对应的 typename
      • 连接符。
      • title:原始的标题。
  5. 执行:点击 【执行】 按钮。

警告

  • 这个操作是不可逆的(除非你从备份恢复)。
  • 它会直接修改数据库,导致后台的文章列表里标题也带上了前缀,可能会让你感到困惑。
  • 如果你后续更换模板或想取消这个效果,会非常麻烦。

请优先选择方法一或方法二。


总结与建议

方法 优点 缺点 推荐度
方法一 简单、直接、无侵入性,不影响后台数据 灵活性稍差,只能在模板中直接使用 ★★★★★ (强烈推荐)
方法二 非常灵活,可在多处调用,便于扩展 需要创建函数文件,对新手稍有门槛 ★★★★☆ (推荐给有一定基础的用户)
方法三 一劳永逸,修改所有数据 破坏数据结构,影响后台,难以恢复,不推荐 ☆☆☆☆☆ (强烈不推荐)

对于绝大多数用户来说,方法一 是最佳选择,它简单、安全,且完全能满足在文章标题前显示栏目名称的需求。

-- 展开阅读全文 --
头像
织梦CMS模板安装步骤详解?
« 上一篇 02-14
dede友情链接显示404怎么办?
下一篇 » 02-14

相关文章

取消
微信二维码
支付宝二维码

目录[+]