it-swarm-vi.com

Sự khác biệt giữa hook_page_alter và pre process_page?

Tôi hoàn toàn không hiểu khi nào tôi nên sử dụng hook_page_alter (& $ page) hoặc template_pre process_page (& $ vars, $ hook) trong Drupal 7.

Các thực tiễn tốt nhất về điều đó để sử dụng trong template.php là gì?

Cảm ơn

10
gagarine

Sự khác biệt là mục đích của họ.

hook_page_build ()hook_page_alter () được sử dụng để xóa, thay đổi hoặc thêm các thành phần ở cấp độ trang.
[.__.] Mảng trang $ được truyền cho hook_page_alter() chứa các phần tử mức cao nhất cho từng vùng khối. Theo mặc định, chúng là những cái sau:

  • đầu trang
  • tiêu đề
  • sidebar_first
  • nội dung
  • sidebar_second
  • trang_bottom

Một ví dụ về việc thực hiện có thể là một trong những điều sau đây:

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

Các hàm tiền xử lý được gọi để thay đổi các biến được truyền cho tệp mẫu. Họ không thể thay đổi cấu trúc của trang, nhưng họ có thể thay đổi nội dung của một số thành phần của trang thay đổi nội dung của các biến đó.
[.___.] Ví dụ: mô-đun Lớp phủ sẽ xóa các tab chính khi trang được hiển thị là lớp phủ.

function overlay_preprocess_page(&$variables) {
  if (overlay_get_mode() == 'child') {
    unset($variables['tabs']['#primary']);
  }
}
16
kiamlaluno