Al mirar la API de Drupal.org, noté que hook_init () no está documentado para Drupal 8. Al mirar los registros de cambios, encontré que los ganchos Bootstrap ya no existen , lo que apunta a Deshacerse de todos los ganchos 'bootstrap' , donde los ganchos bootstrap se dice que son hook_boot()
y hook_exit()
; nada se dice acerca hook_init()
.
Busqué hook_init en la fuente Drupal 8, y encontré el siguiente código. El primero es una referencia hook_init()
hecha en un comentario; los otros dos parecen una hook_init()
implementación, pero ambos obtienen un parámetro que no espero.
function overlay_enable() {
if (strpos(current_path(), 'admin/modules') === 0) {
// Flag for a redirect to <front>#overlay=admin/modules on hook_init().
$_SESSION['overlay_enable_redirect'] = 1;
}
}
/**
* Implements hook_init().
*/
function phptemplate_init($template) {
$file = dirname($template->filename) . '/' . $template->name . '.theme';
if (file_exists($file)) {
include_once DRUPAL_ROOT . '/' . $file;
}
}
/**
* Implements hook_init().
*/
function twig_init($template) {
$file = dirname($template->filename) . '/' . $template->name . '.theme';
if (file_exists($file)) {
include_once DRUPAL_ROOT . '/' . $file;
}
}
También busqué cualquier función que invocara hook_init()
pero no encontré ninguna.
¿ hook_init()
Todavía se usa en Drupal 8? Si ya no se usa, ¿cómo convierto la implementación del código Drupal 7 hook_init()
?
hook_page_attachments
ohook_page_attachments_alter
.Sí,
hook_init()
no se usa en Drupal 8. Si lo necesitadrupal_add_js()
odrupal_add_css()
puede usarlohook_page_build()
en su lugar ( nota : este gancho se eliminó en Drupal 8.0.0-beta3 ver el registro de cambios ), que también es útil para eso en Drupal 7.Por ejemplo, los estilos CSS y el código JavaScript se pueden agregar al
hook_page_build()
uso$page['#attached']
.Si necesita hacer una escucha más compleja en la solicitud / respuesta allí, puede definir un detector de eventos de kernel de estilo Drupal 8 como se documenta en hook_init () eliminado .
fuente
drupal_process_attached
también usa drupal_add_css / js para agregar los requisitos de la página encall_user_func('drupal_add_' . $type, $data, $options);
drupal_process_attached
dispara después de recuperar el caché de renderizado. Si lo hace#attached
, su CSS / JS se agregará incluso cuando se use el caché de renderizado.hook_page_build () ha quedado en desuso en favor del registro de cambios hook_page_attachments () aquí .
Ejemplo:
nombre de biblioteca es el nombre de la biblioteca, definido en mymodule.libraries.yml de su módulo
fuente