帝国cms相关链接代码:无内容时调用当前栏目最热信息

发布时间:2021-01-16编辑:脚本学堂
在帝国cms相关链接功能中,没有内容时调用当前栏目最热信息,以帝国cms7.0为例,介绍了相关代码的修改方法。

cms/ target=_blank class=infotextkey>帝国cms文章模板中,经常会使用到相关链接功能,比如用于调取相关文章、感兴趣的文章等,对于页面间权重传递也是很有帮助的。

有一个问题时,当相关内容较少时,内容显的空落落的,可以考虑显示当前栏目最热信息。

具体修改方法:

帝国cms相关链接,以帝国cms 7.0为例,代码 在/e/class/functions.php:
 

$keyboardtext='<?=GetKeyboard($ecms_gr[keyboard],$ecms_gr[keyid],$ecms_gr[classid],$ecms_gr[id],$class_r
[$ecms_gr[classid]][link_num])?>';

可见,相关链接信息是通过GetKeyboard得到,找到 GetKeyboard修改即可,在/e/class/functions.php文件中:
 

复制代码 代码示例:
// 取得相关链接
function GetKeyboard($keyboard,$keyid,$classid,$id,$link_num){
global $empire,$public_r,$class_r,$fun_r,$dbtbpre;
if($keyid&&$link_num)
{
$add="id in (".$keyid.")";
$tr=$empire->fetch1("select otherlinktemp,otherlinktempsub,otherlinktempdate from ".GetTemptb("ene
wspubtemp")." limit 1"); //取得相关链接模板
$temp_r=explode("[!--empirenews.listtemp--]",$tr[otherlinktemp]);
$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvolume fr
om {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$add." order by newstime desc limit $link_num");
while($link_r=$empire->fetch($key_sql))
{
//------------
$text=RepOtherTemp($temp_r[1],$link_r,$tr);
$text=str_replace('[!--no--]',$i,$text);
$text=str_replace('[!--state--]',$link_r[state],$text);
$text=str_replace('[!--lastvolume--]',$link_r[lastvolume],$text);
$keyboardtext.=$text;
//$keyboardtext.=RepOtherTemp($temp_r[1],$link_r,$tr);
}
 
$keyboardtext=$temp_r[0].$keyboardtext.$temp_r[2];
}
else
{
//---生成时加载一次
$keyid=GetKeyid($keyboard,$classid,0,$link_num);
if($keyid)
{
$fsql=$empire->query("update {$dbtbpre}ecms_".$class_r[$classid][tbname]."_data_1 set  key
id='$keyid' where id='$id'");
$add="id in (".$keyid.")";
$tr=$empire->fetch1("select otherlinktemp,otherlinktempsub,otherlinktempdate from ".GetTe
mptb("enewspubtemp")." limit 1"); //取得相关链接模板
$temp_r=explode("[!--empirenews.listtemp--]",$tr[otherlinktemp]);
$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvol
ume from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$add." order by newstime desc limit $lin
k_num");
while($link_r=$empire->fetch($key_sql))
{
//-------------
$text=RepOtherTemp($temp_r[1],$link_r,$tr);
$text=str_replace('[!--no--]',$i,$text);
$text=str_replace('[!--state--]',$link_r[state],$text);
$text=str_replace('[!--lastvolume--]',$link_r[lastvolume],$text);
$keyboardtext.=$text; // www.jb200.com
//$keyboardtext.=RepOtherTemp($temp_r[1],$link_r,$tr);
}
 
$keyboardtext=$temp_r[0].$keyboardtext.$temp_r[2];
}
else //没有关键字时读取人气最高的几条信息
{
$add="";
$tr=$empire->fetch1("select otherlinktemp,otherlinktempsub,otherlinktempdate from ".GetTe
mptb("enewspubtemp")." limit 1"); //取得相关链接模板
$temp_r=explode("[!--empirenews.listtemp--]",$tr[otherlinktemp]);
$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvol
ume from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where  order by onclick desc limit $link_num");
while($link_r=$empire->fetch($key_sql))
{
//----
$text=RepOtherTemp($temp_r[1],$link_r,$tr);
$text=str_replace('[!--no--]',$i,$text);
$text=str_replace('[!--state--]',$link_r[state],$text);
$text=str_replace('[!--lastvolume--]',$link_r[lastvolume],$text);
$keyboardtext.=$text;
//$keyboardtext.=RepOtherTemp($temp_r[1],$link_r,$tr);
}
 
$keyboardtext=$temp_r[0].$keyboardtext.$temp_r[2];
}
//--------
//$keyboardtext=$fun_r['NotLinkNews'];
}
return $keyboardtext;
}

官方代码中,在没有关键字时直接给出:
$keyboardtext=$fun_r['NotLinkNews'];
这显示无相关信息

这里做了一个无keyid时再去获取一次keyid,
$keyid=GetKeyid($keyboard,$classid,0,$link_num);

确实没有关键字时,再读取人气最高的几条信息:
 

$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvolume from {$dbt
bpre}ecms_".$class_r[$classid][tbname]." where  order by onclick desc limit $link_num");