Veo que ambos hook_preprocess_page()
y hook_preprocess_html()
son puestas en práctica de hook_preprocess_HOOK()
, pero no entiendo cuándo usar cuál.
hook_preprocess_page
se llama primero, pero eso no me ayuda a entender quién lo llama.
Mirando la debug_print_backtrace()
salida, se llama theme()
, pero eso realmente no me lleva a la respuesta.
¿Se define simplemente por la matriz que se pasa drupal_render()
?
template_preprocess_page()
es diferente dehook_preprocess_page()
, y hay documentación para hook_preprocess_HOOK , de la misma manera que hay para hook_process_HOOK .Respuestas:
hook_preprocess_page
es el enlace de preproceso invocado cuando se usa el archivo de plantilla page.tpl.php , yhook_preprocess_html
es el enlace de preproceso invocado cuando se usa el archivo de plantilla html.tpl.php .Ambos ganchos de preproceso se invocan cuando se procesa una página
theme('page')
, ya que el elemento de página definido desde system_element_info () define html como envoltorio de tema.system_theme () luego define html de la siguiente manera.
En cuanto a cuándo implementar
hook_preprocess_html()
, lo implementa para alterar las variables utilizadas en el archivo html.tpl.php, que por defecto tiene el siguiente contenido.Como puede ver, contiene solo las etiquetas HTML que envuelven el contenido de una página, disponible en
$page
. Con eso, puede cambiar el contenido de la<head>
etiqueta, el título de la página (el que va en la<title>
etiqueta en la<head>
etiqueta), los estilos CSS y los archivos JavaScript agregados a una página, las clases y los atributos de la<body>
etiqueta.Con el archivo de plantilla page.tpl.php, puede cambiar más de la página que se representa, incluido el nombre del sitio, el eslogan del sitio, el título de la página y los feeds asociados a la página. Para la mayoría de ellos, hay una función / gancho específico de Drupal que deberías usar.
hook_preprocess_HOOK
es el nombre de gancho genérico utilizado para todos los ganchos de preproceso, del mismo modohook_form_FORM_ID_alter()
es el nombre de gancho utilizado para una clase de ganchos de alteración.fuente
hook_preprocess_page
yhook_preprocess_html
son ganchos de capa de tema que puede usar para agregar variables que se pueden usar en sus plantillas (page.tpl.php
&html.tpl.php
).hook_preprocess_hook
es el gran gancho de capa de tema que usan la página y el html, y también los personalizados que has creadohook_theme()
.Por ejemplo, aquí está la declaración de
hook_theme()
:y aquí están sus funciones de preproceso:
adicionalmente le
hook_preprocess()
permite capturar múltiples ganchos de tema y agregar variables tambiénfuente