您在這裡

term排序問題

tky's 的頭像
tky 在 2009-11-25 (三) 12:47 發表

這個問題其實困擾TKY蠻久了,不過現在才有需要解決的壓力,提出來問一下大家。

TKY建置過一些學術網站,這些網站最主要的內容包括師資的介紹,而TKY通常會以不同的分類方式來管理師資內容類型。
比方說「聘任」是一個vocabuary,底下有專任、兼任的term,而職稱是另一個vocabuary,底下會有教授、副教授、助理教授等等term。

現在TKY想做一個view,用過濾器篩出分類為專任的師資,並且以師資的職稱(term order)來排序。
不過TKY發現說,在排序上,drupal似乎有它自己的作法:它似乎是以vid和tid最小者當作最優先的排序指標,以至於當TKY以term order來排序時,views沒法子按照TKY的希望,選用「職稱」底下的term來排序,而是以「聘任」去排。
結果因為這些資料都是以「專任」的term過濾出來的,term order都一個樣,有排等於沒排。

TKY想搞清楚,這部份是否有簡單的解法?是TKY搞不清楚taxonomy的排序方式,還是說得另外裝模組來搞定這件事情?

麻煩大家了

TKY

襪賽,這好久以前的事情,我都忘了差不多說。

不過追憶起來(阿茲海默症口吻),我記得我是有解決這個問題的。
依稀好像是說,如果你要在 sort criteria 排序條件那邊以自訂的方式來排序 term 、而不是按照 tid 去排,那你就得滿足以下條件:

  1. filter 過濾器中一定要有那個主分類,以上文的例子來說就一定還要額外新增「職稱」這個 vocabuary(而不是只新增「專任」這個 vocabuary),然後選取所有的 (或你需要的)term。
  2. sort criteria 排序條件中要添加 term:weight 這個項目,以分類詞的權重(weight)去排序。

原則就是:你想用自訂權重的方式排序某個主分類底下的次分類,就一定要在 filter 中使用(選取)那些次分類。
我記得 D6 + Views 是這樣解的,不過沒在 D7 + Views 中試過。應該是大同小異(或者 D7 根本不需要這道手續?)

tky

已解决。term排序在drupal7里相当简单,无需修改代码:只要在views的“SORT CRITERIA“下添加”分类术语: 轻重 (asc)”,即可实现。见附图sort_criteria.png