Різниця між ho_page_alter та precesscess_page?


10

Я не повністю розумію, коли мені слід використовувати kuk_page_alter (& $ сторінку) або template_preprocess_page (& $ vars, $ hook) в Drupal 7.

Які найкращі практики щодо цього використовувати в template.php?

Дякую

Відповіді:


16

Різниця - їх призначення.

kljuk_page_build () і moy_page_alter () використовуються для видалення, зміни або додавання елементів на рівні сторінки.
Переданий масив $ сторінки hook_page_alter()містить елементи верхнього рівня для кожної області блоку. За замовчуванням вони є такими:

  • page_top
  • заголовок
  • sidebar_first
  • зміст
  • бічна панель_секунда
  • page_bottom

Прикладом реалізації може бути такий:

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']);
  }
}

1
Але за допомогою гачок preprocess_page я можу змінити структуру сторінки, змінивши речі всередині $ vars ['page']. Я використовую це, тому що мені було важко дістати nid за допомогою_у_контажу_ сторінок для сторінки вузла.
гагарин

2
Ви можете отримати nid для сторінки вузла, скориставшись menu_get_object ()
andrewmacpherson
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.