0
當Drupal中的塊被添加,移動,編輯或刪除時,我需要添加一些功能(刷新一些緩存等),是否有任何一種鉤子(或者另一種有點Drupal原生的方式)就像有節點hook_nodeapi
?在Drupal中捕捉塊變化/添加/刪除事件
我知道有hook_block
但是$op
總是list
,所以它沒有什麼好處。
當Drupal中的塊被添加,移動,編輯或刪除時,我需要添加一些功能(刷新一些緩存等),是否有任何一種鉤子(或者另一種有點Drupal原生的方式)就像有節點hook_nodeapi
?在Drupal中捕捉塊變化/添加/刪除事件
我知道有hook_block
但是$op
總是list
,所以它沒有什麼好處。
不幸的是,塊沒有這種信號機制。我會使用表單系統在需要額外工作的信號的地方添加提交回調。
/**
* Implementation of hook_form_alter().
*/
function custom_form_alter(&$form, &$form_state, $form_id) {
// Overview form.
if ($form_id == 'block_admin_display_form') {
$form['#submit'][] = 'custom_block_admin_display_form_submit';
}
// Individual block configuration form.
elseif ($form_id == 'block_admin_configure') {
$form['#submit'][] = 'custom_block_admin_configure_submit';
}
}
/**
* Submit handler for block overview form.
*/
function custom_block_admin_display_form_submit($form, &$form_state) {
cache_clear_all();
}
/**
* Submit handler for block configuration form.
*/
function custom_block_admin_configure_form_submit($form, &$form_state) {
drupal_set_message(t('You have changed a block. Run for the hills!'));
}
這種方法的缺點是任何替代方法來配置塊將不起作用。如果有人在塊模塊之外構建自定義表單,或者如果使用上下文或面板來移動塊,它將無濟於事。當然,由於這些備用配置點中的任何一個也會使用表單,因此您也可以使用hook_form_alter()
攻擊他們的提交流程。