2012-02-12 14 views
0

私はDrupal 7を使用していて、fbという名前のカスタムモジュールを作成しました。 fb.moduleファイルでは、私は次があります。hook_theme()が何もしていないように見えない理由を理解していない

fb.tpl.php is working! 

テスト目的のために:モジュールファイルと同じディレクトリ(モジュールのルート)で

function fb_theme($existing, $type, $theme, $path) { 
    return array(
    'fb' => array(
     'template' => 'fb' 
    ) 
); 
} 

、私は含まれていfb.tpl.phpという名前のファイルを持っています、私のテーマのhtml.tpl.phpファイルには、体内で、次の呼び出しを:

<?php 
$ouput = theme('fb'); 
print_r($output); 
?> 

しかし、print_r($output)行が生成されません。いいえ。 fb.tpl.phpファイルの内容、またはそのファイルの内容をパラメータの1つの値として含む配列が含まれていると思います。それはなぜですか?

答えて

1

あなたはこのようなレンダリング可能な配列を作成し、その代わりのDrupal 7でまったくテーマ機能を使用する必要はありません。

$output = array(
    '#theme' => 'fb' 
); 

そして、このような出力にそれを:

drupal_render($output); 

ことあなたのhtml.tpl.phpファイルに出力する最も簡単な方法でしょう。

-1

drupal 6構文を使用しています。次のようにD7の構文は次のとおりです。

function fb_theme($existing, $type, $theme, $path) { 
    return array(
    'fb' => array(
     'file' => 'fb' 
    ) 
); 
} 

は、ここに完全なマニュアルを参照してください:http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_theme/7

を[編集] - また、それ以外の場合は、あなたが文句を言わない見、あなたがテーマのフックに変更を加えた後、テーマキャッシュをフラッシュすることを忘れていけません変更。

+0

彼の構文は正しいです。 'file'キーは、テーマが実装するテンプレートファイルではなく、関数が実装されているファイルを指定します。 'テンプレート'キーは、この場合、Drupalに使用すべきtpl.phpファイルを知らせるために使用する正しいキーです。 – KerrM

関連する問題