0

私はdrupalにかなり慣れていません。ブロックを含むモジュールの作成に関するこの例を見てきました。私の質問は、$content を customblock_block_view から別のテンプレート ファイルに送信して、追加の HTML を追加することでレンダリングできるかどうかです。もしそうなら、どのように?

/**
 * Implements hook_block_info().
 */
function customblock_block_info() {
  $blocks = array();

  $blocks['list_modules'] = array(
    'info' => t('A listing of all of the enabled modules.'),
    'cache' => DRUPAL_NO_CACHE,
  );

  return $blocks;
}

/**
 * Implements hook_block_view().
 */
function customblock_block_view($block_name = '') {
  if ($block_name == 'list_modules') {
    $list = module_list();

    $theme_args = array('items' => $list, 'type' => 'ol');
    $content = theme('item_list', $theme_args);

    $block = array(
      'subject' => t('Enabled Modules'),
      'content' => $content,
    );

    return $block;
  }
}
4

2 に答える 2

1

アイテムはtheme($hook, $variables)関数を使用してレンダリングされます。テーマ開発者モジュールを使用して、何を渡すかを見つけます$hook。ブロックの場合はblockです。

テーマ開発者モジュールは、アイテムが関数またはテンプレートのどちらを介してレンダリングされるかも通知します。最初のケースでは、関数を探しますtheme_block。2番目のケースでは、ファイルを探しますblock.tpl.php。そのアイテムのドキュメントには、$variables配列がどのように見えるかが示されています。

配列$variablesを作成してを呼び出しますtheme('block', $variables)

テンプレートファイルの場合、一部の変数は、theme()ドキュメントで説明されているように前処理関数から取得されることに注意してください。このような変数は、の呼び出し元が提供する必要はありませんtheme($hook, $variables)。関連する前処理機能がテンプレートファイルにリストされている必要があります。

于 2013-03-12T09:05:29.940 に答える
0

独自のテンプレート ファイルを作成できます。以下を使用して登録するだけですhook_theme

function customblock_theme() {
    return array(
        'myblock' => array(
        'template' => 'mytpl',
        'variables' => array('variable' => NULL),
        ),
    );
}

次のステップは、tpl ファイルを作成することです。テーマの mytpl.tpl.php のように。次に、を使用して呼び出しますtheme()

theme('myblock',$theme_args);

今、あなたが$theme_args利用できるテンプレートで$variable

于 2013-03-13T20:46:00.813 に答える