カスタムDrupalモジュールからページテンプレートに変数をどのように注入しますか?

StackOverflow https://stackoverflow.com/questions/2776820

質問

ニュースレターコンテンツを整理および公開するためのカスタムモジュールを作成しました。

私が現在遭遇している問題 - そして、私はテーマやDrupalモジュールの開発に慣れていないので、Drupalの問題とは対照的に、それは単なる知識の問題である可能性があります - 各ニュースレターをテーマにした方法です。

この時点で、ニュースレターのURL構造は次のとおりです。

/newsletters/{newsletter-name}/{edition-name}/{issue-date}は、Page-newsletters- {newsletter-name} - {edition-name}などのファイル名を使用してテーマにテンプレートファイルを作成できることを意味します。 tpl.php、素晴らしいです。私が遭遇している1つの問題は、すべてのコンテンツがテーマの$コンテンツ変数にあることです。私はそれを異なる変数として通過させたいと思っています(そのため、テーマの内部で特定のコンテンツを特定の領域に配置できます)。

これを行うための適切な方法はありますか?

編集: いくつかの質問に答えるために、問題はノード(問題、エディション、ニュースレターノードがあります)であり、Wildcardsとルーターを備えたfook_menuを使用してパスが設定されています。

役に立ちましたか?

解決

私が見つけることができる最良の答えは、phptemplate_preprocess_pageの内部にチェックを追加して、VARをモジュールに送り返し、更新することでした。

そのようです:

function phptemplate_preprocess_page(&$vars) {
    if (module_exists('test_module')) {
        _test_module_injector($vars);
    }
}

次に、test_module.moduleファイルでこの関数を作成しました。

function _test_module_injector(&$vars) {
    $vars[] = call_to_other_functions_to_load_vars();
}

うまくいくようでした。テーマのtemplate.phpファイルに触れずにこれを行う方法があればいいのにと思いますが、それ以外の場合はこれがうまく機能します。

他のヒント

テンプレート前処理機能のより良いドキュメントがあれば、Drupalははるかにアクセスしやすくなります。多くの異なる説明から情報をつなぎ合わせる必要があります。開始する場所の1つはここです:

http://drupal.org/node/223430

ただし、以下のチュートリアルで時間をかけて作業すると、ほとんどのことができることがわかります。

http://11heavens.com/theming-the-contact-form-in-drupal-6

これは古い投稿であり、OPの問題は解決されたようです。

ただし、Googleを通じてこれを見つける他の人のために(またはそうでなければ):

  1. 「Devel」モジュールをインストールします。 http://drupal.org/project/devel
  2. また、「Devel Themer」モジュール: http://drupal.org/project/devel_themer

Devel Themerを使用して、$コンテンツ変数を通過し、引き出すために必要なものを見つけます。

Devel/Themer Docs/Tutsがたくさんありますが、その使用法は非常に簡単です。ただし、テーマに印刷する前に、そこにあるものを消毒する必要があることに注意してください。

ノードをビューとして表示し、ビューテンプレートを変更するための提案は、それがうまくいくとはかなりクレイジーに聞こえます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top