wordpress首頁顯示摘要的幾種方法


大部分人的習慣都是在首頁顯示文章的摘要,本文總結了幾種在首頁顯示摘要的方法。

more標簽

這種方法應該是最靈活的一種方法,操作也很簡單,只需要你在編輯文章的時候插入more標簽 或者使用快捷鍵alt+shift+t,效果如下 那么如果你在主題的首頁模板中調用the_content函數,首頁的文章摘要就顯示more之前的內容。相反,如果沒有插入more標簽,就會顯示全文。

手動輸入摘要

在首頁模板中(比如home.php或index.php)中調用the_excerpt函數顯示摘要,如果你在編輯文章的時候,在下面的“摘要”內輸入了內容,則會顯示該“摘要”里的內容 如果“摘要”里沒有內容,就輸出more標簽前的內容,再如果沒有more標簽,就輸出固定字數的摘要(這個固定的字數好像是默認的,很長,我還沒找到更改這個字數的方法,有知道的希望告之)。

顯示固定的字數

如果你的主機開通了php的mb_string擴展的話,可以使用mb_strimwidth函數來截取文章內容,以達到顯示固定字數摘要的目的,比如首頁摘要顯示前200個字
echo mb_strimwidth(strip_tags($post->post_content),0,200,'......');
這樣就會顯示文章的前200個字,隨后跟着一個省略號。這個mb_strimwidth函數可以很好截取中文字符。我們再稍改造一下,就可以顯示“閱讀全文”鏈接的效果
echo mb_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[閱讀全文]</a>');
但是,如果假如萬一你的主機沒有激活php的mb_string擴展,使用這個函數就會報錯。在這種情況下,我們可以自定義一個類似的函數,下面是我寫的一個截取utf-8字符串的函數dm_strimwidth,也是我正在使用的方法
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
 $output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
 return $output.$trimmarker;
}
使用方法和前面的mb_strimwidth是一樣的,不過使用前你需要把上面的函數定義復制到functions.php文件中,然后調用
echo dm_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[閱讀全文]</a>');

綜合方法

有時候下面這種做法也是不錯的,即如果給文章手動添加了摘要,就顯示這個手動添加的摘要,如果沒有就顯示固定的字數。方法如下:
if(has_excerpt()) the_excerpt();
 else
         echo mb_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[閱讀全文]</a>');

以上出自:http://domety.com/archives/216/

嫌長的直接看最后吧 -.-

首頁、存檔頁顯示文章摘要的好處很多,比如:

1,頁面不會拉的很長,既美觀,又有利於訪客快速找到所需的文章

2,減少搜索引擎認為的重復內容

3,瀏覽者想看到全文就得點擊進入單個文章頁,因此增加了點擊量 -.-

4,首頁、存檔頁數據量少了,節約了流量和帶寬,提高了頁面打開速度

RSS 輸出全文的好處只用講一條:作為讀者,我訂閱feed的時候很討厭那種只輸出摘要的

但是,wordpress默認的是顯示全文,不但第一頁顯示全文,點”下一頁”,進入第二頁、第三頁、乃至無窮頁,也都顯示全文。那么如何解決這一問題呢?網上流傳着很多方法:

一、在寫日志時插入標簽,這樣在首頁、存檔頁顯示的就只是之前的內容。

這種做法缺點太明顯:

1,rss輸出也變成了只有之前的內容。實際上,這一缺點可以通過改代碼、裝插件等辦法克服,但另一個缺點則無法克服:

2,如果你之前已經寫了數百篇文章,難道還要一個個修改,重新加上標簽嗎?

二、修改主題的模板文件,在 index.php 里找到

