2010-08-17 21 views
1

假設您使用hook_menu()從模塊#1進行頁面回調。你想創建Module#2,它基本上只是在Module#1的頁面回調的底部附加一些東西(想想你想添加一些筆記到頁面的底部)。你怎麼能這樣做?我的理解是,你可以使用hook_menu_alter完全覆蓋頁面回調,但是如果你只是想追加它呢?如何附加到Drupal模塊頁面回調

回答

3

你不能做你所問的,但在某種程度上,你仍然可以做到這一點。

說原來的頁面回調是foo

你它hook_menu_alter更改爲bar

然後你可以做這樣的事情。

function bar() { 
    $output = foo(); 
    $output .= 'extra'; 
    return $output; 
} 

這不是一個漂亮的解決方案,但它的工作原理。

另一種解決方案是使用塊和區域,這就是它畢竟意味着什麼。在某些情況下會產生一些額外的工作,如果您需要訪問上下文和塊管理頁面,並且如果每個頁面需要大量的塊,會變得有點麻煩。

在某些情況下,您可以通過重寫主題函數,模板或使用預處理掛鉤來修復您的需求。

+0

這可行,但正如你所說,它不是很好,因爲它違反了模塊化設計。例如,如果函數名稱foo()更改,則會失敗。我將不得不重新考慮我的設計方法。 – stotastic 2010-08-17 15:02:25

1

也許考慮實現一個默認啓用的頁腳區域塊?或者使用hook_footer()

+0

爲了防止父回調所做的事情發生,這真是個好主意! +1 :) – 2012-06-11 22:28:24