在使用DEDECMS进行内容管理时,未审核的文档可能会对用户体验产生负面影响。具体来说,未审核文档的TAG会显示在TAG列表页面,而点击进入TAG时,相关的未审核文章不会显示出来。这不仅影响了用户体验,还可能导致搜索引擎优化(SEO)效果不佳。为了解决这一问题,我们需要对DEDECMS的核心文件进行修改,以确保未审核文档的TAG不会出现在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不会出现在TAG列表中。 ### 方法二:添加过滤条件 另一种方法是在`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。 ### 总结 通过以上两种方法,我们可以有效解决DEDECMS中未审核文档TAG显示的问题。这对于提升用户体验和优化SEO都具有重要意义。在实际操作中,建议根据具体需求选择合适的方法,并在修改前备份相关文件,以防出现意外情况。
希望这篇文章能帮助您更好地理解和解决DEDECMS中的TAG显示问题。