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

织梦教程 强烈建议 2024-02-06 14:11 101 0

  新版的织梦dedecms5.7相关文章标签有两个问题

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

  2、只能匹配其他文章的标题(title),和关键词(keywords),没有去匹配其他文章tag

  修改dedecms(5.7)likearticle.lib.php相关文章标签调用全站相关文章

  打开likearticle.lib.php(请事先备份),

  查找:$query="

  在其上方添加:$typeid=' AND arc.id<>$arcid '; 注意有两处,AND arc.id<>$arcid这个的意思就是限制调用出来的相关文章不包含本文章,记的dedecms7.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=1;

  foreach($keywords as $k)

  {

  if($n > 3) break;

  if(trim($k)=='') continue;

  else $k=addslashes($k);

  $keyword .=($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 ($keyword) $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 .=($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' ");可以看出dedecms只CONCAT了keywords和title,没有做tag的处理 。



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