最实用帝国CMS跨表查询相关链接实现方法

来源:undefined 2025-01-04 09:34:26 1094

本文实例讲述了帝国cms跨表查询相关链接实现方法。分享给大家供大家参考。具体分析如下:

官方的相关链接不灵活,样式不能任意的修改且无法跨表,很多人想跨表做相关链接,比如news和info都有几篇文章,关键词都有北京,那么如何调用这些有有同一关键词的文章呢?为此写了一个自定义函数.

推荐学习《帝国cms教程

小范围的调用于本分类,稍大一点范围可以调用同一表的文章,再大一点可以调用指定的表的文章,可以选要调用文章的数量,其实还可以升级,比如指定调用某个表的文章数量,那个表的顺序等,函数没有样式,稍微懂一点代码的可以自行修改,其实不是特别难,如果有哪位升级了这个函数,可以共享给大家.

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

<?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[&#39;classid&#39;]][&#39;tbname&#39;] ;

}

$num= $num==&#39;&#39; ? 5 : $num ; //缺省获取数量为5

$tag_all=explode(&#39;,&#39;,$navinfor[&#39;infotags&#39;]);

$tbname_num=explode(&#39;,&#39;,$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]&gt;=$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>query("select tid,classid,id,mid from {$dbtbpre}enewstagsdata where tagid=".$tag_id[$i]." order 

by classid ");

$ri=1 ;

while($r=$empire-&gt;fetch($sql))

{

$tbname_all[$r[tid]]=$class_r[$r[classid]][tbname] ;

if($tbname_all[$r[tid]]==$tbname_num[$i_n] &amp;&amp; $ri 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].  ;

////////

}

}

?&gt;

/**

<?php OtherLink(&#39;news,info&#39;,7,3) ;

?>

**/</count>

登录后复制

希望本文所述对大家的帝国CMS建站有所帮助。

以上就是最实用帝国CMS跨表查询相关链接实现方法的详细内容,更多请关注php中文网其它相关文章!

最新文章