it-swarm-eu.dev

Rozdíl mezi hook_page_alter a preprocess_page?

Nechápu úplně, kdy bych měl použít hook_page_alter (& $ stránku) nebo template_preprocess_page (& $ vars, $ hook) v Drupal 7).

Jaké jsou nejlepší postupy, které lze použít v template.php?

Dík

10
gagarine

Rozdíl je v jejich účelu.

hook_page_build () a hook_page_alter () slouží k odstranění, změně nebo přidání prvků na úrovni stránky.
Pole $ page předané hook_page_alter() obsahuje elementy nejvyšší úrovně pro každou oblast bloku. Standardně se jedná o následující:

  • page_top
  • záhlaví
  • sidebar_first
  • obsah
  • sidebar_second
  • page_bottom

Příkladem implementace může být následující:

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

Funkce předzpracování jsou volány ke změně proměnných, které jsou předávány do souboru šablony. Nemohou změnit strukturu stránky, ale mohou změnit obsah některých prvků stránky a změnit obsah těchto proměnných.
Například modul Overlay odstraní primární karty, když je vizualizovanou stránkou overlay.

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