欢迎!我白天是个邮递员,晚上就是个有抱负的演员。这是我的网站。我住在天朝的帝都,有条叫做Jack的狗。
帝国CMS默认调用相关信息的标签为[otherlink]1,'',10,32,0,0,0[/otherlink],系统设置里面也可以选择调用相关的条件。但有个缺陷是不能跨表调用,而且如果调用信息没有就显示空白,不利于优化。

这个是本站的跨多表调用相关信息的效果,可以看到调用了新闻表的同时,也调用模板数据表的内容。
插件使用方法以下代码复制粘贴进系统eclassuserfun.php文件中
//跨表调用相关链接//返回相关链接操作类型function u_OtherLinkQuery($classid,$line,$enews,$doing){global $empire,$public_r,$class_r,$class_zr,$navinfor,$dbtbpre,$eyh_r,$etable_r,$class_tr;if($enews==1)//按表{if(strstr($classid,','))//多表{$tbr=explode(',',$classid);$duo=1;}else{$tbname=$classid;$duo=0;}}elseif($enews==2)//按栏目{if($classid=='selfinfo')//当前栏目{$classid=$navinfor['classid'];}$tbname=$class_r[$classid]['tbname'];if($class_r[$classid][islast]){$and="classid='$classid'";}else{$and=ReturnClass($class_r[$classid][sonclass]);}}elseif($enews==3)//按标题分类{$tbname=$class_tr[$classid]['tbname'];$and="ttid='$classid'";}else//默认{$tbname=$class_r[$navinfor[classid]]['tbname'];}//关键字$keys='';if(!empty($enews)){$repadd='';$keyr=explode(',',$navinfor['keyboard']);$count=count($keyr);for($i=0;$i<$count;$i++){if($i==0){$or='';}else{$or=' or ';}$repadd.=$or."[!--f--!] like '%".$keyr[$i]."%'";}//搜索范围if($public_r['newslink']==1){$keys='('.str_replace('[!--f--!]','keyboard',$repadd).')';}elseif($public_r['newslink']==2){$keys='('.str_replace('[!--f--!]','keyboard',$repadd).' or '.str_replace('[!--f--!]','title',$repadd).')';}else{$keys='('.str_replace('[!--f--!]','title',$repadd).')';}}else{$keys='id in ('.$navinfor['keyid'].')';}//当前信息if($tbname==$class_r[$navinfor[classid]][tbname]){$and.=empty($and)?"id<>'$navinfor[id]'":" and id<>'$navinfor[id]'";}//图片信息if($doing){$and.=empty($and)?"ispic=1":" and ispic=1"; }if($and){$and.=' and ';}if(empty($line)){$line=$class_r[$navinfor[classid]]['link_num'];}//优化$yhvar='otherlink';$yhid=$etable_r[$tbname][yhid];$yhadd='';if($yhid){$yhadd=ReturnYhSql($yhid,$yhvar,1);}if($duo==0){$query="select * from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$and.$keys." order by newstime desc limit $line";}else{$nowtb=$class_r[$navinfor['classid']]['tbname'];$nowid=$navinfor['id'];$query='';foreach($tbr as $n => $tbname){$t=$n+1;if($tbname==$nowtb){$q.$n="select title,titleurl,newstime,classid,titlepic from ".$dbtbpre."ecms_".$tbname." where ".$yhadd.$and.$keys." and (id>$nowid or id<$nowid) order by newstime desc limit ".$line;}else{$q.$n="select title,titleurl,newstime,classid,titlepic from ".$dbtbpre."ecms_".$tbname." where ".$yhadd.$and.$keys." order by newstime desc limit ".$line;}$query.='select * from ('.$q.$n.') t'.$t.' union all ';}$query=substr($query,0,-10).' order by newstime desc limit '.$line;}$sql=$empire->query1($query);if(!$sql){echo"SQL Error: ".ReRepSqlTbpre($query);}return $sql;}//相关链接标签function u_GetOtherLinkInfo($tempid,$classid='',$line=0,$strlen=60,$have_class=0,$enews=0,$doing=0){global $empire,$navinfor,$public_r;if(empty($navinfor['keyboard'])||(empty($enews)&&!$navinfor['keyid'])){return '';}$sql=u_OtherLinkQuery($classid,$line,$enews,$doing);if(!$sql){return "";}//取得模板$tr=sys_ReturnBqTemp($tempid);if(empty($tr['tempid'])){return "";}$listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);$subnews=$tr[subnews];$listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);$rownum=$tr[rownum];$formatdate=$tr[showdate];$docode=$tr[docode];//替换变量$listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);if(empty($rownum)){$rownum=1;}//字段$ret_r=ReturnReplaceListF($tr[modid]);//列表$list_exp="[!--empirenews.listtemp--]";$list_r=explode($list_exp,$listtemp);$listtext=$list_r[1];$no=1;$changerow=1;while($r=$empire->fetch($sql)){$r[oldtitle]=$r[title];//替换列表变量$repvar=ReplaceListVars($no,$listvar,$subnews,$strlen,$formatdate,$url,$have_class,$r,$ret_r,$docode);$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);$changerow+=1;//超过行数if($changerow>$rownum){$changerow=1;$string.=$listtext;$listtext=$list_r[1];}$no++; }//多余数据 if($changerow<=$rownum&&$listtext<>$list_r[1]){$string.=$listtext; } $string=$list_r[0].$string.$list_r[2];echo $string;}
后台-模板-标签-导入附件中的mylink.bq文件
前台调用方法[mylink]标签模板ID,操作对象,调用条数,标题截取字数,是否显示栏目名,操作类型,只显示标题图片的信息[/mylink]
标签模板ID:查看标签模板ID点这里
操作对象:对应操作类型的表/栏目/专题。空则为默认。
操作类型:0为默认;1为按表(多个表格式:'news,photo');2为按栏目;3为按标题分类
是否显示栏目名:0为不显示;1为显示
只显示标题图片的信息:0为不限;1为只显示标题图片的信息
调用实例[mylink]2,'news,download,photo,flash,movie,shop,article,info',10,32,0,1,0[/mylink]
标签模板id——2
调用的跨表——news,download,photo,flash,movie,shop,article,info
调用条数——10
截取标题——32
不显示栏目名——0
按数据表调用——1
不限图片属性——0
