2013年12月10日

[教學]Blogger 七種頁面形態判斷語法詳解

A+
在這篇「7 Blogger Page Types: Analysis, Code Snippets, Data Matrix」看到了過去「Blogger 頁面判斷式(PageType)的各種應用」沒提過的頁面判斷方式,而且其資料整理得很詳細,只差在部分語法可以精簡一些。

因此本篇用自己的方式來說明、及補充上一篇「Blogger頁面判斷式」不足之處。



一、四種頁面判斷式


Blogger 的頁面判斷式共有四種,而標題 "七種" 是因為在 "index" 這個頁面判斷式,原作者再細分成四種頁面形態,所以總共成為七種頁面判斷的方法。

1. archive:文章封存頁面

這個頁面是指官方小工具「網誌存檔」所產生的頁面,網址結尾為 "年份_月份_01_archive.html" 類似這樣的格式。

<b:if cond='data:blog.pageType == "archive"'>
這裡的程式碼,在文章封存頁面才會執行。
</b:if>

P.S. 請注意──
  • 按下「網誌存檔」的月份時,才會顯示此文章封存頁面。
  • 按下「網誌存檔」的年份時,並非文章封存頁面!請注意網址,顯示的是「二、各種索引頁面」→「4. 較新的文章、較舊的文章頁面」,這是很不一樣的地方。


2. item:文章頁面

文章頁面的網址結尾為 "/年份/月份/文章網址字串.html",類似這樣的格式。

<b:if cond='data:blog.pageType == "item"'>
這裡的程式碼,文章頁面才會執行。
</b:if>


3. static_page:靜態網址頁面

靜態網址頁面是由「網頁」小工具所產生,其網址結尾為 "/p/靜態網址字串.html",類似這樣的格式。

<b:if cond='data:blog.pageType == "static_page"'>
這裡的程式碼,靜態網址頁面才會執行。
</b:if>


4. index:索引頁面

這是最複雜的一種頁面,包含了首頁、標籤、搜尋頁面等情況,因此給予單獨說明。



二、各種索引頁面


<b:if cond='data:blog.pageType == "index"'>
這裡的程式碼,索引頁面才會執行。
</b:if>

當看到以上程式碼時,代表以下四個標題的頁面都會執行。而如果要這四種情境的頁面單獨執行程式碼,請見以下說明。

1. 首頁

首頁也是索引頁面的其中一種,下面是最佳的判斷式語法:

<b:if cond='data:blog.url == data:blog.homepageUrl'>
這裡的程式碼,首頁才會執行。
</b:if>


2. 標籤頁面

按下標籤連結時所產生的頁面,下面是最佳的判斷式語法:

<b:if cond='data:blog.searchLabel'>
這裡的程式碼,標籤頁面才會執行。
</b:if>


3. 搜尋頁面

搜尋頁面必須解釋一下,這是利用「官方導覽列搜尋框」時所產生的頁面,網址會有 "/search?q=搜尋字串" 類似這樣的格式。

下面是最佳的判斷式語法:

<b:if cond='data:blog.searchQuery'>
這裡的程式碼,搜尋頁面才會執行。
</b:if>

可參考「Blogger 最強搜尋框工具」來改造這個搜尋框,有較佳的版面配置、且能快速顯示搜尋結果。



4. 較新的文章、較舊的文章頁面

這種頁面很難簡單解釋,主要有兩類:
  • 從首頁按下「較舊的文章」之後所產生的頁面,而不是其他諸如 "標籤頁面"、"搜尋頁面" 、"文章頁面" 等所產生的「較舊的文章」頁面。
  • 按下「網誌存檔」小工具的年份時,所產生的頁面。

此類頁面的網址會有 "/search?密密麻麻的參數" 類似這樣的格式。它跟「3. 搜尋頁面」很類似,網址都有 "search?" 字串,但不同點是網址不會有 "q=搜尋字串" 這樣的格式

我目前還想不出有什麼情境,要為這樣的頁面寫特別的程式,不過還是列出這種頁面的判斷式語法供參考:

<b:if cond='data:blog.pageType == "index"'>
<b:if cond='data:blog.searchQuery == ""'>
<b:if cond='data:blog.searchLabel == ""'>
<b:if cond='data:blog.url != data:blog.homepageUrl'>
這裡的程式碼,較新的文章、較舊的文章頁面才會執行。
</b:if>
</b:if>
</b:if>
</b:if>

說真的,程式碼又臭又長,似乎也沒有實用性,希望哪天能幫它找到應用方式。



三、注意事項


介紹完所有的判斷頁面語法後,讀者需要小心的是,這些都是屬於「Blogger 自創的語法」,不是所有地方都能執行,請注意以下:

1. 不可放在「HTML/Javascript 小工具」之中,因為這不是 html 也不是 js 語法,是無法執行的。

2. 不是範本中所有位置都能執行,可放在 <head></head> 的區間。

3. 如果放在 <body></body> 之間的話,必須注意是否擺放到任何小工具的區間,請務必參考「Blogger 範本__(一)各種註解方式及區塊的修改」→「二、Blogger 各區塊的語法格式」→「2. 語法結構」,語法只能放在紅色字串擺放的位置。


更多 Blogger 判斷式說明:

8 則留言:

  1. <1083994698787669558>(以上內容請勿刪除,從括號之後開始留言)過獎,只是幫忙補充一些不足之處~

    回覆刪除
  2. 看到這篇,覺得你實在太強了.....
    我把這篇文章加入書籤,已備不時之需....

    回覆刪除
  3. <2875334809430202081>(以上內容請勿刪除,從括號之後開始留言)不錯喔~會對這種文章有興趣的,都是 blogger 可造之材 :)

    回覆刪除
  4. <4277929264434179867>(以上內容請勿刪除,從括號之後開始留言)
    對了!有沒有辦法除了文章頁面與靜態網址的頁面之外,archive、index 還有 home 等等頁面,文章列表只顯示標題,而隱藏摘要。參考:Blogger 標籤、網誌存檔,只顯示標題

    目前「教會的網誌」,已參考上面連結,實現了這種效果,但「archive 封存頁面」卻不知為何還是一樣,正如本文所說"年份並非文章封存頁面",所以年份頁面仍然有效果,但月份卻還是預設的,請問這是什麼原因呢? 頁面判斷式語法應該如何寫?

    回覆刪除
  5. <6201215281714861920>(以上內容請勿刪除,以下引言請自行刪減) [quote]目前「教會的網誌」[/quote]

    回覆刪除
  6. <6201215281714861920>(以上內容請勿刪除,從括號之後開始留言)「archive 封存頁面」的內容是無法變動的,那些內容就是 "封存" 的內容,不是從後台 feed 裡面讀取的。

    經由 feed 讀取的內容才能變動。

    回覆刪除
  7. 我的經過變動後,會有小小的混亂,都是靠這篇救了我的版面。

    回覆刪除

張貼留言注意事項:

◎ 勾選「通知我」可收到後續回覆的mail!
提問請附網址、詳細描述狀況,如提供的資訊不足,則無法回覆。
◎ 請在相關文章留言,與文章無關的主題請至「Blogger 中文論壇」。
◎ 若詢問 CSS 、非官方範本問題、或貴站為商業網站 ,請參考「本站諮詢頁面」→「1. 諮詢服務」
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 若發現留言不見了,通常是因為 "複製貼上" 的內容常被系統判定為垃圾留言,請不用擔心,我會定期將留言恢復。
◎ 本站「已關閉自刪留言功能」。