Blogger Beta在版面上隱藏特定Label文章 - 部落格

Thomas avatar
By Thomas
at 2006-10-28T22:16

Table of Contents


好吧,那些想要完美的藏起文章的人,若是不想失望的話,現在就可以按下左鍵離開了。
這個方法並沒有那麼完善-老實說,還會讓讀取的效率更差。所以待會你讀到的內容不該
稱為教學,充其量只能算是實驗而已。

被嚇倒的人應該已經離開了吧?這個方法的起因是這樣,某些時候可能我不想讓某篇文章
顯示在版面上,例如說我要設一篇文章做為留言板,而我並不想讓這篇文章和其他文章混
在一起-尤其是在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裡還是讀的到啊!除非你把它關閉,或文章的內容並不重要到需
要在意。在這裡奉勸老話一句:若真不想讓人看到,就別放到網路上吧

這篇文章很長,謝謝你把它看完,若是你也有興趣,一起來討論吧。





--
『你跟媽媽,發了什麼誓?』
『早晚都要刷牙。』

--

All Comments

無名背景有兩個地方不能設定為『透明』

Victoria avatar
By Victoria
at 2006-10-28T12:40
http://static.flickr.com/83/281068452_a059ba5949_b.jpg 請問無名網誌的問題 行事曆的『月份』和 『RSS』背景無法設定為透明 我不喜歡白白的一塊,很突兀 請教大家有方法解決嗎? - ...

blogger轉blogger beta

Delia avatar
By Delia
at 2006-10-28T12:36
這是我的blogger: http://monkeyyajing.blogspot.com/ 今天早上手動轉到新的blogger beta 跟很多人一樣,有些中文會變成亂碼, 可是我beta的功能完全沒有更新耶,就是跟原本的blogger一樣, 沒有大家說的 widgets.font color.. ...

wretch for wordpress

Jack avatar
By Jack
at 2006-10-28T01:19
抱歉 想在這邊請教各位 目前有沒有 wordpress 可套用相似 wretch 的模板(theme)? 因為 wretch andamp; wordpress 兩者的 theme 架構似乎不太相近 若要將 wretch 的模板(theme)移植到 wordpress 的話是個相當花費時間的工程 若有人 ...

RSS訂閱會增加瀏覽人數嗎

Anthony avatar
By Anthony
at 2006-10-28T00:14
我是用Xuite的部落格 對於他的人數計算常常混淆 連入首頁是增加今日拜訪人數 直接連結入文章是增加總共拜訪人數 那這一種會增加今日拜訪人數嗎? 還有假設用RSS訂閱Xuite的部落格 會增加今日拜訪人數或是總共拜訪人數?還是兩者都有? 請各位賜教 感激不盡! - ...

Re: PTT Blog板友簽到簿(PTTBlogRolling!)

Caroline avatar
By Caroline
at 2006-10-28T00:13
網址:http://tsung-ying.blogspot.com/ 站名: Tsung_Ying_SPACEattw 環境:blogger 簡介:星期五, 十月 27, 2006 我的部落格搬家了! 雖然還未能把在無名的所有文章搬過來,不過以後新的文章都只會在這裡發表了。 ...