< ?php the_content(); ?>
<?php the_content(); ?>
改成
<?php if (is_single() or is_page()){the_content();} else {the_excerpt();} ?>
這樣改的作用是加一個判斷,如果是單篇日志頁或靜態頁面,則輸出全文,否則輸出摘要。 看上去很美,但wordpress默認的摘要輸出算法是根據西文來的,以空格判斷字數,而中文里基本沒空格,所以它算完了之后輸出的”摘要”其實還是全文……因此,對中文博客而言,此法必須和其他辦法協同使用。 三、寫日志時自定義摘要。在寫日志界面有一個”自定義摘要”字段,把自己想顯示為摘要的話輸入進去即可。 這種辦法優點非常突出:不像其他辦法都只能把文章開頭的若干字顯示為摘要,這種方法的摘要內容非常靈活,可完全自定義。 但缺點也很突出:和第一種辦法一樣,以前的文章都要一個個手工改,工程過於浩大。 四、修改 Wordpress 自帶的摘要函數 根據 http://www.fwolf.com/blog/post/102(這篇文章網上轉載很多,我個人判斷認為這里是原始出處,可嘆很多轉載的在搜索引擎中排名倒更靠前) 修改wordpress的源文件,對一般用戶來說恐怕有點難度,而且如果升級wordpress還得重新修改,維護不方便。不過最新發現原作者把它寫成了一個插件,所以都放在下面插件里面一起講吧。 五、使用插件,主要仍是修改wordpress自帶的摘要函數。不過wordpres默認的情況是存檔頁(按分類、標 簽和時間存的檔)用摘要輸出,主頁及主頁上點進去的第二頁、第三頁等等用全文輸出,因此即使用了插件,想要首頁顯示摘要的話,仍要用第二種方法修改一下主 題的模板文件才行。
下面分析一下我知道的幾個插件的算法: 1, Fwolfhttp://www.fwolf.com/blog/post/296 和wp自帶的幾乎一樣,只不過把按空格判斷改成了按段落判斷,會輸出文章的前三段作為摘要。因為是按段落輸出,也不會出現中文亂碼。 2, 桑葚的中文工具箱 http://yanfeng.org/blog/wordpress/kit/ 用substr()函數截取前256個字節,再用utf8_trim()函數處理,保證中文不會出現亂碼。 3, Yskinhttp://yskin.net/2006/07/mulberrykit.html 我原來推薦過這個,覺得很完美,但后來覺得我個人還是有些定制化的要求,決定自己動手改一改,因此才有了這篇文章 -.- Yskin的是段落和字數混合判斷,先根據回車把文章分割成n段,然后用mb_strlen()判斷字數,如果沒超過規定的字數,就再輸出一段。因此他的最小輸出單位仍然是段落。
以上所有方法都有一個共同特點:輸出的摘要是沒有格式的,只有純文本,原來的顏色、字體、超鏈接、圖片等等都被過濾掉了。而我個人其實希望能夠保留格式。 另外,按段落輸出的話,有的段落長,有的段落短,那么輸出的摘要就不是很整齊(其實苛求這個整齊對一般的blog也沒什么意義,不過如果是cms或雜志風格的主題,對排版可能有一定需求,另外就是我個人的偏好 -.-)。 最理想的情況是根據顯示的行數判斷,就像古龍的小說一樣,按行數算錢,不管這行是只有一個字,還是寫滿了,這樣輸出的文字塊大小一定是整齊的。但網頁不像 書本,寬度不固定,無法預知每行寫滿了應該是多少字,而且如果保留圖片的話,那么圖片應該占多少行也很難判斷,所以根據行數判斷暫時不可行。 退而求其次的辦法是根據字數判斷。每個摘要雖然”占地面積”可能不一樣,但字數是一樣的,也還算整齊。不過中文工具箱的辦法有點麻煩,其實有個mb_substr()函數就完全可以達成這一任務,截取指定數量的前若干個漢字,絕不會出現亂碼。 不過mb_substr()函數也有個問題,它是根據字符數截取,如果文章里面夾雜了英文,比如wordpress這一個詞就是9個字符了,它比九個漢字 的占地面積要小的多,那么夾雜英文的摘要就會顯得比全漢字的摘要短(這個都考究,我覺得我是有點bt了 -.-)。解決辦法是用mb_strcut()函數,它和mb_substr()函數基本一樣,只是是根據字節數截斷的,在utf-8里,一個漢字大概占 三個字節,一個英文字母占一個字節,這樣截出來的漢字文本就會短一些,和英文的長短比較一致。同樣,mb_strcut()函數也不會出現亂碼。 mb_substr()和mb_strcut()函數共同的問題是,它們是按字符截取的,對英文來說就是按字母截取的,因此有可能把一個單詞從中間截斷…… 另一個問題是mb_substr()和mb_strcut()屬於mbstring擴展庫,有的空間不支持。對於這種空間商,寫信去要求他安裝吧,付了錢的就得理直氣壯提要求。要求無效的,真得考慮一下這種基本要求都不能滿足的空間的質量了。
我寫了一個插件,基本仿照Yskin的,不過截取用的是mb_strcut()。並為不支持mb_strcut()的空間自定義了一個函數,抄自網上的mb_substr()函數替代腳本,沒找到mb_strcut()的替代腳本,汗。此外還有以下特點: 1,輸出的摘要保留原來文章的格式。 2,做了一個判斷,如果是存檔頁(分類存檔、每月存檔等),輸出的摘要較短;如果是首頁,輸出的摘要較長。 3,如果本來的文章長於摘要,那么最后會顯示[……],省略號指向全文的鏈接。去掉了Yskin原來的統計字數,因為我個人不喜歡;當然要加上也很容易。 更新: Advanced Excerpt 是另一個很好的 Wordpress 摘要插件,但需要略加改動才適合中文,對它的介紹和修改方法請看 保留 html 標簽的 wordpress 摘要插件一文。 總結: 為了完美地實現在 wordpress 博客首頁、存檔頁顯示摘要,RSS 輸出全文,請根據自己的需求下載中的一個,或下載我寫的摘要插件。 已經提交 Wordpress 官網了,請到官網下載: http://wordpress.org/extend/plugins/wp-utf8-excerpt/ 開啟插件之后,如果發現你的首頁仍然是全文,那說明你的主題不支持,請 根據上面的第二條辦法修改主題文件。 本文作者: Betty | 本文地址: http://myfairland.net/wordpress-excerpt/ 以上來自:http://lixiangweb.com/thread-8167-1-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM