• 懒鸟飞:精品网站源码、帝国cms模板专业分享平台

帝国CMS内容页根据TAG匹配相关文章列表代码

帝国CMS内容页根据TAG匹配相关文章列表代码

功能:

比如说有3个TAG,每个TAG下有4篇文章,现在指定要显示10篇文章,那么每个TAG要拿出4篇,共有12篇文章,最终会打乱

这12篇文章,然后取10篇
3个TAG,每个TAG下有3篇文章,现在指定要显示10篇文章,那么每个TAG要拿出3篇文章,共有9篇文章
3个TAG,A有2篇文章,B有5篇文章,C有3篇文章,现在要显示10篇文章,那么A拿出2篇文章,B拿出5篇文章,C拿出3篇文章,共有10篇文章
如果 A、B、C中除了当前文章,还有相同的文章,那么会扣除重复的那篇文章,只取一次。所以指定的数量会有偏差


以下代码放到/e/class/userfun.php里!

function user_otherlink($limit=5){
    global $dbtbpre,$empire,$navinfor,$class_r;
    if($navinfor[infotags]){
        $classid=(int)$classid;
        $limit=(int)$limit;
        $tbname=$class_r[$navinfor[classid]][tbname];
        $tagarr=explode(",",$navinfor[infotags]);
        $arr=array();
        $num=ceil($limit/count($tagarr));
        foreach($tagarr as $k=>$v){
            if(count($tagarr)==$k+1){
                $num=$limit-count($arr);
            }else{
                if($i<$num){
                    $num=ceil(($limit-count($arr))/count($tagarr));
                }        
            }
            $t=$empire->fetch1("select tagid,num from {$dbtbpre}enewstags where tagname='$v'");
            if($t[tagid]){
                $sql=$empire->query("select id from {$dbtbpre}enewstagsdata where tagid=$t

[tagid]");
                $i=0;
                while($s=$empire->fetch($sql)){
                    if(in_array($s[id],$arr)||$s[id]==$navinfor[id]){
                        continue;
                    }else{
                        $arr[]=$s[id];
                        $i++;
                    }
                    if($i==$num){
                        break;
                    }
                    if(count($arr)==$limit){
                        break 2;
                    }
                }
                if($t[num]>$num){
                    $linshi=$t[tagid];
                }
            }
        }
        if(count($arr)>0){
            $inid=implode(",",$arr);
            if(count($arr)<$limit&&$linshi){
                $sql=$empire->query("select id from {$dbtbpre}enewstagsdata where tagid=

$linshi and id not in($inid)");
                while($s=$empire->fetch($sql)){
                    $arr[]=$s[id];
                    if(count($arr)==$limit){
                        break;
                    }
                }
            }
            $inid=implode(",",$arr);
            $str="";
            $news=$empire->query("select * from {$dbtbpre}ecms_{$tbname} where id in($inid)");
            while($n=$empire->fetch($news)){
                $str.='
<div class="content">
<p>标题:<a href="'.$n[titleurl].'" title="'.$n[title].'">'.$n[title].'</a></p>
<p>描述:'.esub($n[smalltext],146).'...</p>
<p>缩略图:<img  src="'.$n[titlepic].'" alt="'.$n[title].'" title="'.$n[title].'"></p>
<span>作者:'.$n[writer].'</span>
<span>点击量:'.$n[onclick].'</span>
<span>时间:'.date('Y-m-d',$n[newstime]).'</span>
</div>';
            }    
        }
        return $str;
       }
}



内容页用以下代码调用:5为显示数量 自己改

<?=user_otherlink(5)?>
 
QQ在线咨询
QQ客服
淘宝官网