2009-10-02 47 views
2

我想用內容(中心)部分的左側和結果搜索表單構建網站。如何構建在頁面上顯示結果的Drupal 6用戶窗體?

我知道如何創建模塊..但我如何分配他們的位置? 或者我應該將SEARCH FORM放置爲BLOCK並將它們分配到build/block /中的LEFT。

SEARCH FORM有3個文本框,其中不需要。 「name」,「surname」,「age」

無論用戶輸入什麼我想在模板的CENTER部分顯示結果。

明顯形成將派變量$_POST

但隨後在結果頁面,如果有超過5個結果我想添加分頁。

SO我應該如何建立<a href="?"

鏈接我想有cleanURL像/search//Smith/24search/John//15search/John/Smith/40 使用分頁 加入/search/john/smith/40/page/3時響應「的姓名,年齡」 然後?

+0

我想要它很難。 誰能給我_MENU的例子()的支持PATH的 用於/結果/% ,因爲我不知道有多少參數我會送(根據用戶輸入)。 所以如果它的2個參數將是/搜索/約翰/史密斯 如果1參數/搜索/約翰 是否有任何通用/ N野貓? 所以不管有多少參數將被添加到路徑 這個菜單()將被解僱了 – 2009-10-02 10:23:50

+0

Drupal將傳遞任何額外的URL元素作爲附加參數你'hook_menu'回調函數,無論你指定多少佔位符。在回調中使用'func_get_args()'來獲取它們。 – 2009-10-02 10:32:28

+0

爲了澄清最後的評論,如果你只註冊一個通配符('results /%'),但實際的請求有兩個額外的元素('request/john/smith/40'),你的回調將被傳遞'john'爲一個明確的參數,但也包含'smith'和'40'作爲隱含的附加參數。 – 2009-10-02 10:37:13

回答

5

好了,先上去,我第二googletorps建議看一個views基礎的解決方案第一,因爲它可以節省你不少一些定製編碼。然而,我經常發現自己處於一個立場,即基於視圖的解決方案只能提供我需要的80%,而添加缺少的20%的視圖比起定製解決方案可以更好地工作 - 從一開始就查看視圖暴露過濾器並查看是否合適。

如果沒有,這裏有一些提示,應該讓你開始爲自定義解決方案:

  • 對於搜索表單,一個塊是正確的道路要走。看看hook_block()關於如何創建一個(你至少需要實現操作'list'和'view')
  • 如您所說的,通過構建/塊進行放置
  • 在操作視圖',你會建立你的表格。在Drupal中查看forms API Quickstartreference的表單處理(不要手動建立自己的表單--Drupal表單API只需要一點點習慣,將來可以爲您節省大量時間)
  • 對於結果頁面,您將爲您想要的路徑註冊自己的頁面回調函數,請參閱hook_menu()
    • 警告:你提出的路徑「搜索/ ...」將衝突Drupals建立在搜索路徑,所以你可能會考慮選擇一個微小的變化(如「搜索/人/ ...」或「peoplesearch /」等)
  • 對於鏈接在Drupal創建,使用l()功能
  • 對於分頁您可能能夠使用theme_pager,但是這取決於你的實際搜索查詢如何直接證明,因爲它期望構建一個查詢字符串參數數組e詢問
+1

優秀的幫助;) 謝謝 – 2009-10-02 10:34:00

+0

+1花費時間建立功能鏈接並徹底。 – googletorp 2009-10-02 13:31:45

1

你可以用你描述的方式來做到這一點。您需要使用hook_menu來構建url,使用hook_block來創建搜索表單塊,然後使用l()函數來創建鏈接。但是,在您自己的自定義模塊中執行所有這些操作需要很長時間。爲查詢做出查詢等。相反,我建議你要做的是使用views模塊完成所有這些。有了它,你可以非常容易地創建一個搜索表單,但使用公開的過濾器,你可以創建一個頁面和一個塊,分頁和所有隻需點擊幾下。所以,即使你是一個很好的PHP開發人員,在這種情況下最好的做法是簡單地使用Drupal以views模塊的形式提供的內容,並用AI來設置,而不是編寫一堆代碼。如果你確實想製作你自己的模塊,可以看看api.drupal.org上的那些函數,你可以在這裏找到drupal core的文檔。

+0

然後用l()函數做出鏈接 什麼是l()? – 2009-10-02 10:21:05

+0

+1首先查看視圖 – 2009-10-02 10:26:12

+0

@David:l()是創建鏈接的函數的Drupal版本 - 請參閱http://api.drupal.org/api/function/l/6 – 2009-10-02 10:27:18

相關問題