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

搬瓦工机场JMS

功能:

比如说有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里!

<?phpfunctiON 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 id,title,titleurl,titlepic from {$dbtbpre}ecms_{$tbname} where id in($inid)");while($n=$empire->fetch($news)){$str.='<li><a href="'.$n[titleurl].'">'.$n[title].'</a></li>';}}        return $str;   }}?>

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

<?=user_otherlink(5)?>

未经允许不得转载:Just My Socks中文教程网 » 帝国CMS内容页根据TAG匹配相关文章列表的代码调用

赞 (0) 打赏
Just My Socks搬瓦工机场JMS

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