主頁 > 網(wǎng)站建設(shè) > 建站知識 > dedecms內(nèi)容摘要字數(shù)終極調(diào)整方法

dedecms內(nèi)容摘要字數(shù)終極調(diào)整方法

POST TIME:2017-11-13 00:25

在Dedecms中,在列表頁調(diào)用文章摘要的方法主要有:
1:[field:info /]
2:[field:description /]
3:[field:info function="cn_substr(@me,字符數(shù))"/]
4:[field:description function="cn_substr(@me,字符數(shù))"/]
第1、2種方法是直接調(diào)用文章摘要,在調(diào)用的字數(shù)問題上,當使用[field:info /]時,可以在{dede:arclist infolen=' ' }{/dede:arclist}中,設(shè)置調(diào)用摘要的字符數(shù)(最高可設(shè)置為系統(tǒng)設(shè)置的250);如果使用[field:description /],則直接使用后臺設(shè)置的摘要字符上限。顯然,這兩種方式都很被動,靈活性太差。
第3、4種方法通過function函數(shù)實現(xiàn)了對文章摘要顯示字符的靈活調(diào)整。當然,在沒有修改文章摘要內(nèi)容字符上限時,這4個方法的差異并不大。 但是,下面我們來說如何修改這一上限值,就可以體現(xiàn)出[field:description function="cn_substr(@me,字符數(shù))"/]這一方式的重要性。
在Dedecms中,與文章摘要相關(guān)的php文件主要有:
/dede/archives_add.php
/dede/archives_edit.php
/dede/article_add.php
/dede/article_edit.php
/dede/article_description_main.php
在add頁面,有一句話是:“$description = cn_substrR($description,$cfg_auot_description); ”,這句話實現(xiàn)了[field:description function="cn_substr(@me,字符數(shù))"/]這一功能。因為這一語句確實有利于頁面布局,因此我們在實驗中沒有修改。
在edit頁面,有一句話是:“$description = cn_substrR($description,250); ”,這句話中出現(xiàn)了一個熟悉的字符數(shù)“250”,這就是系統(tǒng)設(shè)置的文章摘要字符數(shù)的上限值。如果是gbk編碼則顯示出來的就是125個字。如果是utf-8編碼則是81個字。顯然,我們要突破文章摘要字符數(shù)上限,肯定得拿它開刀了。是的,這里修改“250”為其他值即可,例如“500”。這里不推薦設(shè)置得過高,一個是在列表頁沒必要展示太多內(nèi)容(展示太多內(nèi)容不如直接用body了),另一個是避免數(shù)據(jù)庫產(chǎn)生冗余。
完成上面的修改還不夠,還需要修改article_description_main.php
在article_description_main.php頁面,找到“if($dsize>250) $dsize = 250;”語句,這里限制了在后臺自動獲取摘要的字符數(shù)。把這里的“250”修改為“500”即可,也就是和之前修改的字符數(shù)一致即可。(如果你確認你的每一條文章都是手動添加,手動完成摘要獲取就不需要修改這個文件了。自動摘要獲取主要還是給大量文章和采集準備的。)
最后,登錄后臺,在系統(tǒng)-系統(tǒng)基本參數(shù)-其它選項中,自動摘要長度,改成500即可,也就是和之前修改的字符數(shù)一致即可。
完成上述修改后,我們再到頻道列表頁,通過標簽調(diào)用即可,示例標簽如下:
{dede:list typeid='' row='5' titlelen='100' orderby='new' pagesize='5'}

[field:title/]


[field:description function='cn_substr(@me,500)'/]...


{/dede:list}

通過以上方式,我們就實現(xiàn)了調(diào)用的文章摘要字符為500字符,完全突破了文章摘要250字符的系統(tǒng)限制,為網(wǎng)頁布局提供了更加廣闊的空間。



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266