一連都整左幾日時間,不過其實整來都係自 high 多,沒有什麼商業價值。 之前其實都有整過幾次,但係每次都覺得好複雜同埋做唔到自己想要的東西,所以之後都係搬左去其他唔同既地方。 不過每次搬定之前,都會來到 Blogger 呢度做中轉站,可能因為唔洗錢的關係掛。 印像中係咁: Blogger > PHP (Codeigniter) > Blogger > PHP (Laravel) > Blogger > Node (Koa) + React > Blogger (現在) 始終維護少一樣野就已經真係差好遠,人大左無咩時間。同埋認真研究左 Blogger 之後,發覺其實設計得好好,有好多你想要的東西其實都已經可以用現成的 `tag` 去完成到。 如果日後有時間再詳細寫一篇有關 Blogger template 的 customization guide 分享下今次的經驗。 現在就記錄返少少有關 Blogger template 的主要要素。 ### Data Tags 就是用來提取資料的標籤,全部都係由 `data:` 開始。例如: ```html <!-- 用來提取 view.isError 這個變數 --> <data:view.isError /> <!-- 用來提取 blog.url 這個變數 --> <data:blog.url /> ``` 問 : 但係有咁多唔同變數,邊度可以睇到呢啲 Dcoumentation 呢? 答 : 可以去呢度睇到 https://support.google.com/blogger/answer/47270 但係有點一定要注意,就係如果你想要拎到 `data:posts` 既內容的話,你就一定要係 `b:widget type='Blog'` 入面先可以提取得到,如果唔係就只會拎到吉的 variable 或者會有可能出現 Error。 ```html <!-- 定義一個 widget, 而個 type='Blog' --> <b:widget id='Blog1' locked='true' title='文章' type='Blog' visible='true'> <!-- 每一個定義的 widget, 都一定會有個 includable id='main' 作為 widget 的進入點 --> <b:includable id='main' var='this'> <!-- 去到呢度已經可以用到 data:posts 呢個變數, 呢度係要 loop 下佢, loop 出來個 variable 叫做 post --> <b:loop var='post' values='data:posts'> <!-- 要係呢度先可以拎到 post.title 出來用 --> <data:post.title /> </b:loop> </b:includable> </b:widget> ``` 大致上就係咁,只要砌啱晒呢個 Structure 就咩 widget 都係可以用呢個方法提取到資料。 ### Workflow Tags 就是用來控制流程的標籤,全部都係由 `b:` 開始。例如: ```html <!-- 用來提取 view.isError 這個變數 --> <b:if /> <!-- 用來提取 blog.url 這個變數 --> <b:else /> ``` 佢地通常係要夾埋 Condition 一齊來決定條路點行。例如: ```html <!-- 對比一下 data:blog.pageType 的值來決定畫出什麼到畫面 --> <b:if cond='data:blog.pageType == "index"'> <span>是 index 類頁面</span> <b:else /> <span>不是 index 類頁面</span> </b:if> ``` 其實同寫 Program 一樣,只不過係語法有少少唔同。 去呢度可以有更詳細的講解: https://support.google.com/blogger/answer/47270 ### 總結 其實 Blogger 好好用,又唔洗錢,無論你係初手 / 中手 / 高手,都一樣好適合使用。 佢係專門用來寫 Blog 的 CMS,而且做得好好。 ### 隱藏技能 下面呢條 link 好似幾好玩,可以用來做 Ajax search post,遲啲有時間先研究下。 [https://example.com/feeds/posts/summary?callback=callcall&max-results=50&q=react&start-index=1&alt=json&orderby=updated](/feeds/posts/summary?callback=callcall&max-results=50&q=react&start-index=1&alt=json&orderby=updated)