it-swarm.it

Differenza tra hook_page_alter e preprocess_page?

Non capisco completamente quando dovrei usare hook_page_alter (& $ page) o template_preprocess_page (& $ vars, $ hook) in Drupal 7.

Quali sono le migliori pratiche da utilizzare in template.php?

Grazie

10
gagarine

La differenza è il loro scopo.

hook_page_build () e hook_page_alter () sono usati per rimuovere, modificare o aggiungere elementi a livello di pagina.
L'array $ page passato a hook_page_alter() contiene gli elementi di livello superiore per ciascuna regione di blocco. Di default sono i seguenti:

  • page_top
  • intestazione
  • sidebar_first
  • soddisfare
  • sidebar_second
  • page_bottom

Un esempio di implementazione potrebbe essere il seguente:

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

Le funzioni di preelaborazione vengono chiamate per modificare le variabili che vengono passate al file modello. Non possono cambiare la struttura della pagina, ma possono alterare il contenuto di alcuni elementi della pagina cambiando il contenuto di quelle variabili.
Ad esempio, il modulo Overlay rimuove le schede primarie quando la pagina visualizzata è l'overlay.

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