質問
特定のブロックに対してのみ前処理変数が可能ですか?私はそのような機能を作成しました: mytheme_preprocess_block__aggregator(&$vars)
しかし、それは機能しません。
- 編集 -
Drupal 8で修正されているようですhttps://drupal.org/node/1751194
解決
残念ながら、そのようにそれを行う方法はありません(hook_form_alter()に似ています)。
これを行う最良の方法は、$変数['block'] - >必要なブロックにのみ修正を適用するために使用することです。
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
}
}
他のヒント
確認するために、Drupal 8では、特定のブロックの前処理関数を記述できます。例えば:
Drupal 8
mytheme_preprocess_block__system_branding_block(&$vars) {
// Make changes to the the system branding block
}
ただし、hook_preprocess_block、およびプラグインIDを使用することもできます。
function mytheme_preprocess_block(&$vars) {
if ($vars['plugin_id'] == 'system_branding_block') {
// Make changes to the the system branding block
}
}
Alexが述べたように、Drupal 7では、hook_preprocess_blockとIDチェックに固執する必要があります。
Drupal 7
mytheme_preprocess_block(&$vars) {
if ($vars['block']->bid === 'target_block_id') {
// make changes to this block
}
}
所属していません drupal.stackexchange