it-swarm-id.com

Variabel preproses hanya untuk blok tertentu

Apakah mungkin variabel preproses hanya untuk blok tertentu? Saya telah membuat fungsi seperti itu: mytheme_preprocess_block__aggregator(&$vars) tetapi tidak berfungsi.

- EDIT -

Tampaknya diperbaiki di Drupal 8 https://drupal.org/node/1751194

10
ya.teck

Sayangnya, tidak ada cara untuk melakukannya seperti itu (mirip dengan hook_form_alter ()).

Cara terbaik untuk melakukannya adalah menggunakan $ variabel ['blok'] -> tawaran untuk menerapkan modifikasi hanya pada blok yang Anda inginkan:

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

Hanya untuk mengonfirmasi, dalam Drupal 8 Anda dapat menulis fungsi preprocess untuk blok tertentu. Misalnya:

Drupal 8

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

Tetapi Anda juga bisa menggunakan hook_preprocess_block, dan ID plugin:

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

Seperti yang disebutkan oleh Alex, dalam Drupal 7 Anda harus tetap menggunakan HOOK_preprocess_block, dan cek id:

Drupal 7

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