98300

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

[复制链接]
发表于 2019-12-1 16:08:38 | 显示全部楼层 |阅读模式
功能:
比如说有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里!
$v){
                        if(count($tagarr)==$k+1){
                                $num=$limit-count($arr);
                        }else{
                                if($ifetch1("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)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.='
  • [url=]'.$n[title].'[/url]';
                            }       
                    }
            return $str;
               }
    }
    ?>
    内容页用以下代码调用:5为显示数量 自己改
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋| 98300.NET

    GMT+8, 2019-12-13 08:29 , Processed in 0.097266 second(s), 7 queries , MemCache On.

    Powered by Discuz! X

    © 2015-2016 98300.NET

    快速回复 返回顶部 返回列表