织梦调用相关文章时,likearticle不能排除当前文章的解决方案
优采云 发布时间: 2020-08-06 18:14通常,当我们发布文章时,为了增加用户的停留时间,我们将在文章末尾或适当位置调用与该文章相关的文章,以再次赢得用户的点击. 在dedecms(V5版本.7)中,在调用类似文章时,实际的调用代码为{dede: likearticle}. 该代码的原理是通过识别文章的标题,类别,关键字等来提出建议,以判断相似性. 后台调用代码如下/include/taglib/likearticle.lib.php,打开文件并找到以下代码:
/ ************************************************** ****************************************************** **** /
if($ keyword!='')
{
if(!empty($ typeid)){
$ typeid =“ AND arc.typeid IN($ typeid)AND arc.id'$ aid'”;
}
$ 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`弧LEFT JOIN`dede_arctype` tp ON arc.typeid = tp.id
其中arc.arcrank> -1AND($ keyword)$ typeid $ orderquery limit 0,$ row“;
}
其他
{
if(!empty($ typeid)){
$ typeid =“ arc.typeid IN($ typeid)AND arc.id'$ aid'”;
}
$ 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`弧LEFT JOIN`dede_arctype` tp ON arc.typeid = tp.id
WHERE arc.arcrank> -1AND $ typeid $ orderquery limit 0,$ row“;
}
/ ************************************************** *************************************************** / <//p
p从上面的代码中,我们可以看到dedecms试图在程序开始时对文章进行过滤以排除该文章(AND arc.id'$ aid'“),但失败了. 如何成功排除这很简单. 我们可以在此代码中再次将其排除: AND($ keyword)$ typeid. 必须添加这两个代码. 修改完成后,以下是以下内容(请注意区别)之间的绿色粗体代码):/p
p/ ************************************************** ****************************************************** **** //p
pif($ keyword!='')/p
p{/p
pif(!empty($ typeid)){/p
p$ typeid =“ AND arc.typeid IN($ typeid)AND arc.id'$ aid'”;/p
p}/p
p$ query =“ SELECT arc. *,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,/p
ptp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath/p
pFROM`dede_archives`弧LEFT JOIN`dede_arctype` tp ON arc.typeid = tp.id/p
p其中arc.arcrank> -1AND($ keyword)$ typeidAND arc.id'$ aid'$ orderquery limit 0,$ row“;
}
其他
{
if(!empty($ typeid)){
$ typeid =“ arc.typeid IN($ typeid)AND arc.id'$ aid'”;
}
$ 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`弧LEFT JOIN`dede_arctype` tp ON arc.typeid = tp.id
WHERE arc.arcrank> -1AND $ typeidAND arc.id'$ aid'$ orderquery limit 0,$ row“;
}
<p>/ ************************************************** *************************************************** /