国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > 帝國Empire > 正文

帝國CMS跨表查詢相關鏈接

2024-08-28 12:21:42
字體:
來源:轉載
供稿:網友

官方的相關鏈接不靈活,樣式不能任意的修改無法跨表,很多人想跨表做相關鏈接,比如news和info都有幾篇文章,關鍵詞都有'北京',那么如何調用這些有有同一關鍵詞的文章呢?為此寫了一個函數.

小范圍的調用于本分類,稍大一點范圍可以調用同一表的文章,再大一點可以調用指定的表的文章,可以選要調用文章的數量,其實還可以升級,比如指定調用某個表的文章數量,那個表的順序等,函數沒有樣式,稍微懂一點代碼的可以自行修改,其實不是特別難,如果有哪位升級了這個函數,可以共享給大家.

  1. <?php  
  2.  
  3. function user_OtherLink($tbname,$num,$ck){ 
  4.         global $navinfor,$empire,$dbtbpre,$class_r ; 
  5.         $ck=(int)$ck ; 
  6.         if($ck==1||$ck==2){ 
  7.         $tbname=$class_r[$navinfor['classid']]['tbname'] ; 
  8.         } 
  9.         $num$num=='' ? 5 : $num ; //缺省獲取數量為5 
  10.         $tag_all=explode(',',$navinfor['infotags']); 
  11.         $tbname_num=explode(',',$tbname) ; 
  12.         $eq_num=ceil($num/count($tag_all)); 
  13.         for($i=0;$i<count($tag_all);$i++){ 
  14.         $r_1_1 =$empire->fetch1("select tagid,tagname,num,isgood,cid from {$dbtbpre}enewstags where tagname='".$tag_all[$i]."' order by tagid limit 1") ; 
  15.         $tag_id[$i]=$r_1_1['tagid'] ;        //tag的ID 
  16.         $tag_num[$i]=$r_1_1['num'] ;        //tag下的文章數量 
  17.         if($tag_num[$i]>=$eq_num){//如果TAG下的文章數量比平均的數量大或者等于,那么TAG的文章數量取平均值 
  18.         $tag_num[$i] = $eq_num ;//重新賦值 
  19.         }else{//如果TAG下的文章小于平均值,那么TAG取原有的文章數量。同時重新賦值平均值。 
  20.         $eg_tag$eq_num-$tag_num[$i] ; 
  21.         $eq_num += $eg_tag ; 
  22.         } 
  23.         //比如說有3個TAG,每個TAG下有4篇文章,現在指定要顯示10篇文章,那么每個TAG要拿出4篇,共有12篇文章 
  24.         //3個TAG,每個TAG下有3篇文章,現在指定要顯示10篇文章,那么每個TAG要拿出3篇文章,共有9篇文章 
  25.         //3個TAG,A有2篇文章,B有5篇文章,C有3篇文章,現在要顯示10篇文章,那么A拿出2篇文章,B拿出5篇文章,C拿出3篇文章,共有10篇文章 
  26.         //如果 A、B、C中除了當前文章,還有相同的文章,那么會扣除重復的那篇文章,只取一次。所以指定的數量會有偏差 
  27.         for($i_n=0;$i_n<count($tbname_num);$i_n++){ 
  28.           
  29.         $sql=$empire->query("select tid,classid,id,mid from {$dbtbpre}enewstagsdata where tagid='".$tag_id[$i]."' order by classid "); 
  30.         $ri=1 ; 
  31.                 while($r=$empire->fetch($sql)) 
  32.                 { 
  33.                 $tbname_all[$r['tid']]=$class_r[$r['classid']]['tbname'] ; 
  34.                 if($tbname_all[$r['tid']]==$tbname_num[$i_n] && $ri <= $tag_num[$i] && $navinfor['classid']!=$r['classid'] && $navinfor['id']!=$r['id']){ 
  35.                 if($ck==1&&$navinfor['classid']==$r['classid']){ 
  36.                   
  37.                 $tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ; 
  38.                 $classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ; 
  39.                 $classid_all[$r['tid']]=$r['classid'] ; 
  40.                 $id_all[$r['tid']][$r['classid']]=$r['id'] ; 
  41.                   
  42.                 }elseif($ck==2&&$class_r[$navinfor['classid']]['tbname']==$class_r[$r['classid']]['tbname']){ 
  43.                   
  44.                 $tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ; 
  45.                 $classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ; 
  46.                 $classid_all[$r['tid']]=$r['classid'] ; 
  47.                 $id_all[$r['tid']][$r['classid']]=$r['id'] ; 
  48.                   
  49.                 }elseif($ck==3){ 
  50.                   
  51.                 $tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ; 
  52.                 $classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ; 
  53.                 $classid_all[$r['tid']]=$r['classid'] ; 
  54.                 $id_all[$r['tid']][$r['classid']]=$r['id'] ; 
  55.                   
  56.                 } 
  57.                 $ri++;         
  58.                 } 
  59.                 } 
  60.         } 
  61.         } 
  62.         $classid_id_x=array_unique($classid_id);//去除重復的值 
  63.         //去除重復的值,不同的TAG會有相同的文章。所以去除重復的值。比如A篇文章里面都有"北京","奧運",兩個關鍵詞,B篇文章里面也有"北京","奧運"在不去除重復的情況下,A篇的相關鏈接會出現兩次B文章。所以必須去除其中一個。 
  64.         arsort($classid_id_x); //按鍵名排列,倒序 
  65.         $tid_tid=array_keys($classid_id_x) ;//取出鍵名重新排列,鍵名即為TAG的ID:tid 
  66.         shuffle($tid_tid);//順序打亂,重新排 
  67.         $tid_tid_num=count($tid_tid) ; 
  68.         if($num<$tid_tid_num$tid_tid_num=$num+1 ;//由于去除了本文章,所以再加一條彌補 
  69.         for($i_tid=0;$i_tid<$tid_tid_num;$i_tid++){ 
  70.         $tid=$tid_tid[$i_tid]; 
  71.         $classid=$classid_all[$tid]; 
  72.         $id=$id_all[$tid][$classid]; 
  73.         if($id==$navinfor['id']) continue ; //如果是本文章,相關鏈接里面就不用再放了。 
  74.         $tbname=$tbname_all_r[$tid]; 
  75.         $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") ;//開源軟件:Vevb.com 
  76.  
  77.         ////////顯示樣式在這修改 
  78.          echo $r_1_2['title'].' ' ; 
  79.         //////// 
  80.         } 
  81.         }         
  82. ?> 
  83. /** 
  84. <?php  
  85. OtherLink('news,info',7,3) ; 
  86. ?> 
  87. **/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 常德市| 河北省| 定安县| 化隆| 泊头市| 五台县| 彭州市| 马尔康县| 阳原县| 阜宁县| 阿城市| 灵石县| 白水县| 肇东市| 屏东县| 墨脱县| 漠河县| 监利县| 通榆县| 湘乡市| 本溪| 常熟市| 佛冈县| 临城县| 芮城县| 永年县| 乾安县| 页游| 伊宁县| 山阳县| 灵璧县| 呼伦贝尔市| 邯郸县| 仁化县| 三门县| 邹城市| 通道| 专栏| 海城市| 宁阳县| 佳木斯市|