您在這裡

使用Views 過濾出與當前使用者相同 Taxonomy以下的使用者

momomaple's 的頭像
momomaple 在 2013-01-31 (四) 19:27 發表

想請教各位,如何使用Views 當中的 Relationships 以及Contextual Filters

過濾出相同Taxonomy 甚至子分類的使用者

我在創建使用者時已有選單分類Taxonomy

如:
Groups
-SubgroupsA
--SubgroupsA-1
--SubgroupsA-2
-SubgroupsB
--SubgroupsB-1

當我使用者A的層級是 SubgroupsA 時,可以顯示 SubgroupsA、SubgroupsA-1、SubgroupsA-2
的群組使用者,而不會看見SubgroupsB的使用者。

Views 裡面設定Fiter Criteria 時都要設定死的條件,無法根據當前使用者判斷所屬層級,卡在這階段好久了,還是搞不出來

救救小弟我吧

謝謝K大提出這個語法,不知能否使用taxonomy_get_tree 做到一樣的效果?

由於使用欄位時使用分類引用項目的下拉式選單,會將所有taxonomy的整棵樹結構引用進去,若是只想顯示

屬於自己層級的子樹,不知是否有方法,

小弟自身php語法處於非常入門階段,K大上篇使用程式也是看了許久才修改完成,

若是使用這篇文章的函數:
taxonomy_get_tree

其中的php語法要如何使用呢?

只知道是要做成.modules 的方式引用進去模組,但是卻不知道是會產生一個block可以使用還是需要自行創建一個block 透過修改php的方式掛載近block

還想請教於K大,小弟感激不盡!

其實哦.. 兩個 FUNCTION 都不完美的哦

因為你有時間是 PARENT, 有時是 CHILD
你需要一段 CODE 去處理哦

很直接的方法是:
SELECT parent FROM taxonomy_term_hierarchy WHERE tid = 1 OR parent = 1

---

另外, VIEWS 其實也可以使用 Relationship 增加 Parent Term, 然後你的 FIELD 也可以設定

剛剛查到一篇文章
終於解決了~~~(汗)

我加上了一句

$user_unit_child = array_keys(taxonomy_get_children($user_unit));

後面

// 增加 WHERE 條件
if($user_unit_child <> NULL) {
$query->add_where(0, 'field_data_field_unit_select.field_unit_select_tid', array($user_unit,$user_unit_child), 'in');
}

if($user_unit_child == NULL) {
$query->add_where(0, 'field_data_field_unit_select.field_unit_select_tid', array($user_unit), 'in');
};

這樣就可以列出所有子項目了~^^

不過不知道我的if這樣寫好不好就是了@@~

參考網址:http://stackoverflow.com/questions/6223833/how-to-get-taxonomy-children-...