Patrząc na API Drupal.org, zauważyłem, że hook_init () nie jest udokumentowany dla Drupala 8. Patrząc na rekordy zmian, zauważyłem, że haki Bootstrap już nie istnieją , co wskazuje na Pozbycie się wszystkich haków „bootstrap” , w których haki bootstrap są uważane za hook_boot()
i hook_exit()
; nic nie jest powiedziane hook_init()
.
Szukałem hook_init w źródle Drupala 8 i znalazłem następujący kod. Pierwszy to odniesienie do hook_init()
komentarza; pozostałe dwa wydają się hook_init()
implementacją, ale oba otrzymują parametr, którego nie oczekuję.
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;
}
}
Szukałem również wywoływania dowolnej funkcji, hook_init()
ale nie znalazłem żadnej.
Jest hook_init()
nadal używany w Drupal 8? Jeśli nie jest już używany, jak przekonwertować implementację kodu Drupal 7 hook_init()
?
hook_page_attachments
lubhook_page_attachments_alter
.Tak,
hook_init()
nie jest używany w Drupal 8. Jeśli potrzebujeszdrupal_add_js()
lubdrupal_add_css()
możesz użyćhook_page_build()
zamiast tego ( uwaga : ten hak został usunięty w Drupal 8.0.0-beta3 zobacz zmianę zapisu ), co jest również przydatne w tym przypadku w Drupal 7.Na przykład, style CSS oraz kodu JavaScript można dodawać do
hook_page_build()
korzystania$page['#attached']
.Jeśli potrzebujesz bardziej złożonego nasłuchiwania na żądanie / odpowiedź, możesz zdefiniować detektor zdarzeń jądra Drupal 8 zgodnie z dokumentacją usuniętego hook_init () .
źródło
drupal_process_attached
używa także drupal_add_css / js, aby dodać wymagane stronycall_user_func('drupal_add_' . $type, $data, $options);
drupal_process_attached
uruchamia się po pobraniu pamięci podręcznej renderowania. Jeśli to zrobisz,#attached
Twój CSS / JS zostanie dodany, nawet jeśli używana jest pamięć podręczna renderowania.hook_page_build () został wycofany na korzyść hook_page_attachments () Zmień zapis tutaj .
Przykład:
nazwa_biblioteki to nazwa biblioteki zdefiniowana w module mymodule.libraries.yml
źródło