Blogger:改良詳見全文(繼續閱讀)使用方法

很久之前,在別人的Blog看到了詳見全文(繼續閱讀)的方法,很實用。
不過卻有小缺點,就是無法控制要不要出現繼續閱讀的設定,例如文章內容不夠多,短短幾行,就不需要出現。

忘了是在哪邊取的的程式碼,在此說明我不是原創,我是加以改良(紅色字體部份,是我自己寫的),如果有誰知道原創者,可以跟我,我再補充上出處來源及連結。

在編輯模版之前,建議先儲存一份模版。另外,也建議你更換一個程式後,先用預覽,看看是否有問題。


Step1: 首先,將 程式1,程式2 放在
</head>
之前。

程式1: 用來設定CSS

<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
span.fullpost {display:inline;}
</style>
<b:else/>
<style type='text/css'>
span.fullpost {display:none;}
</style>
</b:if>


程式2: 用來判斷是否要出現 詳見全文 的連結

<script type='text/javascript'>

function hidePost(PostId,PostUrl) {
var Post = document.getElementById("hidePost-"+PostId);
var PostContent = Post.innerHTML;

if(PostContent.indexOf("fullpost")!=-1){
Post.innerHTML="<br/><span><a href='"+PostUrl+"'> 詳見全文... </a></span>";
}else{
Post.innerHTML="";
}
}

</script>




Step2: 找到
<div class='post-header-line-1'/>



<div style='clear: both;'/> <!-- clear for photos floats -->
</div>


把這三行之間程式內容(包括這三行)替換成 程式3


程式3: blogger中,顯示文章內容的程式碼

<div class='post-header-line-1'/>

<div class='post-body'>
<b:if cond='data:blog.pageType == "item"'>
<data:post.body/>
<b:else/>

<data:post.body/>
<span expr:id='"hidePost-" + data:post.id'><data:post.body/></span>
<script type='text/javascript'>
hidePost('<data:post.id/>','<data:post.url/>');
</script>

</b:if>


<div style='clear: both;'/> <!-- clear for photos floats -->
</div>


Step3: 避免點選較舊文章 可能會失效的情況。
找到以下程式碼,將以下刪除線的部份,從程式裡移除掉。
移除前後得差別在於,點選較 新的文章/較舊的文章 ,瀏覽器顯示的網址,不再是 http://yorblogname.blogspot.com,而是網址加上一大串的參數。
yorblogname:你的部落格名稱


<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + "_blog-pager-newer-link"' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>

<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + "_blog-pager-older-link"' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>


Step4: 可以在 blogger的 設定/格式 中,填入以下內容,當每次要寫新文章時候,就會預設出現,不用自己再key 一遍。

文章摘要的部分

<span class="fullpost">這裡是要隱藏的部分</span>



我改寫的部份,其實就是判斷文章內容是否有出現 fullpost這個字,如果有的話,表示有使用到 <span class="fullpost">,則就應該要出現改良詳見全文的連結。

留言

jolie.chen寫道…
不好意思!想請教我試了很多次還是不成功也!它顯示出XML 錯誤訊息: The element type "b:includable" must be terminated by the matching end-tag "". 所以想請問是那裡出了問題呢?因為對於語法真的不太了解 謝謝
Mr.J寫道…
這個訊息 是只說 <b:includable> 開頭,卻沒有相對應的結束語句</b:includable>,
還是你寄給我你修改後的程式碼,我幫你檢查看看 dinghaw@gmail.com
Unknown寫道…
不好意思,套用您的方式過後,在IE7.0之下沒辦法正確顯示出「繼續閱讀」。

不知道是什麼原因?謝謝
Mr.J寫道…
to pigy
我使用IE 是可以使用

可以給我你的程式碼 嗎?
我幫你找看看原因
匿名表示…
我發現有些程式碼找不到呢,真的不是普通難懂orz

會不會跟我使用的版型有關?
Mr.J寫道…
to TS
請問是哪些程式碼 找不到?

如果你之前就沒有 修改成繼續閱讀的程式碼 那就找不到相關的程式碼
(因為我沒有看到你有使用繼續閱讀的功能)

你可以重頭 使用我的方法試看看 不行再跟我說 我再幫你找看看原因
Mr.J寫道…
to TS

還有喔 要記得將
展開小裝置範本 打勾
才會出現所有的程式碼喔
匿名表示…
噗~試過很多次,結果是失敗XD

(聽說是好幾天,看來我"高一"程式設計被當不是假的,"高二"是老師高抬貴手...最後,那不過是最簡單的VB 6.0)

都出現什麼錯誤的XML(這是啥?),會不會我用的套裝版面比較難搞阿(從Free Blogger Templates抓的)~囧
無鹽蛇蠍寫道…
您好:

