web-gelistirme-sc.com

Hook_page_alter ve preprocess_page arasındaki fark nedir?

Ne zaman Drupal 7) hook_page_alter (& $ sayfa) veya template_preprocess_page (& $ vars, $ hook) kullanmam gerektiğini tam olarak anlamıyorum.

Bu konuda template.php içinde kullanmak için en iyi uygulamalar nelerdir?

Teşekkürler

10
gagarine

Fark, amaçlarıdır.

hook_page_build () ve hook_page_alter () , sayfa düzeyinde öğeleri kaldırmak, değiştirmek veya eklemek için kullanılır.
hook_page_alter() öğesine iletilen $ sayfa dizisi, her blok bölgesi için en üst düzey öğeleri içerir. Varsayılan olarak aşağıdakilerdir:

  • page_top
  • başlık
  • sidebar_first
  • içerik
  • sidebar_second
  • page_bottom

Uygulamaya bir örnek olarak şunlar verilebilir:

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

Şablon dosyasına iletilen değişkenleri değiştirmek için önişleme işlevleri çağrılır. Sayfanın yapısını değiştiremezler, ancak bu değişkenlerin içeriğini değiştirerek sayfanın bazı öğelerinin içeriğini değiştirebilirler.
Örneğin, Kaplama modülü, görüntülenen sayfa kaplama olduğunda birincil sekmeleri kaldırır.

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