web-gelistirme-sc.com

Ön işlem değişkenleri yalnızca belirli bloklar için

Ön işlem değişkenleri sadece belirli bloklar için mümkün müdür? Ben böyle bir işlev oluşturduk: mytheme_preprocess_block__aggregator(&$vars) ama çalışmıyor.

-- DÜZENLE --

Drupal 8 https://drupal.org/node/1751194 içinde düzeltilmiş görünüyor.

10
ya.teck

Ne yazık ki, bunu yapmanın bir yolu yok (hook_form_alter () benzeri).

Bunu yapmanın en iyi yolu, yalnızca istediğiniz bloklara değişiklik uygulamak için $ değişkenleri ['block'] -> bid kullanmak olacaktır:

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

Sadece onaylamak için, Drupal 8) içinde, belirli bloklar için önişleme fonksiyonları yazabilirsiniz. Örneğin:

Drupal 8

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

Ancak hook_preprocess_block ve eklenti kimliğini de kullanabilirsiniz:

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

Alex'in belirttiği gibi, Drupal 7) HOOK_preprocess_block ve kimlik kontrolüne bağlı kalmanız gerekir:

Drupal 7

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