dede:likearticle文章标签和tag标签关联错误解决方法
<p><span>织梦5.7有个dede:likearticle标记是用来文章的关联,但是在使用的过程中,我们却发现这个关联实在是鸡肋,作者却发现,大家在使用织梦5.7搜索的时候是不是还能勉强接受呢?作者就把dede的搜索功能给替换到这个likearticle上,看样子的确是好多了。</span></p>
<p>
<strong>代码简介</strong></p>
<p>
<span>作者把默认以keywords关键字来关联文章改成以tags来关联,并且加了一个判断,在执行以tags的模糊查询之后,如果查询的数据为空的话,就直接再直接再次查询本栏目下所有推荐的文章,这个比较好,就是保持着一直有返回值。</span><br><span>作者考虑到有的文章没有tags,而有的文章有tags却没有查询到文章,所以就先判断是否有tags如果没有就直接查询本栏目下推荐文章,如果有tags标签却查询到为空的文章那么也返回当前栏目下的推荐文章。</span></p>
<p>
<strong>likearticle和tag标签关联解决方法/步骤</strong></p>
<p>
<strong>第1步</strong><span>:使用记事本或一些工具打开“根目录\include\taglib\likearticle.lib.php”此文件。</span><br><br><strong>第2步</strong><span>:搜索“['keywords']”,全部替换成</span><span>['tags']</span><span>并保存。</span><br><span>电脑互助网注;:</span><br><span>原代码55行:$keyword = ( !empty($refObj->Fields['keywords']) ? $refObj->Fields['keywords'] : '' );</span><br><span>原代码75行:if(!empty($refObj->Fields['keywords']))</span><br><span>原代码77行:$keywords = explode(',' , trim($refObj->Fields['keywords']));</span><br><br><strong>第3步</strong><span>:在87行下添加“</span><span><span>$keyword .= $keyword=='' ? " CONCAT(arc.title,arc.keywords,arc.shorttitle) REGEXP '($k)'": " OR CONCAT(arc.title,arc.keywords,arc.shorttitle) REGEXP '($k)'";</span></span><span>”</span><br><span>源代码87行注销://$keyword .= ($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' ");</span><br><font color="#428bca" face="tahoma, arial, Microsoft YaHei"><span><img style="max-width:100%!important;height:auto!important;"title="dede:likearticle文章标签和tag标签关联错误解决方法" alt="dede:likearticle文章标签和tag标签关联错误解决方法" src="https://zhuji.jb51.net/uploads/img/20230519/fcd6a49845423d76ad13de07bfe72c98.jpg"></span></font><br><span>电脑互助网添加代码意思:原来的模糊查询语句,作者在这里多加了一个短标题也要查询,不过我不喜欢用linke这个模糊查询,所以在这里换成REGEXP查询。</span><br><br><strong>第4步</strong><span>:在第107行下面添加以下代码并保存。</span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
/**<br>
按tag标签关联文章内容 query2为备用,如果query为空的话,第二个就直接显示出来<br>
*/<br>
$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";<br>
$typeids=$refObj->Fields['typeid'];//取出当前栏目ID<br>
$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";<br>
/*query3是判断是否为空用的*/<br>
$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具体按自己的数据库的表字段写吧,我这是直接写死了,哎没办法,能力有限。<br>
/*<br>
这里是判断tags标签查询的是否为空值,如果是空值,就全部使用推荐返回值,如果有值,就直接显示tags关联。<br>
*/<br>
$result =mysql_query($query3);//query36判断专用的,主要是作者不会用SetQuery呀,郁闷。我是直接拼的SQL<br>
if(mysql_num_rows($result)<1){<br>
$dsql->SetQuery($query2);<br>
}else{<br>
$dsql->SetQuery($query);<br>
}</p>
<p>
<br><span>以下是源代码101行到107全部注销的图,单击<u>图片</u>查看大图:</span><br><font color="#428bca" face="tahoma, arial, Microsoft YaHei"><span><img style="max-width:100%!important;height:auto!important;"title="dede:likearticle文章标签和tag标签关联错误解决方法" alt="dede:likearticle文章标签和tag标签关联错误解决方法" src="https://zhuji.jb51.net/uploads/img/20230519/efccf1c8cf9d408ec3c3b5c45990fe9e.jpg"></span></font><br><span>以上代码意思:按tag标签关联文章内容 query2为备用,如果按tags标记查询的数据为空的话,第二个就可以用到了。</span><br><br><strong>第5步</strong><span>:在第原代码117行下添加以下代码并保存。</span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
$typeids=$refObj->Fields['typeid'];//取出当前栏目ID<br>
$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 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";<br>
$dsql->SetQuery($query);</p>
<p>
<br><span>以下是源代码111行到117全部注销的图,单击图片查看大图:</span><br><font color="#428bca" face="tahoma, arial, Microsoft YaHei"><span><img style="max-width:100%!important;height:auto!important;"title="dede:likearticle文章标签和tag标签关联错误解决方法" alt="dede:likearticle文章标签和tag标签关联错误解决方法" src="https://zhuji.jb51.net/uploads/img/20230519/68870e187580ebdbd00c4ddc8a484459.jpg"></span></font><br><span>以上代码意思:第5步查的是当tags标签有内容时查的,第5步就是当tags标签不为空时执行的SQL。</span><br><br><strong>第6步</strong><span>:完成之后并上传到空间,即可,作者就不演示代码后的效果了,如果非想看效果的话,看本文右侧的相关文章就明白了。</span><br><span>筌于一些网友对SQL不敏感,可能会认为本文写的一点都看不懂,自己也改不了,没关系,这是下载地址:</span>likearticle.lib.rar</p>
頁:
[1]