2011-03-15 77 views
1

我有一個約20頁的Drupal 6網站。在每個頁面內部,我需要創建大量小部件,這些小部件的信息既可以存儲在數據庫中,也可以存儲在外部Web服務中。大多數時候,「觀點」(來自the view module)僅僅不足以解決這一要求。到目前爲止,任何時候我需要這樣一個小部件,我創建一個實現hook_block的新模塊。然後,將這個新模塊拖放到我想要的面板內。我將需要創建約20個模塊。這工作很好。但是,我不確定這是否是正確的drupal策略,我很樂意從經驗豐富的Drupal開發人員處獲得一些反饋。Drupal 6 - 爲每個動態信息塊創建一個模塊?

回答

3

模塊可以根據需要顯示儘可能多的塊(理論上,admin/build/blocks會教你另外;))。

看看hook_block()的文檔,你只需要擴展你的返回多塊信息,然後根據$ delta決定顯示哪一個。

所以你不需要20個獨立的模塊,也許2-3個模塊以某種方式組合在一起,因爲只有一個模塊可能難以維護。問題是,每一個模塊都會讓你的站點慢一點(至少要加載一個文件,module_implements()需要遍歷每個模塊的每個模塊,等等)。

沒有更多的信息,很難給出任何更好的建議。也許你可以公開你的數據到視圖,或者寫一個視圖插件以你想要的方式顯示它,或者...

+0

謝謝!現在我有一個名爲「myapp」的模塊,裏面有一個名爲「myapp_block」的函數。如何在同一模塊內創建和調用其他塊?他們是否生活在不同的功能中,還是需要一些開關語句?我如何將參數傳遞給我的模塊? – jdecuyper 2011-03-15 20:21:30

+0

+1這兩個建議,尤其是暴露在一個觀點,因爲它似乎已經夠好了,但並不完全。自定義視圖代碼可以非常強大。我已將ajaxified「添加到購物車」按鈕作爲視圖字段。很值得學習的初始投資。 – 2011-03-15 20:27:16

+0

請參閱hook_block()的文檔:http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_block/6(和barraponto的答案) – Berdir 2011-03-15 21:01:12

2

雖然Berdir的回答很不錯,但我留下了深刻的印象,沒有鏈接到任何文檔它。 hook_block適用於多個區塊,它們可以共享構建其內容的功能。 API頁面很好,它給出的例子一次定義了兩個塊。

您應該注意到每個定義的塊都有一個delta($ blocks數組中的一個鍵)。您可以擁有動態增量,並使用其中的值來獲取數據(例如,傳遞nid或uid並獲取相關內容)。

+0

是的,忘了補充說明,更新了我的答案,並向上投票。 – Berdir 2011-03-15 21:03:07

+0

爲鏈接+1,這兩個塊的例子很清楚。 – jdecuyper 2011-03-16 00:59:03