[教學] Blogger Beta在版面上隱藏特定Label文章

看板Blog作者 (E')時間19年前 (2006/10/28 20:53), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
好吧,那些想要完美的藏起文章的人,若是不想失望的話,現在就可以按下左鍵離開了。 這個方法並沒有那麼完善-老實說,還會讓讀取的效率更差。所以待會你讀到的內容不該 稱為教學,充其量只能算是實驗而已。 被嚇倒的人應該已經離開了吧?這個方法的起因是這樣,某些時候可能我不想讓某篇文章 顯示在版面上,例如說我要設一篇文章做為留言板,而我並不想讓這篇文章和其他文章混 在一起-尤其是在Archive裡-性質的不同會讓它顯的突兀。假如我現在用的是樂多,我 可以將這篇留言板設為草稿,然後把這篇文章的連結設在Sidebar裡;而在Blogger Beta, 這個方法就行不通了,因為draft是無法連結的。 在下面的例子中,我們透過兩個條件來達成目的:Label和時間。為了將其隱藏起來,我 們用一個特定的Label來控制,當這篇文章的最後一個Label是特定Label時,那麼將只有 連到文章本身(也就是type Item)時才會顯示。 而Archive的部份,由於迴圈跑的是月份,所以我將特定的月份隱藏起來。原本想要做的 是只隱藏該篇,但好像做不到,只好如此變通。另外一件事,在下面的例子中是使用下拉 式選單的Archive來做範例,使用另外兩種方式的朋友,請試著自行設條件吧。 下面將使用Blogger Beta內建的template Minima(迷你馬)來當例子。 第一部份:文章迴圈 在迷你馬的Expand Widget Templates裡面找到這個迴圈:(開始和結尾的綠色註解是為了 待會兒較好理解加上的,找不到是正常現象,請安心服用) <b:loop values='data:posts' var='post'> <!-- 文章開始 --> <b:if cond='data:post.dateHeader'> <h2 class='date-header'><data:post.dateHeader/></h2> </b:if> <b:include data='post' name='post'/> <b:if cond='data:blog.pageType == "item"'> <b:if cond='data:post.allowComments'> <b:include data='post' name='comments'/> </b:if> </b:if> <!-- 文章結束 --> </b:loop> 這個迴圈做的事是跑目前條件下的所有文章,然後秀出日期,文章,註解。 下面這個很長的玩意兒是修改後的迴圈:(黃色內容為新加上) <b:loop values='data:posts' var='post'> <b:if cond='data:post.labels'> <b:loop values='data:post.labels' var='label'> <b:if cond='data:label.isLast == "true"'> <b:if cond='data:label.name == "notinmainandarchive"'> <b:if cond='data:blog.pageType == "item"'> <!-- 文章開始 --> <b:if cond='data:post.dateHeader'> <h2 class='date-header'><data:post.dateHeader/></h2> </b:if> <b:include data='post' name='post'/> <b:if cond='data:blog.pageType == "item"'> <b:if cond='data:post.allowComments'> <b:include data='post' name='comments'/> </b:if> </b:if> <!-- 文章結束 --> </b:if> <b:else/> <!-- 文章開始 --> <b:if cond='data:post.dateHeader'> <h2 class='date-header'><data:post.dateHeader/></h2> </b:if> <b:include data='post' name='post'/> <b:if cond='data:blog.pageType == "item"'> <b:if cond='data:post.allowComments'> <b:include data='post' name='comments'/> </b:if> </b:if> <!-- 文章結束 --> </b:if> </b:if> </b:loop> </b:if> </b:loop> 這個新的迴圈做的事是這樣:跑目前條件下的所有文章,跑該篇文章的所有Label,假如 最後一個Label是特定的Label的話(在這個例子中是notinmainandarchive),檢查目前頁 的type是不是item,如果是才顯示該篇文章。假如最後一個Label不是特定的Label,直接 顯示該篇文章。 在這裡有一件事需要注意,文章的Label會依照字母來排序,因此你所設定的Label最好用 Z開頭(中英文混用會怎麼排序?對不起我沒有試過),或聽取我的建議,要隱藏的文章只 使用一個Label就好。提醒另一件事,當使用這個新迴圈之後,沒有Label的文章是不會顯 示的。 第二部份:Archive下拉選單 在你新增了Archive這個Element之後,一樣在Expand Widget Templates可以找到: <b:includable id='menu' var='data'> <select expr:id='data:widget.instanceId + "_ArchiveMenu"'> <option value=''><data:title/></option> <b:loop values='data:data' var='i'>    <!-- 這行太長,折成兩行 --> <option expr:value='data:i.url'><data:i.name/> (<data:i.post-count/>)</option> <!-- 折完了 --> </b:loop> </select> </b:includable> 修改後的如下: <b:includable id='menu' var='data'> <select expr:id='data:widget.instanceId + "_ArchiveMenu"'> <option value=''><data:title/></option> <b:loop values='data:data' var='i'> <b:if cond='data:i.name != "Sep 2002"'> <!-- 這行太長,折成兩行 --> <option expr:value='data:i.url'><data:i.name/> (<data:i.post-count/>)</option> <!-- 折完了 --> </b:if> </b:loop> </select> </b:includable> 新加上的條件,不在下拉選單裡顯示2002年九月,如此一來我將要隱藏的文章發佈時間設 在2002九月,Archive裡就沒有它了。 就算是用硬連結也不會顯示(例如這樣的連結 http://lucyintheskywithdiablo.blogspot.com/2002_09_01_archive.html ) ,因為在文章迴圈那裡已經有控制了。 結語 由於在迴圈裡多跑了一個Label,所以理論上讀取會比以前還要慢。許多地方都使用了較 沒有效率的硬方法來做,仍有許多改進空間。還有一件最重要的事:你以為這樣文章就 隱藏起來了嗎?其實feed裡還是讀的到啊!除非你把它關閉,或文章的內容並不重要到需 要在意。在這裡奉勸老話一句:若真不想讓人看到,就別放到網路上吧。 這篇文章很長,謝謝你把它看完,若是你也有興趣,一起來討論吧。 -- 『你跟媽媽,發了什麼誓?』 『早晚都要刷牙。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.224.117
文章代碼(AID): #15GrBGPD (Blog)