"景先生毕设|www.jxszl.com

dedecms相關文章标签匹配tag關键词标题及调用全站相關文章方法

2022-10-29 16:09编辑: www.jxszl.com景先生毕设
文章介绍

我和dedecms
接触dedecms是从II00IX开始的,以前I.直用风讯和科讯(ASP的)这两款,后来从成都到东莞进I.公司打工,该公司就是使用的dedecms建站,我也跟着学了,怎么说呢刚开始觉得很强大,到后面用着越来越糟糕,很多地方做的不完善,另外I.个

 更多精彩就在: 51免费论文网|www.jxszl.com 
让大家很火的地方就是,在dede的论坛提问题基本上官方是不会给你解答的.就拿最近我新改版的AB模板网(www.adminbuy.cn)来说,我想调用相关文章,以tag优先调用,如果tag匹配不到或者匹配条数不够再以关键字匹配.

dedecms的相关文章标签(likearticle.lib.php)
新版的dedecmsV.VII相关文章标签有两个问题

I..相关文章文章调只调用当前栏目的,其他栏目的调用不到

II.只能匹配其他文章的标题(title),和关键字(keywords),没有去匹配其他文章tag

修改dedecms(V.VII)likearticle.lib.php相关文章标签调用全站相关文章
打开likearticle.lib.php(请事先备份),
查找:$query="
在其上方添加:$typeid=ANDarc.id<>$arcid;注意有两处,ANDarc.id<>$arcid这个的意思就是限制调用出来的相关文章不包含本文章,记的dedecmsVII.0之前没有做这个限制-_-,这样就取消了相关文章匹配栏目的限制了.

dedecms相关文章调用tag.关键字(keywords).标题(title)相同的文章
dedecms官方的相关文章标签并没有匹配tag相同的文章,他只是获取当前文章的tag和关键字(keywords)去匹配其他文章的标题(title).关键字(keywords)请看dede的源码片断
if(!empty($refObj->Fields[keywords]))
{
$keywords=explode(,,trim($refObj->Fields[keywords]));
$keyword=;
$n=I.;
foreach($keywordsas$k)
{
if($n>III)break;

if(trim($k)==)continue;
else$k=addslashes($k);

$keyword.=($keyword==?"CONCAT(arc.keywords,,arc.title)LIKE%$k%":"ORCONCAT(arc.keywords,,arc.title)LIKE%$k%");
$n++;
}
}
$arcid=(!empty($refObj->Fields[id])?$refObj->Fields[aid]:0);
if(empty($arcid)||$byabs==0)
{
$orderquery="ORDERBYarc.iddesc";
}
else{
$orderquery="ORDERBYABS(arc.id-".$arcid.")";
}
if($keyword!=)
{
if(!empty($typeid)){
$typeid="ANDarc.typeidIN($typeid)ANDarc.id<>$arcid";
}
$query="SELECTarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.nameruleII,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
FROM`dede_archives`arcLEFTJOIN`dede_arctype`tpONarc.typeid=tp.id
wherearc.arcrank>-I.AND($keyword)$typeid$orderquerylimit0,$row";
}
else
{
if(!empty($typeid)){
$typeid="arc.typeidIN($typeid)ANDarc.id<>$arcid";
}
$query="SELECTarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.nameruleII,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
FROM`dede_archives`arcLEFTJOIN`dede_arctype`tpONarc.typeid=tp.id
WHEREarc.arcrank>-I.AND$typeid$orderquerylimit0,$row";
}

注意以上绿色内容就是I.部分匹配条件,$keyword.=($keyword==?"CONCAT(arc.keywords,,arc.title)LIKE%$k%":"ORCONCAT(arc.keywords,,arc.title)LIKE%$k%");可以看出dedecms只CONCAT了keywords和title,没有做tag的处理,这里提供I.个方法原创作者不详.


原文链接:http://www.jxszl.com/biancheng/dedecms/73802.html