- 0

Drupal 8 y 7: Modificar el peso de un hook en tu módulo para que se ejecute al final.

Drupal 8 y 7: Modificar el peso de un hook en tu módulo para que se ejecute al final.

Tags

Digamos que tienes un hook_form_alter() en tu módulo y quieres modificar un label de un elemento de formulario pero después de hacer tu cambio viene otro modulo y vuelve a tocar ese label. Jode ¿a que si?

No problemo, para eso está el hook_module_implements_alter() que nos permite especificar el orden en el que todos los módulos ejecutan un hook puntual:

/**
 * Implements hook_module_implements_alter.
 *
 * Run after the path module.
 */
function MI_MODULO_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'form_alter') {
    unset($implementations['MI_MODULO']);
    $implementations['MI_MODULO'] = FALSE;
  }
}

Lo que hacemos es simplemente quitar y volver a poner a a nuestro modulo dentro de la cola de orden de ejecución de ese hook (hook_form_alter()). Pero al volver a agregarlo queda puesto al final de la cola, por lo que tu módulo va a ser el último en ser ejecutado.

Saludos!