Widzę to hook_preprocess_page()
i hook_preprocess_html()
są implementacjami hook_preprocess_HOOK()
, ale nie rozumiem, kiedy tego użyć.
hook_preprocess_page
nazywa się pierwszy, ale to tak naprawdę nie pomaga mi zrozumieć, kto to nazywa.
Patrząc na debug_print_backtrace()
wynik, jest wywoływany theme()
, ale tak naprawdę nie dostaję odpowiedzi.
Czy jest to po prostu zdefiniowane przez tablicę, do której jest przekazywany drupal_render()
?
template_preprocess_page()
różni się odhook_preprocess_page()
i istnieje dokumentacja dla hook_preprocess_HOOK , podobnie jak dla hook_process_HOOK .Odpowiedzi:
hook_preprocess_page
jest hakiem wstępnego wywołania, gdy używany jest plik szablonu page.tpl.php , ihook_preprocess_html
jest hakiem wstępnego wywołania, gdy używany jest plik szablonu html.tpl.php .Oba przechwytywania procesu wstępnego są wywoływane podczas renderowania strony
theme('page')
, ponieważ element strony zdefiniowany w systemie_element_info () definiuje HTML jako opakowanie motywu.system_theme () następnie definiuje HTML w następujący sposób.
Jeśli chodzi o czas implementacji
hook_preprocess_html()
, to implementujesz go, aby zmienić zmienne używane w pliku html.tpl.php, który domyślnie ma następującą zawartość.Jak widać, zawiera tylko tagi HTML, które zawijają zawartość strony, dostępne w
$page
. Dzięki temu możesz zmienić zawartość<head>
znacznika, tytuł strony (ten, który znajduje się w<title>
znaczniku w<head>
znaczniku), style CSS i pliki JavaScript dodane do strony, klasy i atrybuty<body>
znacznika.Za pomocą pliku szablonu page.tpl.php możesz zmienić więcej renderowanej strony, w tym nazwę witryny, hasło witryny, tytuł strony i kanały powiązane ze stroną. Dla większości z nich istnieje specyficzna funkcja / haczyk Drupala, którego powinieneś użyć zamiast tego.
hook_preprocess_HOOK
to ogólna nazwa haka używana dla wszystkich haków wstępnego przetwarzania, w taki sam sposóbhook_form_FORM_ID_alter()
jak nazwa haka używana dla klasy haków modyfikacji.źródło
hook_preprocess_page
ihook_preprocess_html
są zaczepami warstwy motywu, których można użyć do dodania zmiennych, które można wykorzystać w szablonach (page.tpl.php
&html.tpl.php
).hook_preprocess_hook
to duży hak warstwy motywu, którego używają strona i HTML, a także niestandardowehook_theme()
.Na przykład tutaj jest deklaracja
hook_theme()
:a oto funkcje wstępnego przetwarzania:
dodatkowo
hook_preprocess()
pozwala na przechwytywanie wielu zaczepów motywu i dodawanie w nim również zmiennychźródło