Observando a API do Drupal.org , notei que hook_init () não está documentado para o Drupal 8. Observando os registros de alterações, descobri que os ganchos do Bootstrap não existem mais , o que aponta para Livrar-se de todos os ganchos 'bootstrap' , onde os ganchos do bootstrap é dito ser hook_boot()
e hook_exit()
; nada é dito sobre hook_init()
.
Eu procurei por hook_init na fonte Drupal 8 e encontrei o seguinte código. O primeiro é uma referência a ser hook_init()
feita em um comentário; os outros dois parecem uma hook_init()
implementação, mas ambos recebem um parâmetro que não estou esperando.
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;
}
}
Também procurei por qualquer função que chamava, hook_init()
mas não encontrei nenhuma.
hook_init()
Ainda é usado no Drupal 8? Se não for mais usado, como converto a implementação do código Drupal 7 hook_init()
?
hook_page_attachments
ouhook_page_attachments_alter
.Sim,
hook_init()
não é usado no Drupal 8. Se você precisardrupal_add_js()
oudrupal_add_css()
poderá usá-lohook_page_build()
( nota : esse gancho foi removido no Drupal 8.0.0-beta3, consulte o registro de alterações ), o que também é útil para o Drupal 7.Por exemplo, estilos CSS e código JavaScript podem ser adicionados ao
hook_page_build()
uso$page['#attached']
.Se você precisar fazer uma escuta mais complexa na solicitação / resposta, poderá definir um ouvinte de eventos do kernel no estilo Drupal 8, conforme documentado em hook_init () removido .
fonte
drupal_process_attached
também usa drupal_add_css / js para adicionar os requisitos de página emcall_user_func('drupal_add_' . $type, $data, $options);
drupal_process_attached
acionado após o cache de renderização ser recuperado. Se você o fizer#attached
, seu CSS / JS será adicionado mesmo quando o cache de renderização for usado.hook_page_build () foi descontinuado em favor do registro de alterações hook_page_attachments () aqui .
Exemplo:
libraryname é o nome da biblioteca, definido em mymodule.libraries.yml do seu módulo
fonte