您在這裡

[小片段程式碼] 依據主分類列出次分類

charlesc's 的頭像
charlesc 在 2006-09-20 (三) 00:28 發表

原本的 node.tpl.php 會把所有次分類都列出來,但是我想要以主分類為依據,把次分類分別顯示出來,例如:
# 主題分類:hacking | drupal
# 地區分類:台北 | 台灣

在 Drupal.org 裡找到這個可用:
sort taxonony links ($terms) by vocabulary ($vid)

就一般最常會用到的功能來看,Views 分成 Block 和 Page,就是你可以使用 views 來產生一個新的 block 或是某種 page。

拿 charlesc 的列子來說,要生成的就是 page。

接下來比較重要的就是 filters 和 sort criteria。

我們要做到的目標,約略可以分成三個部分:

  • 要秀出哪些 node (blog? 某個主分類? 某個主分類下的次分類?...)
  • 秀出來的順序
  • 秀出來時,怎麼設定它的板型?

filters 決定有哪些 node 是會被放到這個新產生的 page view 裏頭。所以你可以新增一個 filter 為Taxonomy of 主要分類,然後這個 filter 設它為is one of hacking,再新增一個同樣的 filter,但設它為is one of drupal,就完成一個 page view 了。這裏建議再加個 node is published 這個 filter。

也就是說,一個 page view 你可以透過加入任意個 filter 來過濾出你要的 node 進來,這樣就解決了第一個問題。

接下來可以到 sort criteria 裏頭去決定秀出來的順序,同樣是可以有好幾個 sort criteria,這樣就解決了第二個問題了。

最後是,秀出來的樣子(或板型),這個牽扯到的就稍為多了一點。你可以先看一下產生出來的 views 的 html code,就會知道它使用了哪些 css class,所以可以開始著手為它設計 css。如果是 page view,不想要 node 秀的方式是按照你網站上用的 theme 的 node.tpl.php 的話,就只要自己加以改寫就行了。

ps. 自己加寫的板型,可以把 views_theme_wizard(安裝 views 時會看到)這個 module 打開,然後透過它的 views -> theme wizard,幫你產生出 php sample code,然後再拿來改一改就行了。

雖然上一篇已經文不對題了,但使用 views 有個小地方要注意的,還是 po 一下好了。

在使用 filter 時,建議一定要加上兩個 filter,分別是

Node: Published
Node: Distinct

一來,你應該不希望那些被你標示為「不發表」的 node 秀出來,二來,因為 drupal 裏的 node 會有 revision 等相關因素(詳情原因我還不是很清楚),所以同一個 node 是有機會出現兩次以上的,第二個 filter 可以幫你解決掉這個問題。

又,如果有使用了Taxonomy: Vocabulary Name這個 filter 時,Operator 一般是Is All Of,而 Value 要記得「選取」一個(或以上?)vocabulary,沒選的話,這個 filter 等同於沒有。

感謝說明:)

我是把上面的程式碼用在這裡: http://wired.tw-drupal.info/
2001世紀衝突
褒貶不一的新聞網站
作者:Noah Shachtman 發表於 Thu, 2001-10-11 15:00 數位文化

"2001世紀衝突"、"作者:Noah Shachtman"、"數位文化" 是三種 vocabulary,我先用 Content Templates 調一下要出現的元素,再透過程式碼去修改 node.tpl.php,把三種 vocabulary 分開放置。

那如果是用 view,是要怎樣作呢? 是透過 views_theme_wizard 產生 theme 然後再改?還是在這之前就有辦法處理?

我還不是很懂你的意思 :p 我想主要是因為我沒接觸過 content template 這個 module,不大了解用它來配合 cck 是怎麼個樣子的。

你說到我先用 Content Templates 調一下要出現的元素,再透過程式碼去修改 node.tpl.php,把三種 vocabulary 分開放置。,能再解釋得清楚一點嗎? 我不大了解你的意思,是要讓這三個 vocabulary 的 node 都秀在同一個 page,還是說分成三個 page? 又秀在同一個 page 的話,那你說的「三種 vocabulary 分開放置」的意思是?

ps. wired 好像連不上去?

是顯示在同一頁裡!

如果沒有用上面提到的程式碼,把三種分類分開放置,就會依照原本的版型設計,把三種分類都擺在一起,像是這樣:
褒貶不一的新聞網站
發表於 Thu, 2001-10-11 15:00 2001世紀衝突 | Noah Shachtman | 數位文化

不管是使用 Views 或 Panels,都會需要自行新增 css 的。
不過如果使用 Views Wizard 來搭配 Views 的話,它可以提供一些 theme templates,及 CSS template,依頁面上的說明,自行產生那些檔,再從那開始做起,是個非常好的作法。
Panels 的部分,我就比較不了解了 :p

谈到view我也是很头痛,现在虽然做到像台湾环境中心的新闻版区一样但是还display不出term的照片,请问有哪位会做。

SME Server

用 insert views 應該可以做出來

新增一個 node
輸入


[view:view_01]

[view:view_02]


[view:view_03]

[view:view_04]

輸入格式要改成 full html or php code