让DEDE的不显示未审核稿件的标签

By | 2010/04/03

未审核稿件的标签会显示在标签列表页面, 这可以说是DEDE的一个bug吧.   虽然点击进入标签时, 相关的未审核文章不会显示出来.  但一个没有内容的标签内容页面总是不好的用户体验.

要解决这个问题, 让DEDE的不显示未审核稿件的标签, 就要修改标签的显示库文件 tag.lib.php

tag.lib.php这个文件可以在 /include/taglib/tag.lib.php 中找到, 这个文件就要控制 tag的显示, 在文件中找到以下代码.

if(!empty($typeid))
{
$addsql = ” where typeid=’$typeid’ “;
}

修改成:

$dsql->SetQuery(“Select tid From `#@__taglist` where arcrank<=-1″); $dsql->Execute();
$ids = ”;
while($row = $dsql->GetArray())
{
$tid = $row[‘tid’];
$cquery = “Select count(*) as dd From `#@__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’ “;
}
}

这样就不会显示的未审核稿件的标签.

原创文章 转载请注明出处: 登高望远 [ http://www.dengor.com/archives/734.html ]

4 thoughts on “让DEDE的不显示未审核稿件的标签

  1. 33454931

    $dsql->SetQuery(“Select tid From `#@__taglist` where arcrank = 0 “);
    $dsql->Execute();
    $ids = ”;
    while($row = $dsql->GetArray())
    {

    $tid = $row[‘tid’];
    $cquery = “Select count(*) as dd From `#@__taglist` where tid = $tid and arcrank = 0 “;
    $crow = $dsql->GetOne($cquery);
    if(!$crow[‘dd’])
    {
    $ids .= ( $ids==” ? $row[‘tid’] : ‘,’.$row[‘tid’] );
    }
    }
    if($ids != ”)
    {
    $addsql = ” where id in($ids) “;
    }
    if(!empty($typeid))
    {
    if($addsql)
    {
    $addsql .= ” and typeid=’$typeid’ “;
    }else{
    $addsql = ” where typeid=’$typeid’ “;
    }
    }

    测式了没效果哈

  2. dede5.7

    dede5.7下代码不行,直接打不开。求5.7修改方法!!希望朋友能解决!

Comments are closed.