最新公告
  • 欢迎您光临仿站吧 帝国CMS模板一站式建站供应平台 . 欢迎加入VIP
  • 帝国cms跨多表调用相关信息插件

    正文概述 仿站吧   2022-05-30 14:13:34  
    帝国cms跨多表调用相关信息插件

    帝国CMS默认调用相关信息的标签为[otherlink]1,'',10,32,0,0,0[/otherlink],系统设置里面也可以选择调用相关的条件。但有个缺陷是不能跨表调用,而且如果调用信息没有就显示空白,不利于优化。

    帝国cms跨多表调用相关信息插件
    帝国cms相关信息截图

    这个是本站的跨多表调用相关信息的效果,可以看到调用了新闻表的同时,也调用模板数据表的内容。

    插件使用方法

    以下代码复制粘贴进系统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

    默认解压缩密码:www.fangzhanba.com

    积分资源

    [积分下载]:普通会员下载扣除5 积分,不扣除下载次数·
    [VIP免费]:VIP会员免费下载,扣除下载次数· 下载即代表您已阅读并同意
    仿站吧,一个优质的源码资源平台!
    仿站吧 » 帝国cms跨多表调用相关信息插件

    特别注意

    本站部分样式或模板代码移植或仿站自互联网(如有侵权,出示著作权证书联系我删除),所有代码不能用于非法站点(色情,暴力,政治类站点)。本站只提供源代码服务,不提供任何建站服务。不承担任何建站后的法律问题!本站所得费用均为制作模板劳动报酬。使用开源免费的帝国CMS作为核心,请保留帝国CMS的版权。如商用请购买帝国商业版,本站只做帝国CMS模板服务,不做任何建站、不制作采集任何网站内容、不出售任何非开源有版权源代码更不卖任何域名和空间服务器,我出卖的只是我的技术劳动力!如在本站发生交易任何资源或者下载任何资源,则代表默认同意以上文字内容。感谢小伙本的支持,做一个知法守法的好公民!