質問

特定のブロックに対してのみ前処理変数が可能ですか?私はそのような機能を作成しました: 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
  }
}
ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top