LifeType 從1.0以後多了自訂欄位的功能,印象中滿多人對自訂欄位有疑問,或者是根本不知道怎麼用它,還是說大家都會用了,是我搞錯了嗎?如何新增自訂欄位,我想 Mark 有做過了教學影片,我就不再重複這些操作的說明,我只想說明該怎麼去應用這個好用的功能。

大部分人新增了自訂欄位之後,會發現發表新文章的時候多出了可以填寫的欄位,或者textarea,或者check box,但是填完之後發表文章,好像什麼事都沒發生,所以大概最後會去利用自訂欄位的人,都是寫外掛的人吧;那到底填完之後,要怎麼顯示出你填的這些資料,其實就是修改模版,英文的wiki上其實也有清楚的教學,不過還是稍微用中文說明一下。

假設你新增了一個custom field叫做「year」,如果你沒勾選隱藏,那麼輸入文章的時候,在標題下面就會出現,一個新的欄位叫做year 給你填,填完了之後,你可以修改post.template,插入下面的語法,就會將你在year欄位填的東西,給顯示出來,要注意的是,雖然名稱叫做year,不過欄位只存字串,你打任何東西,都會顯示出來;如果你想要的是真正的年,或者是時間有關的參數,那你應該使用日期選擇器這個自訂欄位。

{if $post->hasField("year")}
{$post->getFieldDescription("year")}: {$post->getField("year")}
{/if}

將上面的語法放入,post.template之後,就表示如果這篇文章 year這個欄位有填東西進去,就會秀出你填的東西,getFieldDescription用來取得欄位的說明,這樣你的自訂欄位名稱,就不需要用中文,可以用簡單的英文代替,想顯示什麼就用getFieldDescription取得就好。

check box 類型的自訂欄位,會出現在你發表文章頁面中,那些需要打勾的地方的下面,例如允不允許迴響啦之類的,所以這可以指定哪些東西你要不要顯示,例如,你可以新增一個欄位,叫做「i_want_to_show_you」,同樣的語法,

{if $post->hasField("i_want_to_show_you")}
....
{/if}

這樣包在{if}裡面的東西,你有勾選就會秀出來,沒勾就不秀囉,你不需要去顯示i_want_to_show_you的值,因為你勾了只會回傳「1」,該怎麼應用呢?這就可以讓你其他的自訂欄位要不要顯示由這個check box來控制,

{if $post->hasField("i_want_to_show_you")}
{if $post->hasField("year")}
{$post->getFieldDescription("year")}: {$post->getField("year")}
{/if}
{if $post->hasField("field2")}
{$post->getFieldDescription("field2")}: {$post->getField("field2")}
{/if}
{/if}

可以將整個區塊都放到例如i_want_to_show_you.template,你就可以一個一個群組的分類你想顯示的東西。


至於日期選擇器,如果你用上面的方法,那麼模版中的確會顯示出你選的時間,但卻是沒有經過格式化的時間,顯示出來的東西就是日期甚至連時間的分秒都會顯示出來;如果要格式化你的時間,參考wiki的作法,你應該這樣做,

{assign var=dateField value=$post->getFieldObject("myDateField")}
{assign var=dateObject value=$dateField->getDateObject()}
The year is: {$locale->formatDate($dateObject,"%Y")}

紅色的部分,是wiki上面漏掉的,因此你直接貼wiki上的語法,會產生錯誤,要注意一下。


最後,講一個簡單的應用,例如你把blog當日記,日記常會有一個東西可以讓你寫,就是天氣如何,你發現你發表文章的時候,並沒有這個東西,所以自訂欄位就可以派上用場了,你可以新增一個欄位叫做weather,敘述當然就是天氣啦,那就可以用

{if $post->hasField("weather")}
{$post->getFieldDescription("weather")}: {$post->getField("weather")}
{/if}

來顯示你輸入的天氣狀態。但是我印象中有看過人用圖來表示天氣,那我該怎麼做,一種方法是你還是用剛剛的輸入欄位輸入天氣,接著

{if $post->hasField("weather")}
{if $post->getField("weather") == "晴"}
<img src="你圖片的網址">
{else}
{$post->getFieldDescription("weather")}: {$post->getField("weather")}
{/if}
{if $post->getField("weather") == "陰"}
<img src="你圖片的網址">
{else}
{$post->getFieldDescription("weather")}: {$post->getField("weather")}
{/if}
{/if}

聰明一點就用 elseif 吧,請自行修正。(呵呵,我是懶惰只用複製貼上,所以就變的這麼長了,好孩子就不要學我。)

那連打字都不想打,你就用check box吧,如果有三種天氣,你就用三個,語法就不需要$post->getField("weather") 這些了,直接有勾就秀圖,這也是可行的方法。

來源: http://phys.idv.tw/plog/post/1/307

    全站熱搜

    jianmin2 發表在 痞客邦 留言(0) 人氣()