dede:likearticle文章标签和tag标签关联错误怎么办-DEDECMS

资源魔 54 0

dede:likearticle文章标签以及tag标签联系关系谬误怎样办?

织梦5.7有个dede:likearticle标志是用来文章的联系关系,然而正在应用的进程中,咱们却发现这个联系关系真实是鸡肋,作者却发现,各人正在应用织梦5.7搜寻的时分是否是还能委曲承受呢?作者就把dede的搜寻性能给交换到这个likearticle上,看样子确实是很多多少了。

保举学习:织梦cms

代码简介

作者把默许以keywords要害字来联系关系文章改为以tags来联系关系,而且加了一个判别,正在执行以tags的模胡查问之后,假如查问的数据为空的话,就间接再间接再次查问本栏目下一切保举的文章,这个比拟好,就是放弃着不断有前往值。

作者思考到有的文章不tags,而有的文章有tags却不查问到文章,以是就先判别能否有tags假如不就间接查问本栏目下保举文章,假如有tags标签却查问到为空的文章那末也前往以后栏目下的保举文章。

likearticle以及tag标签联系关系处理办法/步骤

第1步:应用记事本或一些对象关上“根目次\include\taglib\likearticle.lib.php”此文件。

第2步:搜寻“['keywords']”,全副交换成['tags']并保留。

电脑相助网注;:

原代码55行:$keyword = ( !empty($refObj->Fields['keywords']) ? $refObj->Fields['keywords'] : '' );

原代码75行:if(!empty($refObj->Fields['keywords']))

原代码77行:$keywords = explode(',' , trim($refObj->Fields['keywords']));

第3步:正在87行下增加“$keyword .= $keyword=='' ? " CONCAT(arc.title,arc.keywords,arc.shorttitle) REGEXP '($k)'": " OR CONCAT(arc.title,arc.keywords,arc.shorttitle) REGEXP '($k)'";”

源代码87行登记://$keyword .= ($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' ");

9ccc15fe2c9c3bc6a6bb2a780c1cc4b.png

电脑相助网增加代码意义:原来的模胡查问语句,作者正在这里多加了一个短题目也要查问,不外我没有喜爱用linke这个模胡查问,以是正在这里换成REGEXP查问。

第4步:正在第107行上面增加如下代码并保留。

代码以下:

/**
按tag标签联系关系文章内容 query2为备用,假如query为空的话,第二个就间接显示进去
*/
$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 $keyword and arc.ismake = 1 and arc.id <> $arcid ORDER BY arc.sortrank desc LIMIT 0,$row";
$typeids=$refObj->Fields['typeid'];//掏出以后栏目ID
$query2 = "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 FIND_IN_SET('c', arc.flag)>0 and arc.ismake = 1 And (arc.typeid in ($typeids) or arc.typeid2 in($typeids) or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,$typeids,%' ) And arc.arcrank > -1 ORDER BY arc.sortrank desc LIMIT 0,$row";
/*query3是判别能否为空用的*/
$query3 = "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 $keyword and arc.ismake = 1 and arc.id <> $arcid ORDER BY arc.sortrank desc LIMIT 0,$row";//这里的SQL详细按本人的数据库的表字段写吧,我这是间接写死了,哎没方法,才能无限。
/*
这里是判别tags标签查问的能否为空值,假如是空值,就全副应用保举前往值,假如有值,就间接显示tags联系关系。
*/
$result =mysql_query($query3);//query36判别公用的,次要是作者没有会用SetQuery呀,忧郁。我是间接拼的SQL
if(mysql_num_rows($result)<1){
$dsql->SetQuery($query2);
}else{
$dsql->SetQuery($query);
}

标签: 织梦教程 织梦技巧 dedecms教程 dede问题解决 dede

抱歉,评论功能暂时关闭!