在使用DedeCMS后台发布文章时,未审核状态的文档仍会生成tag标签,并显示在tag列表页中。点击这些标签时,页面内容为空,这不仅影响用户体验,也被视为DedeCMS的一个小Bug。本文将提供两种解决方法,帮助您实现未审核文档的Tags标签不在前端显示。
方法一:打开/include/taglib/tag.lib.php文件,找到代码(大约在第64行):

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文件,找到代码(大约在第85行):

$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标签。您可以根据实际情况选择适合的方法进行操作。

注意:在修改代码前,请务必备份原始文件,以防止意外情况导致网站无法正常运行。此外,如果您对PHP代码不熟悉,建议寻求专业人士的帮助,以免误操作影响网站功能。
通过这两种解决方案,您可以有效提升用户体验,同时优化DedeCMS的使用效果。希望本文能为您提供帮助!