web-dev-qa-db-ja.com

カスタムモジュールからテンプレートに変数を渡しますか?

私は自分のDBにクエリを実行して、それらの値を変数として返し、それらの変数をカスタムモジュールのカスタムテンプレートに出力しようとしていますが、機能しません。

これを自分のテーマレイヤーに入れると、問題なく動作します。

$name=db_result(db_query('SELECT name FROM {users} WHERE id = %d', 2));
print $name;

クエリを.moduleファイルに保存し、変数をテンプレートに出力するだけです。これまでのところ、私は成功していません。また、私は多くの変数を多くの場所で使用することを計画しているので(表示テーブルのように、または計算の値として)、変数を必要な場所に出力し、$output$contentに関連付けない方がよいでしょう。変数。

私は this post を参照しましたが、例を機能させることができませんでした。

私はこれで本当に新しいです。私の情報は、フォーム情報を取得してそれをDBに保存するだけで、元に戻すことはありません。どんな助けにも感謝します。

2
StephanieF

テーマAPIを使用するには、テンプレートファイル、テーマフック、定義されたテーマの表示の3つの部分が必要です。以下の例はDrupal 7.の場合です。

<?php
  // defines the theme hook - should follow the naming format "_theme()"
  function mymodule_theme(){
    return array(
      'example_template1' => array(
        'template' => 'mytemplatefile1', // mytemplatefile1.tpl.php
      ),
      'example_template2' => array(
        'template' => 'mytemplatefile2', // mytemplatefile2.tpl.php
      ),
    );
  }

  // in this function is where you would do your DB queries,
  // and pass to the theme function as shown
  function mymodule_customfunction(){
    $calculation = 1+1;
    return theme('example_template1', array(
      'example_variable1' => $calculation,
      'example_variable2' => '123',
    ));
  }
?>

Mytemplatefile1.tpl.phpファイルは次のようになります。

<div class="example-markup"><?php echo $example_variable1; ?></div>

出力を表示するには、次のコマンドを実行するだけで、「example-markup」divにラップされた値が出力されます。

<?php echo mymodule_customfunction(); ?>
1
user12923