2011-02-02 9 views
0

私は、finderというモジュールを作成しました。私は、urlからパラメータを取り出し、クランプしてtplファイルで結果を表示します。関連する関数は次のとおりです。Drupalモジュールのコールバック、前処理、テンプレート間でデータを渡す

ここで、finder_viewが呼び出されています。また、finder_preprocess_finder_viewが呼び出されていることも知っています。最後に、私はresult.tpl.phpが出力に使用されていることを知っています。しかし、私はコールバックで意味のある作業を行う方法を頭で覆うことはできません。何らかの形で、プリプロセッサで "変数"を追加してtplファイルにアクセスできるようにします。

あなたがtplファイルを使用している状況では、コールバックは何にも役立ちますか?私はコールバックがすべての作業を行い、テーマ関数に渡す過去にこれを行ってきましたが、今回は代わりに出力のためにファイルを使いたいと思います。

おかげで...

UPDATE:これは実際に問題を命名パラメータでした。 Drupal 6はhook_themeでは 'variables'ではなく 'arguments'キーを使用します。変更されると、すべて期待通りに機能しました。私のロジックはコールバックで実行されていたので、プリプロセッサも削除しました。

答えて

0

問題は '引数'の代わりに '変数'を使用するhook_themeに存在しました。私はこの質問を削除すべきですか?

+1

代わりに質問を更新し、そこに言及してください。また、Drupal 6または7を使用している場合は、次回に言及する必要があります。これは2つのバージョンの違いであるため、7は変数を使用し、6は引数を使用します。 – Berdir

+0

私はそれがそれより悪いと思う。私はかなり5が変数であることを確信しています、6は引数で、7は変数に戻ります。 Drupalのコア開発者はサディスティックです。 – rob5408

1

ロジックは常にコールバックにある必要があります。メニュー配列に "file"を指定することで、別のファイルに格納することができます。

あなたの例では、郵便番号から「プロバイダを取得する」ことが非常に重要です。 :)

あなたのテーマ関数では、$ providers配列を伝統的なdrupal $ vars araryのようなものに変換できます。あるいは、前処理とテンプレートの両方をスキップして、すべてのテーマを単純に行うことができますテーマ機能で働きます。前処理およびテンプレートは便利であり、必ずしも必要ではありません。

私は、テーマ関数の名前を、コールバックとは異なるものに変更するか、少し理解しやすくすることにします。

これは役に立ちますか?私はあなたが本当に求めていることを100%確信しているわけではありませんが、うまく構成されたままコードを単純化しようと考えているなら、うまくいけば助けになります。

+0

以前はtplファイルを使用していましたが、私は前処理機能でデータを準備しました。またそこに私はそれに渡される変数の参照に追加することによって、私はtplファイルに必要なすべてのデータを追加することができます。しかし、私はモジュールのコールバックを使用しているとき、私は何かを私のtplファイルにそこに作るのですか?もし私がそれを必要としないなら、私はプリプロセッサを気にしません。 – rob5408

+0

リターンテーマ( 'finder_view'、$ providers);まさにその方法です。もしあなたのデータを、そのテーマ()が変数に変えることができるフォーマットにフォーマットするならば、前処理機能をすべてスキップすることができます。 – mirzu

関連する問題