依著您的教學步驟,我將程式碼都放進去了,
也能在首頁顯現出我只想顯現的部份;但,卻無法出現「詳見全文...」的字樣----檢查後發現,原來是程式碼2中的雙引號「"」在儲存後都會變成「"」這種樣式,不知是否我的使用方法有誤?謝謝!
castlewolf寫道…
成功了~!哈哈~谢谢丫~
我不懂程式语言,多长的帖子才会显示详见全文呢??
三月魚寫道…
感謝你的分享,解決了我之前點"較舊的文章","繼續閱讀"就會失效的的問題.
缸溫喔~
Mr.J寫道…
to 無鹽蛇蠍
我將 程式2
if(PostContent.indexOf("class=\"fullpost\"")!=-1){
改為
if(PostContent.indexOf("fullpost")!=-1){
你先try看看
有問題 跟我說一下
Mr.J寫道…
to castlewolf
沒有限制字數長度,
只有寫在< span class="fullpost" > 及 < /span >
之間的文字 不會被顯示

其餘都會在首頁中顯示
Mr.J寫道…
to 三月魚
謝謝你的使用....
有空多多交流喔
Unknown寫道…
感謝您提供的方法咧~
之前使用的方法會始點選舊文章時失去
繼續閱讀功能,現在不會了~
不過,每一篇的隱藏TAG部分(之前使用DIV)就要重新修改,要不然也會失效
愛呦葳寫道…
你的部落格真的很讚 但你說的見詳文,我怎麼都用不出來, 一直出現錯說,網頁都快爆了, 你可以幫我看看嗎,
Mr.J寫道…
to 愛呦~葳
你先把錯誤訊息 寄e-mail給我
我幫你看看
dinghaw@gmail.com
Geo寫道…
有學有推,謝謝!
erin寫道…
我按照你說的方法做了,
也看了留言的意見的人的問題,
修改了程式2的code,
但是還是沒有成功出現"詳見全文"的東東呢?
Shiang寫道…
你好 首先謝謝你的教學
我想請問一下 我貼上你給的語法後 在"繼續閱讀"和文章摘要的之間 左邊的位置有一個小點 像這樣' 請問要怎麼把他去除呢?
謝謝囉
Mr.J寫道…
to A. HSIANG
請問你的網站是這個嗎?
我在這個網站 沒有看到這個情形...
http://pourepanchermoncoeur.blogspot.com/
Will Liu寫道…
不知道這是不是我的原創語法,不過mr.j改的真的太深入了,想說mr.j在詢問原創點,所以我就不好意思的來說說看,必較看之後發現相似地方還蠻多的,不知道是不是小弟我的!!

那只是我當時轉用blogger小小的修改,很多不完美的地方,沒想到mr.j已經改成這麼漂亮的了,真厲害!!

原始網址:http://kuenwei.blogspot.com/2007/09/tech-blogger.html
Mr.J寫道…
to KuenWei
我有仔細去看過你寫的程式
很不錯喔~
不過~當初我看到的應該不是來自於你寫的

我找到的 繼續閱讀 應該是2007年5月過後,在網路上找到後使用的..看到你文章發表日期是在9月份

另外..你是直接 使用程式,讓部分程式隱藏..點擊連結後後.跳到原本網頁續接部份..

我找到的是必須還要呼叫javascript : hidePost() ,且是用
<span class="fullpost"> 來包起來所要隱藏的內容,直接顯示全頁,不會跳到續接部份..

剛好 是兩種不同寫法..但是都是不錯的寫法

你可以在多想想喔~


謝謝你的分享喔~~
匿名表示…
請教一下,我的錯誤訊息出現head裡面不能有div,但你不是把程式2放在/head前面ㄇ?
簡提姆寫道…
作者已經移除這則留言。
匿名表示…
補上錯誤訊息:Your template is invalid because the tag 'div' appears inside of the tag 'head'.
Mr.J寫道…
to all:
如果你有遇到
錯誤訊息:Your template is invalid because the tag 'div' appears inside of the tag 'head'.

有可能最近blogger對於 htaml tag比較要求
所以要先將可能會出問題的地方 換成 unicode 
請看文章中 程式2: 用來判斷是否要出現 詳見全文 的連結

我有新增解決方法
J.S.Yang寫道…
感謝你的教學,
若出現'div'錯誤訊息,
那就把詳見全文那段的div和/div換成span和/span就可以成功囉...^^
Mr.J寫道…
to TwoLightshot
原來這樣就可以解決阿
你提的解決方法比較簡單
真是太好了 感謝喔
Gôo Gān-iông寫道…
你好:)
我發現我看了好幾次後還是看不太懂要怎麼更改耶;
嘗試去更改也都不能成功。
唉,我天資不夠聰穎,真是不好意思。
:P
Gôo Gān-iông寫道…
作者已經移除這則留言。
Gôo Gān-iông寫道…
作者已經移除這則留言。
scner寫道…
我按照你的方法做了修改,但還是沒有出現效果...
ducklynn寫道…
你好 我照著修改 大都ok了~ 只是我的網頁有個問題 就是利用繼續閱讀 點入該文章顯示全文 在全文下方還是有繼續閱讀耶~ 可以幫我看看嗎? 感謝