帝國CMS跨表查詢相關(guān)鏈接實(shí)現(xiàn)方法
本文實(shí)例講述了帝國CMS跨表查詢相關(guān)鏈接實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:
官方的相關(guān)鏈接不靈活,樣式不能任意的修改且無法跨表,很多人想跨表做相關(guān)鏈接,比如news和info都有幾篇文章,關(guān)鍵詞都有'北京',那么如何調(diào)用這些有有同一關(guān)鍵詞的文章呢?為此寫了一個(gè)自定義函數(shù).
小范圍的調(diào)用于本分類,稍大一點(diǎn)范圍可以調(diào)用同一表的文章,再大一點(diǎn)可以調(diào)用指定的表的文章,可以選要調(diào)用文章的數(shù)量,其實(shí)還可以升級(jí),比如指定調(diào)用某個(gè)表的文章數(shù)量,那個(gè)表的順序等,函數(shù)沒有樣式,稍微懂一點(diǎn)代碼的可以自行修改,其實(shí)不是特別難,如果有哪位升級(jí)了這個(gè)函數(shù),可以共享給大家.
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 ; //缺省獲取數(shù)量為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下的文章數(shù)量
if($tag_num[$i]>=$eq_num){//如果TAG下的文章數(shù)量比平均的數(shù)量大或者等于,那么TAG的文章數(shù)量取平均值
$tag_num[$i] = $eq_num ;//重新賦值
}else{//如果TAG下的文章小于平均值,那么TAG取原有的文章數(shù)量。同時(shí)重新賦值平均值。
$eg_tag= $eq_num-$tag_num[$i] ;
$eq_num += $eg_tag ;
}
//比如說有3個(gè)TAG,每個(gè)TAG下有4篇文章,現(xiàn)在指定要顯示10篇文章,那么每個(gè)TAG要拿出4篇,共有12篇文章
//3個(gè)TAG,每個(gè)TAG下有3篇文章,現(xiàn)在指定要顯示10篇文章,那么每個(gè)TAG要拿出3篇文章,共有9篇文章
//3個(gè)TAG,A有2篇文章,B有5篇文章,C有3篇文章,現(xiàn)在要顯示10篇文章,那么A拿出2篇文章,B拿出5篇文章,C拿出3篇文章,共有10篇文章
//如果 A、B、C中除了當(dāng)前文章,還有相同的文章,那么會(huì)扣除重復(fù)的那篇文章,只取一次。所以指定的數(shù)量會(huì)有偏差
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);//去除重復(fù)的值
//去除重復(fù)的值,不同的TAG會(huì)有相同的文章。所以去除重復(fù)的值。比如A篇文章里面都有"北京","奧運(yùn)",兩個(gè)關(guān)鍵詞,B篇文章里面也有"北京","奧運(yùn)"在不去除重復(fù)的情況下,A篇的相關(guān)鏈接會(huì)出現(xiàn)兩次B文章。所以必須去除其中一個(gè)。
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 ;//由于去除了本文章,所以再加一條彌補(bǔ)
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 ; //如果是本文章,相關(guān)鏈接里面就不用再放了。
$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) ;
?>
**/
希望本文所述對(duì)大家的帝國CMS建站有所幫助。
上一篇:帝國CMS會(huì)員注冊加入問答驗(yàn)證的方法
欄 目:帝國cms
下一篇:帝國CMS列表頁中獲取當(dāng)前信息所屬專題名稱的方法
本文標(biāo)題:帝國CMS跨表查詢相關(guān)鏈接實(shí)現(xiàn)方法
本文地址:http://mengdiqiu.com.cn/a1/diguocms/12441.html
您可能感興趣的文章
- 05-31帝國CMS調(diào)用欄目自定義字段方法
- 05-31php獲取帝國CMS各種路徑的幾種方法
- 05-31帝國CMS靈動(dòng)標(biāo)簽無限嵌套方法
- 05-31帝國CMS會(huì)員地址 收藏夾地址 錯(cuò)誤舉報(bào)地址整理
- 01-11帝國CMS調(diào)用自定義列表名稱的方法(簡單二次開發(fā)實(shí)現(xiàn))
- 01-11帝國CMS 功能解密 網(wǎng)站安全防火墻使用說明
- 01-11帝國CMS在自定義列表中獲取當(dāng)前列表ID的方法
- 01-11帝國cms 頂踩 百分比 數(shù)字 完美顯示解決
- 01-11帝國下載系統(tǒng)2.5添加迅雷快車專用鏈的方法
- 01-11帝國CMS擴(kuò)展SQL程序編寫介紹


閱讀排行
本欄相關(guān)
- 05-31帝國CMS調(diào)用欄目自定義字段方法
- 05-31php獲取帝國CMS各種路徑的幾種方法
- 05-31帝國CMS靈動(dòng)標(biāo)簽無限嵌套方法
- 05-31帝國CMS會(huì)員地址 收藏夾地址 錯(cuò)誤舉報(bào)
- 01-11帝國CMS調(diào)用自定義列表名稱的方法(簡
- 01-11帝國CMS在自定義列表中獲取當(dāng)前列表
- 01-11帝國CMS 功能解密 網(wǎng)站安全防火墻使用
- 01-11帝國cms 頂踩 百分比 數(shù)字 完美顯示解
- 01-11帝國下載系統(tǒng)2.5添加迅雷快車專用鏈
- 01-11下載內(nèi)容頁顯示迅雷,快車加密地址標(biāo)
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載