您在這裡

Views的argument不吃CCK的node reference嗎?

tky's 的頭像
tky 在 2006-12-28 (四) 17:41 發表

各位好:

今天TKY意外發現之前用views做出來的表格,竟然變成「目前沒有資料」這樣的empty text。
這個表格,是以CCK的node reference欄位作為argument,要濾出不同的教師的開設課程。
之前都沒有太大的問題,可以正確濾出有該教師姓名的課程,只不過在顯示麵包屑時會有超連結的a、/a的標籤加在上面。

可是不知道為什麼,今天察看的時後,突然顯示沒有紀錄。
而用其他類型filed做argument的話,就不會有這樣的問題。

但如果你用過濾器或者輸出的過濾器去過濾,是可以找出這些記錄的。

就不知道說,是不是和什麼模組有衝突,所以突然找不到資料呢?花了一整天做測試,還是不明白為什麼。其他人有類似的經驗嗎?

TKY

各位好:

雖然說TKY也不是非用argument來顯示views表格不可,但實在百思不得其解,所以還是嘗試問問看。

講清楚一點。TKY是用了三個模組想要顯示一個特定的表格:views, views bonus和CCK。views bonus可以很有特色地顯示出符合argument的項目列表。

在「課程」類型內容中,TKY用CCK的node reference做了一個欄位,指涉到「師資」內容類型的title。在views那邊,TKY以這個欄位當做argument,並以views bonus的方式來加以顯示。

好處是在結果頁面,views bonus能將第一組argument顯示在最上面一排(也就是老師們的名字和開課的數目),而下面可以在擺上其他的augument term(例如開課年份)。這樣可以做個一目了然又符合查詢順序的多重檢索。

TKY明明記得曾經成功過。但是等TKY以node import匯入大量的課程資料,並且一筆一筆的將師資欄位的資料加入後,卻發現出來的畫面總是「沒有任何資料」。看log的結果是類似下列的錯誤碼:

FUNCTION node_data_field__15.field__15_DISTINCT does not exist query: pager_query SELECT node_data_field__15.field__15_DISTINCT(node.nid), count(node.nid) as num_nodes FROM node node LEFT JOIN node_data_field__15 node_data_field__15 ON node.vid = node_data_field__15.vid LEFT JOIN node_data_field__3 node_data_field__3 ON node.vid = node_data_field__3.vid LEFT JOIN node_data_field__5 node_data_field__5 ON node.vid = node_data_field__5.vid LEFT JOIN i18n_node i18n ON node.nid = i18n.nid WHERE (i18n.language ='zh-hant' OR i18n.language ='' OR i18n.language IS NULL) AND (node.status = '1') AND (node.type IN ('content__2')) GROUP BY node_data_field__15.field__15_nid ORDER BY node_data_field__3.field__3_value DESC, node_data_field__5.field__5_value ASC, node.title ASC LIMIT 0, 50 。

唉,真不知道要怎麼弄,才能叫views濾出正確的資料呢?CCK和views的溝通,有這麼麻煩嗎?

TKY

tky

雖然都是自問字答,但管他的。

TKY對於一直無法解決的問題,會感到不舒服。這個問題就是一直卡著TKY的問題。

為了解決這個問題,TKY裝了一個devel的模組,想說能否透過檢視頁面的結構來瞭解到底問提出在哪裡。不過很不幸的是,devel可以讓TKY看到單一node的結構,但是無法看出views table的結構。所以,唉。

然而,TKY發現devel有個「重設模組」的功能。可以「重設」所有的模組。問題是,TKY不知道這是什麼意思,所以一直不敢嘗試。

因為如果重設也意味者把相關資料庫清空的話,那TKY很多功夫就白做了。解決TKY的好奇心,畢竟沒有重要到這種程度。

所以想先請問有用過devel的朋友們,devel的重設模組功能是幹什麼用的?會不會影響到資料庫?

如果不會的話,TKY想試著重設views、CCK以及bonus。看看這樣會不會解決TKY一直百思不得其解的問題。

事實上,TKY研究了一下資料庫與錯誤碼,發現每次的錯誤都來自於執行選取node_data_field__15.field__15_DISTINCT(node.nid)這個CCK node reference的欄位。問題是資料表裡頭根本沒有field__15_DISTINCT這個欄位啊!所以當然找不到任何資料。

不明白的地方就是,為什麼會產生出這樣的程式碼,而且要怎麼消除它。

死心眼的
TKY

tky