2010-08-26 37 views
2

我的問題的簡單版本:我需要一個CCK節點引用字段來搜索節點中的兩個不同字段。什麼是最好的方法來做到這一點?設置Drupal節點引用autosuggest在兩個單獨的字段上搜索

一些背景

我跑了理療項目的日曆。每個講座都有一個閱讀清單。閱讀是他們自己的內容類型,並且講座有一個自動建議節點參考字段,目前只能搜索閱讀的標題。我還需要它在一個額外的cck字段上進行搜索,閱讀作者。

我試圖做到這一點自定義的看法,但我需要一個非常簡單的標題或作者搜索,我們堅持與一點點時間。有沒有解決方法?我是否需要創建一個小模塊來執行此操作?如果是這樣,是否有一個好地方開始學習如何做到這一點? (我之前製作了自定義模塊,但沒有涉及與視圖/ cck接口的模塊)。我現在不確定該去哪裏。

感謝您的幫助!

回答

1

實際上並沒有一個簡單的方法,因爲只在標題中搜索是節點引用模塊(它是CCK的一部分)的「特徵」。但是,您可以創建自定義View以提供自動完成結果,並使用hook_views_query_alter()來更改View執行的查詢。應該在該字段的配置頁面中選擇您創建的視圖。

下面是一個示例實現,它更改查詢以搜索標題和節點主體。您可能需要對其進行一些定製以獲得您想要的內容。

function mymodule_views_query_alter(&$view, &$query) { 

    if ($view->name == 'my_custom_view' && $view->current_display == 'content_references_1') { 

     // Remove the original title constraint 
     unset($query->where[0]['clauses'][2]); 

     // Duplicate the argument (keyword to search for), so 
     // it is passed to both the title and the other field 
     $query->where[0]['args'][] = $query->where[0]['args'][1]; 

     // Add the custom where clause 
     $view->query->add_where(0, "(node.title LIKE '%%%s%%' OR node_revisions.body LIKE '%%%s%%')"); 

    } 

} 
+0

是的!謝謝。這是無限的幫助。我花了很長時間才弄清楚一切,但我現在已經掌握了。謝謝! – mattmcmanus 2010-08-31 18:59:17

相關問題