web-dev-qa-db-fra.com

Nœud de prétraitement dans le module

C'est une question plus générale. Juste pour clarifier. Je peux utiliser la fonction de prétraitement dans mon fichier template.php d'une manière:

function mytheme_preprocess_node(&$vars) {
  // Do some stuff
}

Mais existe-t-il un moyen de prétraiter le nœud dans un module? J'ai cherché la fonction hook_preprocess_node () dans drupal API, mais il n'y a pas une telle fonction pour D7, bien qu'elle existe pour toutes les autres versions de drupal, y compris 8. Puis-je traiter template_preprocess_node ( ) en tant que fonction que je peux utiliser dans mon module? Par exemple, si mon module a un nom "personnalisé", puis-je l'utiliser de cette façon?

function custom_preprocess_node(&$vars) {
  // Do some stuff
}

Comment remplacer un nœud dans un module personnalisé?

6
David

Vous pouvez certainement. hook_preprocess_HOOK () est ce que vous recherchez. De la documentation ...

Prétraitez les variables de thème pour un hook de thème spécifique.

Ce hook permet aux modules de prétraiter les variables de thème pour un hook de thème spécifique. Il ne doit être utilisé que si un module doit remplacer ou compléter le prétraitement de thème pour un hook de thème qu'il n'a pas défini.

6
Shawn Conn

Dans Drupal7, les modules et les thèmes peuvent utiliser les fonctions de prétraitement de la même manière, et un hook de thème donné peut avoir de nombreuses implémentations de prétraitement, provenant à la fois des modules et des thèmes.

Comme pour tout ce qui se passe dans le cadre Drupal framework, il est important de connaître l'ordre dans lequel ces fonctions s'exécutent. Les implémentations de prétraitement à partir des modules s'exécutent en premier et les implémentations par thèmes s'exécutent en dernier.

Une recherche rapide des modules de base Drupal vous donnera des exemples dans les modules node et rdf.

6
Alex Gill