web-dev-qa-db-ja.com

テーマテンプレートファイルでカスタムモジュール関数を呼び出すことはできますか?

カスタムモジュールを作成しましたが、単純なhello_world()関数があります。この関数をページテンプレートファイルで呼び出すことはできますか?

モジュールファイルはこのようになります。

function choco_custom_newui_total_students(){
return 500;
}

function choco_custom_newui_preprocess_page(&$variables) {
    $variables['total_students'] = total_students();
}

page--front.tpl.php

<h2><? echo $total_students?></h2>
2
codestings

あなたはそれを行うことができますが、MVCパターンではロジックがコントローラー(この場合はモジュール)とビュー(.tplファイル)にあるので、推奨されません。コントローラ。

アイデアは、すべての変数がテンプレートの前処理関数(モジュールまたはテンプレート.php)で準備されるというものです。

あなたはhook_preprocess_pageを実装することができます:

function YOUR_MODULE_preprocess_page(&$variables) {
    $variables['my_var'] = hello_world();
}

そして、あなたのpage.tpl.phpファイルで、あなたは今あなたの前処理関数で設定された値を出力するために使うことができます:

echo $my_var;
2