Je recherche le meilleur moyen d'insérer du contenu HTML arbitraire dans une page avant la balise de fermeture, similaire à la façon dont drupal_add_js()
ajoute JavaScript au bas d'une page.
Je viens d'un arrière-plan Wordpress, et dans Wordpress cela pourrait être accompli en utilisant le crochet wp_footer()
).
J'ai cherché à utiliser hook_page_alter()
, mais je me demandais si c'était la bonne façon de procéder ou s'il y avait une meilleure façon d'accomplir cette tâche.
L'équivalent de hook_footer () utilisé dans Drupal 6 est d'implémenter hook_page_build () et de modifier le contenu de $page['page_bottom']
, En utilisant un code similaire au suivant:
function mymodule_page_build(&$page) {
$page['page_bottom']['devel'] = array(
'#weight' => 25,
'#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
);
}
Le contenu de $page['page_bottom']
Est sorti de html.tpl.php , en utilisant le code suivant:
<?php print $page_top; ?>
<?php print $page; ?>
<?php print $page_bottom; ?>
</body>
</html>
La valeur de $page_bottom
Est initialisée à partir de template_process_html () à l'aide du code suivant:
// Render page_top and page_bottom into top level variables.
$variables['page_top'] = drupal_render($variables['page']['page_top']);
$variables['page_bottom'] = drupal_render($variables['page']['page_bottom']);
// Place the rendered HTML for the page body into a top level variable.
$variables['page'] = $variables['page']['#children'];
$variables['page_bottom'] .= drupal_get_js('footer');
La différence entre hook_page_alter () et hook_page_build()
est que hook_page_alter()
est exécutée après hook_page_build()
et doit être utilisée pour modifier ou supprimer du contenu ajouté par un autre module, tandis que hook_page_build()
doit être utilisé pour ajouter du nouveau contenu à la page.