這篇文章給大家分享的是有關(guān)解決dede:likearticle文章標(biāo)簽和tag標(biāo)簽關(guān)聯(lián)錯(cuò)誤的問題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十余年網(wǎng)站建設(shè)經(jīng)驗(yàn)成都創(chuàng)新互聯(lián)公司是成都老牌網(wǎng)站營(yíng)銷服務(wù)商,為您提供網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5開發(fā)、網(wǎng)站制作、高端網(wǎng)站設(shè)計(jì)、微信小程序定制開發(fā)服務(wù),給眾多知名企業(yè)提供過好品質(zhì)的建站服務(wù)。
dede:likearticle文章標(biāo)簽和tag標(biāo)簽關(guān)聯(lián)錯(cuò)誤怎么辦?
織夢(mèng)5.7有個(gè)dede:likearticle標(biāo)記是用來文章的關(guān)聯(lián),但是在使用的過程中,我們卻發(fā)現(xiàn)這個(gè)關(guān)聯(lián)實(shí)在是雞肋,作者卻發(fā)現(xiàn),大家在使用織夢(mèng)5.7搜索的時(shí)候是不是還能勉強(qiáng)接受呢?作者就把dede的搜索功能給替換到這個(gè)likearticle上,看樣子的確是好多了。
代碼簡(jiǎn)介
作者把默認(rèn)以keywords關(guān)鍵字來關(guān)聯(lián)文章改成以tags來關(guān)聯(lián),并且加了一個(gè)判斷,在執(zhí)行以tags的模糊查詢之后,如果查詢的數(shù)據(jù)為空的話,就直接再直接再次查詢本欄目下所有推薦的文章,這個(gè)比較好,就是保持著一直有返回值。
作者考慮到有的文章沒有tags,而有的文章有tags卻沒有查詢到文章,所以就先判斷是否有tags如果沒有就直接查詢本欄目下推薦文章,如果有tags標(biāo)簽卻查詢到為空的文章那么也返回當(dāng)前欄目下的推薦文章。
likearticle和tag標(biāo)簽關(guān)聯(lián)解決方法/步驟
第1步:使用記事本或一些工具打開“根目錄\include\taglib\likearticle.lib.php”此文件。
第2步:搜索“['keywords']”,全部替換成['tags']并保存。
電腦互助網(wǎng)注;:
原代碼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%' ");
電腦互助網(wǎng)添加代碼意思:原來的模糊查詢語(yǔ)句,作者在這里多加了一個(gè)短標(biāo)題也要查詢,不過我不喜歡用linke這個(gè)模糊查詢,所以在這里換成REGEXP查詢。
第4步:在第107行下面添加以下代碼并保存。
代碼如下:
/** 按tag標(biāo)簽關(guān)聯(lián)文章內(nèi)容 query2為備用,如果query為空的話,第二個(gè)就直接顯示出來 */ $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'];//取出當(dāng)前欄目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具體按自己的數(shù)據(jù)庫(kù)的表字段寫吧,我這是直接寫死了,哎沒辦法,能力有限。 /* 這里是判斷tags標(biāo)簽查詢的是否為空值,如果是空值,就全部使用推薦返回值,如果有值,就直接顯示tags關(guān)聯(lián)。 */ $result =MySQL_query($query3);//query36判斷專用的,主要是作者不會(huì)用SetQuery呀,郁悶。我是直接拼的SQL if(mysql_num_rows($result)<1){ $dsql->SetQuery($query2); }else{ $dsql->SetQuery($query); }
以下是源代碼101行到107全部注銷的圖,單擊圖片查看大圖:
以上代碼意思:按tag標(biāo)簽關(guān)聯(lián)文章內(nèi)容 query2為備用,如果按tags標(biāo)記查詢的數(shù)據(jù)為空的話,第二個(gè)就可以用到了。
第5步:在第原代碼117行下添加以下代碼并保存。
代碼如下:
$typeids=$refObj->Fields['typeid'];//取出當(dāng)前欄目ID $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"; $dsql->SetQuery($query);
以下是源代碼111行到117全部注銷的圖,單擊圖片查看大圖:
以上代碼意思:第5步查的是當(dāng)tags標(biāo)簽有內(nèi)容時(shí)查的,第5步就是當(dāng)tags標(biāo)簽不為空時(shí)執(zhí)行的SQL。
第6步:完成之后并上傳到空間,即可,作者就不演示代碼后的效果了,如果非想看效果的話,看本文右側(cè)的相關(guān)文章就明白了。
筌于一些網(wǎng)友對(duì)SQL不敏感,可能會(huì)認(rèn)為本文寫的一點(diǎn)都看不懂,自己也改不了,沒關(guān)系,這是下載地址:likearticle.lib.rar
感謝各位的閱讀!關(guān)于解決dede:likearticle文章標(biāo)簽和tag標(biāo)簽關(guān)聯(lián)錯(cuò)誤的問題就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!