Je ne comprends pas complètement quand je dois utiliser hook_page_alter (& $ page) ou template_preprocess_page (& $ vars, $ hook) dans Drupal 7.
Quelles sont les meilleures pratiques à ce sujet à utiliser dans template.php?
Merci
La différence est leur objectif.
hook_page_build () et hook_page_alter () sont utilisés pour supprimer, modifier ou ajouter des éléments au niveau de la page.
Le tableau $ page transmis à hook_page_alter()
contient les éléments de niveau supérieur pour chaque région de bloc. Par défaut, ce sont les suivants:
Un exemple de mise en œuvre pourrait être le suivant:
function mymodule_page_alter(&$page) {
// Add help text to the user login block.
$page['sidebar_first']['user_login']['help'] = array(
'#weight' => -10,
'#markup' => t('To post comments or add new content, you first have to log in.'),
);
}
Les fonctions de prétraitement sont appelées pour modifier les variables transmises au fichier modèle. Ils ne peuvent pas modifier la structure de la page, mais ils peuvent modifier le contenu de certains éléments de la page en modifiant le contenu de ces variables.
Par exemple, le module Incrustation supprime les onglets principaux lorsque la page en cours de visualisation est l'incrustation.
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}