在使用DEDECMS构建网站时,未审核文档的TAG可能会出现在TAG列表页面。尽管点击进入TAG时,相关的未审核文章不会显示出来,但这仍然会影响用户体验。为了解决这个问题,可以通过修改DEDECMS的核心文件来实现不显示未审核文档的TAG。

解决方法

以下是两种实现方法,您可以根据需要选择其中之一进行操作。

方法一:修改 tag.lib.php 文件

首先,打开 /include/taglib/tag.lib.php 文件。
找到以下代码段:

if(!empty($typeid)) {
    $addsql = " where typeid='$typeid' ";
}
    
将其替换为以下代码:

$dsql->SetQuery("Select tid From `dede_taglist` where arcrank<=-1");
$dsql->Execute();
$ids = '';
while($row = $dsql->GetArray()) {
    $tid = $row['tid'];
    $cquery = "Select count(*) as dd From `dede_taglist` where tid = $tid and arcrank<=-1";
    $crow = $dsql->GetOne($cquery);
    if(!$crow['dd']) {
        $ids .= ( $ids=='' ? $row['tid'] : ','.$row['tid'] );
    }
}
if($ids != '') {
    $addsql= " where id not in($ids) ";
}
if(!empty($typeid)) {
    if($addsql) {
        $addsql= " and typeid='$typeid' ";
    }else{
        $addsql= " where typeid='$typeid'" ;
    }
}
    
这段代码的作用是筛选出所有未审核的TAG,并将它们从显示列表中移除。

方法二:添加条件判断

同样,打开 /include/taglib/tag.lib.php 文件。
找到以下代码行:

$row['keyword'] = $row['tag'];
    
在其前边插入以下代码:

$rankrowss = $dsql -> GetOne("SELECT count(tid) as rankcount FROM `js_taglist` WHERE tid = $row[id] and arcrank >= 0");
if($rankrowss[rankcount] == 0) continue;
    
这段代码的作用是检查每个TAG是否包含已审核的文章。如果某个TAG没有已审核的文章,则跳过该TAG的显示。

总结

通过以上两种方法,可以有效避免未审核文档的TAG出现在DEDECMS的TAG列表页面上。这不仅提升了用户体验,也使得网站管理更加高效和规范。
希望这些方法对您有所帮助!