Я не совсем понимаю, когда мне следует использовать hook_page_alter (& $ page) или template_preprocess_page (& $ vars, $ hook) в Drupal 7.
Какую наилучшую практику использовать в template.php?
Спасибо
Разница в их предназначении.
hook_page_build () и hook_page_alter () используются для удаления, изменения или добавления элементов на уровне страницы.
Переданный в массив $ page hook_page_alter()
содержит элементы верхнего уровня для каждой области блока. По умолчанию они следующие:
Примером реализации может быть следующий:
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.'),
);
}
Функции предварительной обработки вызываются для изменения переменных, которые передаются в файл шаблона. Они не могут изменить структуру страницы, но они могут изменить содержимое некоторых элементов страницы, изменив содержимое этих переменных.
Например, модуль «Наложение» удаляет основные вкладки, когда визуализируемая страница является наложением.
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}