1

現在theme_blocks()、Drupal 6の基本テーマで使用していますが、Drupal 7で使用されていないため、テーマをDrupal 7に変換するのに苦労しtheme_blocks()ました。以下のコードは、関数の簡単な実装であり、現在Drupal6でどのように使用していますか。

/* Implementation of theme_blocks() */
function theme_blocks($region) {
  var output = '';
  if ($list = block_list($region)) {
    //cycle through all blocks in a region
    foreach ($list as $key => $block) {
      //test each block for a given condition
      if ($block->delta == 1) {
        output = /* make some changes */
      }
      else {
        output = /* theme per usual */
      }
    }
  }

  return $output;
}

つまり、基本的にはtheme_blocks()、リージョン内のすべてのブロックを循環し、特定のブロックをターゲットにして、いくつかの変更を行うために使用していました。問題はtheme_blocks()、Drupal7ではもう使用されていないことです。

特定のリージョン内の特定のブロックをターゲットにして、Drupal 7のテーマ設定に基づいて動的に変更を加える方法はありますか?

4

1 に答える 1

1

Theme_blocks ()テーマ関数(フックではありません)はDrupal 7では使用されなくなりました。ブロックのレンダリング方法を変更する必要がある場合は、ブロックテンプレートファイルの前処理関数を実装する必要があります(THEMENAME_preprocess_block(); template_preprocess_blockのドキュメントを参照してください)。 ())または、テーマでblock.tpl.phpテンプレートファイルを使用します。

ロジック部分は前処理関数に入れ、レンダリングコードはテンプレートファイルに入れる必要があることに注意してください。

于 2011-08-25T20:46:36.070 に答える