程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> dedeCMS調用指定欄目下相關文章的方法

dedeCMS調用指定欄目下相關文章的方法

編輯:PHP綜合

根據關鍵字來相關文章,就用戶體驗以及SEO來說都是非常好的,唯一不好的地方就是生成靜態的時候會慢很多

首先明確要達到兩個要求:

1、要調用指定欄目

2、調用的文章要包含指定關鍵字

相關文檔調用

{dede:likeart titlelen=’24′ row=’10′}

<li><a title=”[field:title function='htmlspecialchars(@me)'/] ” href=”[field:arcurl /]“>[field:title /]</a></li>

{/dede:likeart}

注:此為dede官方的調用模板,但至今不清楚調用依據!

指定欄目調用

{dede:arclist typeid='欄目ID' row='10' titlelen='20'}
[field:textlink/]
{/dede:arclist}

下面是我自己要達到的效果:

指定欄目(ID=4)相關新聞(keyword要調用關鍵字或title)的調用

{dede:arclist typeid='4' row='10' titlelen='20' keyword=''}
[field:textlink/]
{/dede:arclist}

到這裡你如果是只是單一關鍵詞的話那就可以了。下面的關鍵是我的關鍵詞要去調用:即keyword='{dede:field name='keywords’/}'  或者我調用標題

keyword='{dede:field name='title'/}' 

不過這種很少用,因為是調用模板。沒人願意所有的文章都調用同一個關鍵字吧!

博主推薦方法:

--------------------------------------------------------------------------------------

放在文章模板頁內
{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來說都是非常好的
唯一不好的地方就是生成靜態的時候會慢很多
 

--------------------------------------------------------------------------------------------------

附1:arclist 中 keyword 怎樣調用當前文檔的關鍵字(dedecms織夢技術論壇)

附2: {dede:arclist}的學習心得,調用文章或者軟件任何字段

附3、dedecms實現{dede:arclist keyword='[field:title/]'}效果

【Arclist 標記】   這個標記是DedeCms最常用的一個標記,也叫自由列表標記,其中 hotart、coolart、likeart、artlist、imglist、imginfolist、specart、autolist 這些標記都是由這個標記所定義的不同屬性延伸出來的別名標記。 功能說明:獲取指定的文檔列表 適用范圍:封面模板、列表模板、文檔模板 基本語法:
{dede:arclist typeid='' row='' col='' titlelen='' infolen=''
imgwidth='' imgheight='' listtype='' orderby='' keyword=''}
底層模板(InnerText)
{/dede:arclist} 屬性說明:
[1] typeid='' 表示欄目ID,在列表模板和檔案模板中一般不需要指定,在封面模板中允許用","分開表示多個欄目;
[2] row='' 表示返回文檔列表總數;
[3] col='' 表示分多少列顯示(默認為單列);
[4] titlelen='' 表示標題長度;
[5] infolen='' 表示內容簡介長度;
[6] imgwidth='' 表示縮略圖寬度;
[7] imgheight='' 表示縮略圖高度;
[8] type='' 表示檔案類型,其中空值、不使用這個屬性或type='all'時為普通文檔
§ type='commend'時,表示推薦文檔,等同於 {dede:coolart}{/dede:coolart}
§ type='image'時,表示必須含有縮略圖片的文檔,等同於{dede:imglist}{/dede:imglist}、{dede:imginfolist}{/dede:imginfolist}
§ type='spec'時,表示專題,等同於標記{dede:specart}{/dede:specart}
以上屬性值可以聯合使用,如: type='commend image' 表示推薦的圖片文檔
[9] orderby='' 表示排序方式,默認值是 senddate 按發布時間排列。
§ orderby='hot' 或 orderby='click' 表示按點擊數排列
§ orderby='pubdate' 按出版時間排列(即是前台允許更改的時間值)
§ orderby='sortrank' 按文章的新排序級別排序(如果你想使用置頂文章則使用這個屬性)
§ orderby='id' 按文章ID排序
§ orderby='postnum' 按文章評論次數排序
§ orderby='rand' 隨機獲得指定條件的文檔列表
[10] orderway='' 值為 desc 或 asc ,指定排序方式是降序還是順向排序,默認為降序。
[11] keyword='' 表示含有指定關鍵字的文檔列表,多個關鍵字用","分開
[12] channelid='' 表示特定的頻道模型ID,內置的頻道:專題(-1)、文章(1)、圖集(2)、Flash(4)、軟件(3)
[13] limit='起始,結束' 表示限定的記錄范圍,row屬性必須等於"結束 - 起始",mysql的limit語句是由0起始的,如 “limit 0,5”表示的是取前五筆記錄,“limit 5,5”表示由第五筆記錄起,取下五筆記錄,使用了本屬性後,row屬性將無效。
[14] att='數值' 表示自定義屬性值
[15] subday='天數' 表示在多少天以內的文檔,通常用於獲取指定天數的熱門文檔、推薦文檔、熱門評論文檔等
[16] partsort='排列位數' 表示自動獲得父欄目的所有子數中排列在第幾位的欄目ID,標記為 {dede:autolist}{/dede:autolist} 時,使用本屬性才有效。

底層模板字段:
ID(同 id),title,iscommend,color,typeid,ismake,description(同 info),writer,shorttitle,memberid
pubdate,senddate,arcrank,click,litpic(同 picname),typedir,typename,
arcurl(同 filename),typeurl,stime(pubdate 的"0000-00-00"格式),
textlink,typelink,imglink,image
其中:
textlink = <a href='arcurl'>title</a>
typelink = <a href='typeurl'>typename</a>
imglink = <a href='arcurl'><img src='picname' border='0' width='imgwidth' height='imgheight'></a>
image = <img src='picname' border='0' width='imgwidth' height='imgheight'>
字段調用方法:[field:varname/]
如:
{dede:arclist infolen='100'}
[field:textlink/]
<br>
[field:info/]
<br>

{/dede:arclist}
注:底層模板裡的Field實現也是織夢標記的一種形式,因此支持使用PHP語法,Function擴展等功能
如: 給當天發布的內容加上 (new) 標志
[field:senddate runphp='yes']
$ntime = time();
$oneday = 3600 * 24;
if(($ntime - @me)<$oneday) @me = "<font color='red'>(new)</font>";
else @me = "";
[/field:senddate]

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved