怎麼解決{dede:arclist keyword='動態取得關鍵字'}?
解決{dede:arclist keyword='動態取得關鍵字'}
推薦學習:織夢cms
最近修改模版,為了讓相關文章的相關度更高,打算優化一下,不過會增加生成頁時間,如果不經常更新倒是不錯的
最近在做一個站,想做一個功能,就是有一個div區塊裡顯示的是與目前文章關鍵字相同的文章的標題。開始的時候是這樣寫的
{dede:arclist keyword='{dede:field name='keyword'}'}結果一定是不行的。 。 。 。在網路上找也沒找到。於是就自己唸程式碼,自己寫了個簡單處理的。
在arclist.lib.php 第149行
程式碼如下:
//关键字条件 if($keyword!='')
把{}中間的內容改成
{ $rowGetKeyword = $dsql->GetOne("select keywords From `dede_archives` where id='$arcid'"); $keyword=$rowGetKeyword['keywords']; $keyword = str_replace(',', '|', $keyword); $orwheres[] = " CONCAT(arc.title,arc.keywords) REGEXP '$keyword' "; }
這樣直接呼叫{ dede:arclist keyword='這裡隨便寫只要是不為空就可以'} 這樣這裡的keyword就是動態取得的了。不然只能是固定的。
就在剛剛我發文之前看到dede5.6裡有個標籤
{dede:likeart titlelen='' row=''} {/dede:likeart}
這個標籤還沒測試,不過應該就是這個功能。如果不是,大家就一用我上面的方法。測試過了,可以用。
DEDECMS相關文章以關鍵字相關的修改方法
DEDE的相關文章完全不相關,有朋友在DEDE官方放出根據TAG顯示相關文章,也是很不錯,可惜我在根據那邊文章改DEDE程式碼後老是不行,可能是能力有限,當然也有可能是程式碼有問題
現在終於出了解決方法:
1 在inc_functions.php 最後?> ;前加上
程式碼如下:
//查询指定栏目里包含相应关键字的文章,并列出 //参数说明:$showImg 是否显示缩略图,0表示不显示,1表示显示 // $titleLen 标题长度,0表示无限 // $rowCount 输出行数,0表示无限 // $typeid 栏目ID,0表示所有栏目 // $keyWord 关键字,字符串 function ShowKeyWordArc($showImg,$titleLen,$rowCount,$typeid,$keyWord){ $dsql = new DedeSql(false); $sql = TypeGetSunID($typeid,$dsql); </p> <p>//关键字分词技术 $ks = explode(" ",$keyWord); foreach($ks as $k){ $k = trim($k); if ($k!="") { $kwsqlarr[] = " (xkzzz_archives.title like '%$k%')"; //$kwsqlarr[] = " (xkzzz_archives.keywords like '%$k%') "; //如果需要相关到其它文章的关键字,解除此行注释 } } $where = implode(' OR ',$kwsqlarr); </p> <p>$sql="Select tp.namerule,tp.typedir,xkzzz_full_search.aid,xkzzz_full_search.url,xkzzz_archives.* From xkzzz_full_search left join xkzzz_archives on xkzzz_full_search.aid=xkzzz_archives.ID left join xkzzz_arctype tp on xkzzz_archives.typeid=tp.ID where {$sql} and ((xkzzz_archives.title like '%".$keyWord."%') or $where) order by xkzzz_full_search.aid desc"; $dsql->SetQuery($sql); $dsql->Execute(); $ss=""; $i=0; while($row=$dsql->GetObject()){ $url=GetFileUrl($row->ID,$row->typeid,$row->senddate,$row->title,$row->ismake,$row->arcrank,$row->namerule,$row->typedir,$row->money); if ($showImg==0){ $ss=$ss."<LI><a href='".$url."' target=_blank>"; if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen); else $ss=$ss.$row->title; $ss=$ss."</A></LI>"; }else{ $ss=$ss."<LI><span class='sjdqimggl'><a href='".$url."' target=_blank>"; </p> <p>if ($row->litpic!="") $ss=$ss."<img src='".$row- alt="怎麼解決dede:arclist keyword的相關問題" >litpic."' alt='".$row->title."' />"; else $ss=$ss."<img src='/images/titl.gif'/ alt="怎麼解決dede:arclist keyword的相關問題" >"; $ss=$ss."</a></span><span class='sjdqtxttl'><a href='".$url."' target=_blank>"; if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen); else $ss=$ss.$row->title; $ss=$ss."</A></span></LI>"; } $i++; if (($rowCount!=0)&&($i>=$rowCount)) return $ss; } return $ss; }
2 放在文章範本頁內
{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,”@me”)’/}
就表示是取所有欄位內的相關文章(與目前文章的關鍵字相關),標題長度最大32,最多顯示10條,不顯示縮圖
或
{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,”高三 语文”)’/} 可以找到标题里,含有“高三 语文”,或者含有“高三”或“语文”的文章
例如,這一段:
相关文章 {dede:likeart titlelen=’24′ row=’10′} [field:textlink/]< > {/dede:likeart}
就改成:
相关文章 {dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,”@me”)’/}
申明:這個函數不是我寫的
根據關鍵字來相關文章,就使用者體驗以及SEO來說都是非常好的
但是唯一不好的地方就是生成靜態的時候會慢很多,哈哈,伺服器又要辛苦了
以上是怎麼解決dede:arclist keyword的相關問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)