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
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
Jawaban:
Sayangnya, tidak ada cara untuk melakukannya seperti itu (mirip dengan hook_form_alter ()).
Cara terbaik untuk melakukannya adalah dengan 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
}
}
hook_preprocess_block_MODULE()
atau THEME_preprocess_block_MODULE()
. Ini menangani dengan cara tertentu yang __
terkandung dalam nama-nama fungsi tema, ketika theme()
dipanggil sebagai theme('links__contextual__node', ...)
, misalnya.
$variables['block']->bid
dan bukan $variables['block_id']
karena 'block_id' tidak unik untuk blok itu.
$variables['block']->delta
jika$variables['block']->module == 'MODULE'
Sebagai konfirmasi, di Drupal 8 Anda dapat menulis fungsi preprocess untuk blok tertentu. Sebagai contoh:
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, di 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
}
}
MYTHEME_preprocess_block__system_branding_block(&$vars)
berhasil atau tidak MYTHEME_preprocess_block__page_title_block(&$variables)
.
mytheme_preprocess_block__{my_block_machine_name}(&$variables)
bekerja pada D8.3