it-swarm-eu.dev

Mohu změnit pořadí, ve kterém se zavolá implementace zavěšení pomocí různých modulů?

V D6 používám modul přispívání, ale rád bych potlačil trochu jeho chování. Mám na to vlastní modul, ale moje implementace příslušného háku je volána před implementací v modulu přispívání, takže verze modulu přispění „vyhrává“.

Existuje nějaký způsob, jak to změnit, a nutit můj vlastní háček, aby byl nazýván posledním?

Zde jsou konkrétní podrobnosti:

Chtěl bych odstranit výchozí uživatelské jméno „Anonymní“ pro neregistrované uživatele ve formuláři pro komentáře. Vytvořil jsem malý vlastní modul Tweak_comment_form, který implementuje form_alter hook a odebere výchozí hodnotu z pole name ( viz odpovědi na mou předchozí otázku o tom ).

Používám však také modul přispívání nazvaný RealName , který implementuje také form_alter. RealName dělá to, co chci pro registrované uživatele (nahrazuje uživatelské jméno „skutečným jménem“), ale do pole jména znovu přiřadí výchozí hodnotu.

7
daphshez

Ano, velmi jednoduše musíte nastavit hmotnost vašeho modulu, aby byla těžší. Existuje několik způsobů, jak to udělat, ale pokud je váš modul příspěvkovým modulem, který se uvolňuje zpět na Drupal.org, pak je nejlepší nastavit jej v hook_install() s kódem jako:

db_query("UPDATE {system} SET weight = 100 WHERE name = 'MYMODULE'");

Alternativně můžete použít tility module k nastavení hmotnosti modulu ze stránky modulu, ale je to pouze pro vaši osobní instalaci.

7
Decipher

Stejně jako další užitečné informace v drupal7 máte hook_module_implements_alter.

Tam také můžete změnit háčky dalších modulů, například přesunout modul na konec/začátek.

4
Daniel Wehner
function my_module_module_implements_alter(&$implementations, $hook) {
  if ($hook != 'the_hook_to_change') {
    return;
  }
  $module = 'my_module';
  $group = array($module => $implementations[$module]);
  unset($implementations[$module]);

  $implementations = $group + $implementations; // If you want your implementation to run first.
  //$implementations = $group + $implementations; If you want your implementation to run last.
}

Malá modifikace založená na https://api.drupal.org/comment/48623#comment-4862

1
Gokul N K