2009年11月3日 星期二

在本文區上方加個導覽列(BreadCrumbs on top)有更新


BreadCrumbs是麵包屑的意思,也就是文章的導引列,可以詳細的列出此篇文章的上源結構的一種導覽方式,也是方便讀者想讀取同一分類文章的作法,有需要的人可以參考看看。

但這個導覽列有個缺點,就是如果一篇文章有多個分類,這個工具只會選擇一個分類顯示,目前已解決多種分類的問題,和標題出現兩次(可自行選擇導欄列要不要出現標題)的問題,在第三步驟的語法上修改,謝謝disorder網友熱心的提醒與教導,如下圖這樣。


設定方法有些複雜,但我想依照步驟慢慢做,應該就沒問題,呈現的方式類似這樣,裡面的關鍵字或是呈現出來的形式,則是可以自己再行設計,


切記,一定要先備份原始模版,因為放了這些語法,會導致整個主文區的html整個都不一樣,不是刪減就能挽回的,
進入後台→版面配置→修改Html→勾選"展開小裝置範本"
第一步驟
先加入導覽列的外觀型式css語法,放在]]></b:skin>之前即可,

.breadcrumbs {
padding:5px 5px 5px 0px;
margin: 0px 0px 15px 0px;
font-size:95%;
line-height: 1.4em;
border-bottom:3px double #e6e4e3;
}

border-bottom:3px double #e6e4e3;這是在導覽列下方有個雙線條的設計,這裡你可以改成你要的線條或是加上背景也是可以的。

第二步驟

找到<b:includable id='main' var='top'>這段主文區最上方語法,原始的語法是
<b:includable id='main' var='top'>
<!-- posts -->
<div class='blog-posts hfeed'>
<b:include data='top' name='status-message'/>
<data:adStart/>

在中間加入三行紅色的語法,變成如下列這樣,
<b:includable id='main' var='top'>
<!-- posts -->
<div class='blog-posts hfeed'>
<!-- disable default status message
<b:include data='top' name='status-message'/>
default status message disabled -->
<b:include data='posts' name='breadcrumb'/>
<data:adStart/>


第三步驟
在<b:includable id='main' var='top'>之前加入以下這段語法,所以他呈現的地方是在主文區的上方,
<b:includable id='breadcrumb' var='posts'>
<b:if cond='data:blog.homepageUrl == data:blog.url'>
<!-- No breadcrumb on front page -->
<b:else/>
<b:if cond='data:blog.pageType == "item"'>
<div class='breadcrumbs'>
Browse » <a expr:href='data:blog.homepageUrl' rel='tag'>Home</a>»
<b:loop values='data:posts' var='post'>
<b:if cond='data:post.labels'>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if>
</b:loop>
»<span><data:post.title/></span>
</b:if>
</b:loop>
</div>
<b:else/>
<b:if cond='data:blog.pageType == "archive"'>
<div class='breadcrumbs'>
Browse » <a expr:href='data:blog.homepageUrl'>Home</a> » Archives for <data:blog.pageName/>
</div>
<b:else/>
<b:if cond='data:blog.pageType == "index"'>
<div class='breadcrumbs'>
<b:if cond='data:blog.pageName == ""'>
Browse » <a expr:href='data:blog.homepageUrl'>Home</a> » All posts
<b:else/>
Browse » <a expr:href='data:blog.homepageUrl'>Home</a> » Posts filed under <data:blog.pageName/>
</b:if>
</div>
</b:if>
</b:if>
</b:if>
</b:if>
</b:includable>

上面的紅色的Browse及Home是預設的文字,你可以改成你要的文字,一共有四組,例如瀏覽或首頁都是可以的,綠色的部份則是相關敘述,也可以改成中文,如下圖這樣,按下儲存,你的文章導覽列就出現了。


目前這項功能是將導覽列放在文章標題上方,如果你想放在文章末或是文章標題下方,目前我自己測試過,沒法達成,或許有高手再分享。

另外Abin也有介紹以年月份做分類的導覽連結列 (Year & Month Breadcrumbs),因為有的人的分類標籤不只一種,喜歡這種方式的人也可以使用看看。

2009.11.3.10:00pm更新,
有網友提到標題重複兩次的部份,可以將第三步驟裡面的(紫色)
<span><data:post.title/></span>這部分刪除就可以不會有兩次標題的情形。

參考來源:
Make breadcrumb on top of post

9 則留言:

  1. 我發覺你這樣變成有2行一樣的標題耶!

    回覆刪除
  2. 對啊,所以字要設小一點。

    回覆刪除
  3. (你這篇我剛好感興趣, 我不是要來踢館的, 先聲明...)

    1.我發現他就是把本來在 span class='post-labels' 的程式碼搬家而已, 也有 b:loop, 所以分類有1個以上也會出現才對吧?
    2.針對我以上的推論, 和你說的'放在...文章標題下方', 我試作了一下, 把 span class='post-labels' 那段搬到文章標題下方. 完全成功!

    sample 在這裡:
    http://www.ojisang.com/

    我相信程式碼你一定都看懂, 有疑問請儘管提出.

    只是我覺得, 那導覽列放標題下方看起來不會很奇怪嗎?

    回覆刪除
  4. 先解決標題重複的部份,等一下再來看你的方式,我很高興有人願意分享,我才能夠再補充資料,很感謝。

    回覆刪除
  5. 謝謝你,托你的福,我已經解決了分類的問題。

    回覆刪除
  6. 很實用的技巧,多謝指導囉!

    回覆刪除
  7. 改了之後我也覺得不錯用,尤其對分類多的之後。

    回覆刪除
  8. 我非常喜歡這裡
    從這裡幫助了我的部落格更新許多
    這功能也非常實用
    (尤其對不會程式碼的我)
    謝謝分享

    回覆刪除
  9. 謝謝你的鼓勵,慢慢看,你也會跟我一樣學會稍微了解怎麼看程式碼的。

    回覆刪除

設有留言驗證及核准,版主閱覽後,留言才會顯示,發問前請善用網站目錄Google搜尋功能