0

モジュールを Drupal 6 から Drupal 7 に移植しており、カスタム モジュールからテンプレートに変数を渡そうとしています。私はこのようなものを持っています:

function my_callback_function(){

  ... //some unrelated code

  $page_params = array();
  $page_params['items_per_page'] = 25;
  $page_params['page'] = $_GET['page'] ? $_GET['page'] : 0;
  $page_params['total_items'] = $data_provider->getNumItems();
  $page_params['total_pages'] = $data_provider->getNumPages($page_params['items_per_page']);

  return theme('my_theme', $page_params);
}


function my_module_theme($existing, $type, $theme, $path) {
  return array(
    'my_theme' => array(
      'variables' => array('page_params' => NULL),
      'template' => 'theme/my_template_file',
    ),
  );
}

*my_template_file.tpl.php* 内で $page_params を使用しようとしています:

<?php print $page_params['total_items']; ?>

私のサイトが次のエラーをスローするようにするすべて:

致命的なエラー: 1075 行目の C:...\includes\theme.inc でサポートされていないオペランド タイプです

これは、 theme.incの次のコード行に対応します。

// Merge in argument defaults.
  if (!empty($info['variables'])) {
    $variables += $info['variables']; // THIS IS THE VERY EXACT LINE
  }
  elseif (!empty($info['render element'])) {
    $variables += array($info['render element'] => array());
  }

Drupal 6 のようにtheme()呼び出しをそのままにしておくと、エラーは表示されませんが、テンプレートは $page_params 変数を認識しません。

  return theme('my_theme', array('page_params' => $page_params));

私が間違っていることを理解しようとしてAPIの半分を読みましたが、私が読んだ限りでは、これがカスタムモジュールからテンプレートに変数を渡す適切な方法のようです. したがって、どんな種類の助けも大歓迎です。

前もって感謝します。

4

2 に答える 2

0

drupal variable_set() および variable_get() を使用して、drupal セッションにデータを保存し、セッションからデータを取得できます。

ありがとう

于 2013-10-09T10:47:07.013 に答える