dede隐藏栏目文章标题如何显示?

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

场景说明

假设我们有一个栏目,其ID为 5,我们希望所有发布在这个栏目ID为 5 的文章,在前台网站列表页、内容页等地方,都。

dede隐藏栏目下文章标题
(图片来源网络,侵删)

修改 arclist 标签(推荐,最灵活)

这是最常用且最灵活的方法,适用于在列表页(如首页、栏目页)通过 {dede:arclist} 标调用文章时进行隐藏。

原理: 通过 arclist 标签的 channelidtypeid 属性,结合 orderbyfilter 等属性,可以精确地控制要调用哪些文章,我们可以利用这个特性来“过滤”掉我们不希望显示的栏目下的文章。

操作步骤:

  1. 找到您需要调用文章的模板文件,通常是 index.htm (首页), list_article.htm (栏目列表页) 等。

    dede隐藏栏目下文章标题
    (图片来源网络,侵删)
  2. 找到其中的 {dede:arclist}

  3. 在标签内添加以下属性:

    {dede:arclist 
        channelid='1' 
        typeid='这里是你当前栏目的ID' 
        orderby='pubdate' 
        row='10'}
        <!-- 我们通过条件判断来决定是否显示标题 -->
        [field:runphp='yes']
            if (@me == 5) {
                // 如果文章属于栏目ID为5的栏目,则不输出任何内容
                @me = "";
            } else {
                // 否则,正常输出标题
                @me = "<a href='{@me}'>".GetArcTitle(@me)."</a>";
            }
        [/field:runphp]
        <!-- 或者更简单的方式,直接排除栏目ID为5的文章 -->
        <!-- 注意:这种方法更推荐,因为它从源头上就排除了,效率更高 -->
        <!-- 但是标准的arclist标签没有直接排除某个typeid的属性,所以我们需要用子查询的方式 -->
    {/dede:arclist}

更简单、更推荐的 arclist 写法(使用子查询排除):

DedeCMS 的 arclist 标签支持通过 sql 属性自定义查询语句,这是最彻底、最干净的方法。

{dede:arclist 
    row='10' 
    orderby='pubdate'}
    <!-- 这里的 [field:id] 和 [field:title] 等标签会正常工作 -->
    <!-- 因为arclist已经自动过滤掉了栏目ID为5下的所有文章 -->
{/dede:arclist}

关键在于如何调用 arclist 如果您是在首页调用所有栏目的文章,但又想排除ID为5的栏目,您需要修改PHP文件或在标签中使用更复杂的逻辑,对于单个列表页,最简单的方法是确保这个列表页的 arclist 不要去调用那个栏目,列表页的 arclist 默认只调用本栏目的文章,所以只要那个“隐藏栏目”不是当前列表页的父栏目或子栏目,就已经自然隐藏了。

如果您想在首页等地方全局排除,建议使用下面的方法二或方法三。


修改数据库 arctitle 字段(彻底,但有风险)

原理: 直接修改数据库,将目标栏目下所有文章的标题字段清空或替换为一个空格,这样,无论在任何地方调用标题,都显示为空。

⚠️ 警告:此方法有风险,操作前务必备份数据库! 如果操作不当,可能会导致数据问题。

操作步骤:

  1. 备份数据库! 这是最重要的一步。

  2. 登录您的网站数据库管理工具(如 phpMyAdmin)。

  3. 找到 DedeCMS 的数据表,通常是 dede_archives (文章主表)。

  4. 执行以下 SQL 语句:

    -- 将栏目ID为5的所有文章的标题清空
    UPDATE `dede_archives` SET title = '' WHERE typeid = 5;
    -- 或者,将标题替换为一个空格,这样在后台管理时还能看到位置,方便后续恢复
    UPDATE `dede_archives` SET title = ' ' WHERE typeid = 5;

优点:

  • 一劳永逸:修改后,全站任何地方调用标题都不会显示。
  • 效率高:是数据库层面的操作,性能最好。

缺点:

  • 有风险:直接操作数据库,如果误操作(比如写错了ID),可能会影响其他数据。
  • 不可逆:除非您有备份,否则清空的标题无法恢复。
  • 后台也看不到:在后台“内容发布”->“普通文章”里,这些文章的标题也会是空的,可能会影响管理。

修改程序文件 arc.archives.class.php (最通用,需谨慎)

原理: 修改 DedeCMS 核心文件,在系统准备输出文章标题时,进行判断,如果文章属于指定栏目,就返回一个空字符串。

⚠️ 警告:此方法会修改核心文件,在进行DedeCMS升级时,这些修改会被覆盖,需要重新修改。

操作步骤:

  1. 找到并下载文件:/include/arc.archives.class.php

  2. 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开它。

  3. 搜索 GetTitle() 函数(通常在文件的中后部分)。

  4. GetTitle() 函数中找到返回标题的代码行,通常是 return $title;

  5. 在这行代码之前,添加判断逻辑。

    // 在 arc.archives.class.php 文件中修改 GetTitle() 函数
    // ... 函数其他代码 ...
    // 在 return $title; 之前添加如下代码:
    // 如果文章属于栏目ID为5,则返回空字符串
    if($this->Fields['typeid'] == 5) {
        return '';
    }
    // 原有的返回代码
    return $title;
    // ... 函数其他代码 ...
  6. 保存文件,并上传到服务器,覆盖原文件,可能需要清除网站缓存才能看到效果。

优点:

  • 效果全面:所有调用 GetTitle() 函数的地方(包括列表页、内容页、相关文章等)都会生效。
  • 逻辑清晰:修改集中在核心文件的一个函数里,易于理解。

缺点:

  • 升级覆盖:每次升级 DedeCMS 到新版本,都需要重新修改这个文件。
  • 需要代码能力:需要一定的PHP代码阅读和修改能力。

总结与推荐

方法 优点 缺点 适用场景
修改 arclist 灵活、安全、不影响系统 需要在每个模板文件中手动设置,不够“自动化” 最推荐,适用于绝大多数情况,特别是只想在特定页面隐藏标题时。
修改数据库 彻底、一劳永逸、效率高 有风险、不可逆、影响后台管理 适用于确定不再需要这些标题,且对数据库操作非常熟练的用户。
修改核心文件 效果全面、自动化 升级会覆盖、需要代码能力 适用于需要全站范围内(所有页面)统一隐藏某个栏目标题,且不介意手动维护修改的用户。

给您的建议:

  • 如果您只是想在首页或某个列表页不显示某个栏目的标题,请优先使用方法一
  • 如果您希望整个网站都看不到这些标题,并且愿意承担风险和后续维护,可以选择方法三
  • 方法二风险较高,除非您有特殊需求,否则不推荐普通用户使用。
-- 展开阅读全文 --
头像
织梦视频播放插件下载安全吗?
« 上一篇 今天
dede如何调用来源相同的文章?
下一篇 » 今天

相关文章

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