No entiendo completamente cuándo debo usar hook_page_alter (& $ page) o template_preprocess_page (& $ vars, $ hook) en Drupal 7.
¿Cuáles son las mejores prácticas sobre eso para usar en template.php?
Gracias
La diferencia es su propósito.
hook_page_build () y hook_page_alter () se usan para eliminar, alterar o agregar elementos a nivel de página.
La matriz $ page pasada hook_page_alter()
contiene los elementos de nivel superior para cada región de bloque. Por defecto son los siguientes:
Un ejemplo de implementación podría ser el siguiente:
function mymodule_page_alter(&$page) {
// Add help text to the user login block.
$page['sidebar_first']['user_login']['help'] = array(
'#weight' => -10,
'#markup' => t('To post comments or add new content, you first have to log in.'),
);
}
Las funciones de preproceso se llaman para alterar las variables que se pasan al archivo de plantilla. No pueden cambiar la estructura de la página, pero pueden alterar el contenido de algunos elementos de la página cambiando el contenido de esas variables.
Por ejemplo, el módulo Superposición elimina las pestañas principales cuando la página que se visualiza es la superposición.
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}