Nie do końca rozumiem, kiedy powinienem użyć hook_page_alter (& $ page) lub template_preprocess_page (& $ vars, $ hook) w Drupal 7.
Jakie są najlepsze praktyki w tym zakresie w template.php?
Dzięki
Różnica polega na ich celu.
hook_page_build () i hook_page_alter () służą do usuwania, modyfikowania lub dodawania elementów na poziomie strony.
Tablica $ page przekazana do hook_page_alter()
zawiera elementy najwyższego poziomu dla każdego regionu bloku. Domyślnie są to następujące:
Przykładem wdrożenia może być następujący:
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.'),
);
}
Funkcje preprocesu są wywoływane w celu zmiany zmiennych przekazywanych do pliku szablonu. Nie mogą zmieniać struktury strony, ale mogą zmieniać zawartość niektórych elementów strony, zmieniając zawartość tych zmiennych.
Na przykład moduł Nakładka usuwa zakładki podstawowe, gdy wizualizowana strona jest nakładką.
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}