Je ne sais pas trop quelle est la différence entre eux
- menu_get_object () retourne l'objet associé à la page actuellement affichée. Si le code est exécuté lorsque Drupal affiche la page example.com/node/1,
menu_get_object()
l'objet retourne alors l'objet nœud du nœud dont l'ID est 1; si la page affichée est example.com/user/1, menu_get_object('user')
l'objet retourné sera alors l'utilisateur correspondant à l'utilisateur dont l'ID est 1.
- menu_get_item () retourne un tableau contenant un index pour chaque champ contenu dans la table "menu_router". Ceci comprend:
- chemin: le chemin actuel du rappel du menu
- load_functions: un tableau de noms de fonctions (comme
node_load
) à appeler pour charger un objet correspondant à une partie du chemin actuel
- access_callback: le rappel qui vérifie si l'utilisateur actuellement connecté a accès à l'élément de menu
- page_callback: le nom de la fonction qui rend la page
- title: le titre de la page associée à l'élément de menu
- drupal_lookup_path () est la fonction qui vous renvoie le chemin interne associé à l'alias transmis en argument. Si "homepage" est l'alias associé à example.com/node/1, il
drupal_lookup_path("homepage")
reviendra "node/1"
. Les alias de chemin peuvent être associés à n’importe quel chemin interne, pas seulement aux chemins de nœud.
et qui est plus approprié pour obtenir l'ID de nœud dans une fonction de prétraitement de bloc.
Si tout ce que vous voulez obtenir est l'ID de nœud du nœud actuellement affiché, il vous suffit d'utiliser le code suivant:
if (arg(0) == 'node') {
$nid = arg(1);
}
Si vous devez obtenir l'objet nœud, vous pouvez utiliser le code suivant:
if ($node = menu_get_object()) {
// Use the node object.
}
Le deuxième est préférable, car il renvoie l'objet de nœud correct pour les chemins d'accès internes tels que nœud / 1 / revisions / 3 / view.
N'oubliez pas que certaines fonctions de prétraitement, telles que celles de la page ou du nœud, ont déjà un $variables['node']
. Cela signifie que dans ces cas, il vous suffit d'utiliser l'extrait suivant dans votre fonction de prétraitement, sans vous soucier de la fonction à utiliser.
if (isset($variables['node'])) {
// Check the node ID or other properties.
}
Pour les autres fonctions de prétraitement, consultez la documentation pour voir s’il existe une variable contenant l’objet noeud. Par exemple, c’est le cas pour template_preprocess_comment()
lequel met à la $variables['node']
disposition des fonctions de prétraitement des commentaires.