
请问帝国CMS跨表查询相关链接实现方法

<?php function user_OtherLink($tbname,$num,$ck){ global $navinfor,$empire,$dbtbpre,$class_r ; $ck=(int)$ck ; if($ck==1||$ck==2){ $tbname=$class_r[$navinfor['classid']]['tbname'] ; } $num= $num=='' ? 5 : $num ; //缺省获取数量为5 $tag_all=explode(',',$navinfor['infotags']); $tbname_num=explode(',',$tbname) ; $eq_num=ceil($num/count($tag_all)); for($i=0;$i<count($tag_all);$i++){ $r_1_1 =$empire->fetch1("select tagid,tagname,num,isgood,cid from {$dbtbpre}enewstags where tagname='". $tag_all[$i]."' order by tagid limit 1") ; $tag_id[$i]=$r_1_1['tagid'] ; //tag的ID $tag_num[$i]=$r_1_1['num'] ; //tag下的文章数量 if($tag_num[$i]>=$eq_num){//如果TAG下的文章数量比平均的数量大或者等于,那么TAG的文章数量取平均值 $tag_num[$i] = $eq_num ;//重新赋值 }else{//如果TAG下的文章小于平均值,那么TAG取原有的文章数量。同时重新赋值平均值。 $eg_tag= $eq_num-$tag_num[$i] ; $eq_num += $eg_tag ; } //比如说有3个TAG,每个TAG下有4篇文章,现在指定要显示10篇文章,那么每个TAG要拿出4篇,共有12篇文章 //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中除了当前文章,还有相同的文章,那么会扣除重复的那篇文章,只取一次。所以指定的数量会有偏差 for($i_n=0;$i_n<count($tbname_num);$i_n++){ $sql=$empire->query("select tid,classid,id,mid from {$dbtbpre}enewstagsdata where tagid='".$tag_id[$i]."' order by classid "); $ri=1 ; while($r=$empire->fetch($sql)) { $tbname_all[$r['tid']]=$class_r[$r['classid']]['tbname'] ; if($tbname_all[$r['tid']]==$tbname_num[$i_n] && $ri <= $tag_num[$i] && $navinfor['classid']!=$r['classid'] && $navinfor['id']!=$r['id']){ if($ck==1&&$navinfor['classid']==$r['classid']){ $tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ; $classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ; $classid_all[$r['tid']]=$r['classid'] ; $id_all[$r['tid']][$r['classid']]=$r['id'] ; }elseif($ck==2&&$class_r[$navinfor['classid']]['tbname']==$class_r[$r['classid']]['tbname']){ $tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ; $classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ; $classid_all[$r['tid']]=$r['classid'] ; $id_all[$r['tid']][$r['classid']]=$r['id'] ; }elseif($ck==3){ $tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ; $classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ; $classid_all[$r['tid']]=$r['classid'] ; $id_all[$r['tid']][$r['classid']]=$r['id'] ; } $ri++; } } } } $classid_id_x=array_unique($classid_id);//去除重复的值 //去除重复的值,不同的TAG会有相同的文章。所以去除重复的值。比如A篇文章里面都有"北京","奥运",两个关键词, B篇文章里面也有"北京","奥运"在不去除重复的情况下,A篇的相关链接会出现两次B文章。所以必须去除其中一个。 arsort($classid_id_x); //按键名排列,倒序 $tid_tid=array_keys($classid_id_x) ;//取出键名重新排列,键名即为TAG的ID:tid shuffle($tid_tid);//顺序打乱,重新排 $tid_tid_num=count($tid_tid) ; if($num<$tid_tid_num) $tid_tid_num=$num+1 ;//由于去除了本文章,所以再加一条弥补 for($i_tid=0;$i_tid<$tid_tid_num;$i_tid++){ $tid=$tid_tid[$i_tid]; $classid=$classid_all[$tid]; $id=$id_all[$tid][$classid]; if($id==$navinfor['id']) continue ; //如果是本文章,相关链接里面就不用再放了。 $tbname=$tbname_all_r[$tid]; $r_1_2 =$empire->fetch1("select title,smalltext,titleurl,dp_jt,dp_dwz from {$dbtbpre}ecms_$tbname where id='".$id."' order by newstime limit 1") ; ////////显示样式在这修改 echo $r_1_2['title'].' ' ; //////// } } ?> /** <?php OtherLink('news,info',7,3) ; ?> **/
标签:帝国cms数据表 帝国cms插件编写教程 帝国cms移动端 帝国cms迁移 帝国cms转wordpress
更新日期:2025-03-09 00:53:18 来源:网络

- 请问重置网站后台密码-云服务器问题
- 请问请问如何修改zblog的数据库连接信息?
- 请问高效管理公司网站,选择合适的网站修改工具
- 请问解决虚拟主机预装网站无法访问的问题
- 请问请问如何修改zblog的数据库连接信息以适应新的主机环境?
- 请问重置网站后台密码的正确途径
- 请问解决网站频繁出现 500 内部服务器错误的方法
- 请问移动端安全 - 正确修改移动端网站密码的方法与技巧
- 请问帝国CMS进阶 - 修改帝国管理网站模板的详细步骤与实用技巧
- 请问网站升级数据迁移之后无法访问
- 如何解决PbootCMS网站后台推送文章到百度时的“site error”错误?
- 网站admin密码忘记了怎么办
- 宝塔面板提示不是安全连接或私密连接,如何解决?
- 迅睿CMS网站用户投稿如何取消验证码
- {pboot:sql sql="语句"}[sql:字段]{/pboot:sql}万能循环标签使用介绍
- 网站提示429 Too Many Requests:用户发送了太多请求怎么办
- PbootCMS上传文件大小限制
- 如何优化网站站长信息 - 提升SEO表现与用户体验的最佳实践
- 易优cms搜索结果页如何统计关键词文章数量
- 网站源码安装后访问首页,页面错乱的处理方法
- 重置网站后台管理员账号密码
- 百度网址安全中心提醒您:该页面可能存在违法信息!如何处理?
- pbootcms模板如何做好防护
- pbootcms如何设置发布内容不自动提取缩略图(1)
- 网站提示422 Unprocessable Entity:请求格式正确但请求无法被处理怎么办
- 升级完后网站提示500错误怎么办
- Pbootcms留言“提交成功”的提示语修改(1)
- 易优cms数据表或视图不存在,请联系技术处理。
- Nginx 启动/停止 / 首页显示 / 安装 / 卸载
- PBOOTCMS中新增并开启手机端模板,以便为用户提供更好的移动设备浏览体验