it-swarm-eu.dev

Předpřipravené proměnné pouze pro určité bloky

Je možné předzpracované proměnné pouze pro určité bloky? Vytvořil jsem takovou funkci: mytheme_preprocess_block__aggregator(&$vars), ale nefunguje to.

-- UPRAVIT --

Zdá se, že byl opraven v Drupal 8 https://drupal.org/node/1751194

10
ya.teck

Bohužel neexistuje způsob, jak to udělat (podobně jako hook_form_alter ()).

Nejlepší způsob, jak toho dosáhnout, by bylo použití proměnných $ ['block'] -> bid použít k úpravám pouze na bloky, které chcete:

function mytheme_preprocess_block(&$variables) {
  if ($variables['block']->bid === 'target_block_id') {
    // do something for this block
  } else if ($variables['block']->bid === 'other_target_block_id') {
    // do something else for this other block
  }
}
20
Alex Weber

Jen pro potvrzení, v Drupal 8) můžete psát funkce předzpracování pro konkrétní bloky. Například:

Drupal 8

mytheme_preprocess_block__system_branding_block(&$vars) {
  // Make changes to the the system branding block
}

Můžete ale také použít hook_preprocess_block a ID pluginu:

function mytheme_preprocess_block(&$vars) {
  if ($vars['plugin_id'] == 'system_branding_block') {
    // Make changes to the the system branding block
  }
}

Jak zmínil Alex, v Drupal 7 budete muset držet HOOK_preprocess_block a id kontrolu:

Drupal 7

mytheme_preprocess_block(&$vars) {
  if ($vars['block']->bid === 'target_block_id') {
    // make changes to this block
  }
}
1
bryanbraun