dede织梦相关文章标签匹配tag、关键词、标题及调用全站相关文章方法

织梦教程 强烈建议 2024-02-06 13:28 125 0
  接触dedecms是从2009开始的,以前一直用风讯和科讯(ASP的)这两款,后来从成都到东莞进一公司打工,该公司就是使用的dedecms建站,我也跟着学了,怎么说呢刚开始觉得很强大,到后面用着越来越糟糕,很多地方做的不完善,另外一个让大家很火的地方就是,在dede的论坛提问题基本上官方是不会给你解答的。我想调用相关文章,以tag优先调用,如果tag匹配不到或者匹配条数不够再以关键词匹配。   新版的dedecms5.7相关文章标签有两个问题   1、相关文章文章调只调用当前栏目的,其他栏目的调用不到   2、只能匹配其他文章的标题(title),和关键词(keywords),没有去匹配其他文章tag   打开likearticle.lib.php(请事先备份),   查找:$query="   在其上方添加:$typeid=' AND arc.id<>$arcid '; 注意有两处,AND arc.id<>$arcid这个的意思就是限制调用出来的相关文章不包含本文章,记的dedecms7.0之前没有做 这个限制-_-,这样就取消了相关文章匹配栏目的限制了。   dedecms官方的相关文章标签并没有匹配tag相同的文章,他只是获取当前文章的tag和关键词(keywords)去匹配其他文章的标题(title)、关键词(keywords) 请看dede的源码片断   if(!empty($refObj->Fields['keywords']))   {   $keywords=explode(',' , trim($refObj->Fields['keywords']));   $keyword='';   $n=1;   foreach($keywords as $k)   {   if($n > 3) break;   if(trim($k)=='') continue;   else $k=addslashes($k);   .=($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' ");   $n++;   }   }   $arcid=(!empty($refObj->Fields['id']) ? $refObj->Fields['aid'] : 0);   if( empty($arcid) || $byabs==0 )   {   $orderquery=" ORDER BY arc.id desc ";   }   else {   $orderquery=" ORDER BY ABS(arc.id - ".$arcid.") ";   }   if($keyword !='')   {   if(!empty($typeid)) {   $typeid=" AND arc.typeid IN($typeid) AND arc.id<>$arcid ";   }   $query="SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,   tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath   FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id   where arc.arcrank>-1 AND () $typeid $orderquery limit 0, $row";   }   else   {   if(!empty($typeid)) {   $typeid=" arc.typeid IN($typeid) AND arc.id<>$arcid ";   }   $query="SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,   tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath   FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id   WHERE arc.arcrank>-1 AND $typeid $orderquery limit 0, $row";   }   注意以上绿色内容就是一部分匹配条件 , .=($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' ");可以看出dedecms只CONCAT了keywords和title,没有做tag的处理,这里提供一个方法原创作者不详。

时间:(2024-02-06 13:28:36)
本站资源均来自互联网或会员发布,如果不小心侵犯了您的权益请与我们联系。我们将立即删除!谢谢!