URLからパラメーターを取得し、それらをクランチしてから、tplファイルを介して結果を表示するファインダーというモジュールを作成しました。ここに関連する関数があります...
function finder_menu()
{
$items = array();
$items['finder'] = array(
'page callback' => 'finder_view',
'access callback' => TRUE,
);
return $items;
}
function finder_theme($existing, $type, $theme, $path)
{
return array(
'finder_view' => array(
'variables' => array('providers' => null),
'template' => 'results',
),
);
}
function finder_preprocess_finder_view(&$variables)
{
// put my data into $variables
}
function finder_view($zipcode = null)
{
// Get Providers from Zipcode
return theme('finder_view', $providers);
}
これで、finder_view が呼び出されていることがわかりました。また、finder_preprocess_finder_view が呼び出されていることも知っています。最後に、result.tpl.php を使用して出力していることがわかります。しかし、コールバックで意味のある作業を行う方法に頭を悩ませることはできません。何らかの方法でそのデータをプリプロセッサで使用可能にして、「変数」に追加し、tpl ファイルでアクセスできるようにします。
tpl ファイルを使用している状況では、コールバックは何かに役立ちますか? 私は過去にコールバックがすべての作業を行い、テーマ関数に渡す場所でこれを行いましたが、今回は代わりにファイルを出力に使用したいと考えています。
ありがとう...
更新: これは実際にはパラメーターの命名の問題でした。Drupal 6 は、hook_theme で「変数」ではなく「引数」キーを使用します。変更すると、すべてが期待どおりに機能しました。ロジックがコールバックで実行されていたため、プリプロセッサも削除しました。