2011-01-20 6 views
1

私はデフォルトのメインメニューに項目のリストを持っています。私はテンプレートをオーバーライドしようとしているので、各アイテムとカスタムテンプレート/テーマ全体を繰り返し処理することがあります。Drupal 7とtheme()付きカスタムテンプレートを使用

echo theme('links', array('links' => menu_navigation_links('main-menu', 0))); 

メインメニューはdrupalが提供するデフォルトのメニューIDです。テーマの最初のパラメータは、デフォルトの "リンク"テンプレートを使用するように指示しています。 mythemeディレクトリにあるmy mainmenu.tpl.phpを使用する方法を教えてください。

私はmainmenu.tpl.phpという名前のファイルを作成し、すべてが消えなければならない場合mainmenu.tpl.php内のリンクをデフォルトにフォールバックを提供するように

theme('links__mainmenu.tpl.php') 

でそれを呼び出して試してみました。私はファイルに間違った名前を付けています。私の人生にとってはそれを理解できません。ヘルプ:)

乾杯、 アレックス

答えて

0

基本の種類が、あなたのテーマはベーステーマを実装しないと、あなたのテーマがデフォルトに設定されていますか?

4

モジュールのデフォルトテーマは、hook_themeメソッドで定義されています。この関数を使用すると、テーマファイル(.tpl.php)とそれらに渡される変数を宣言できます。デフォルトテーマファイルを宣言するには、templateフィールドを使用します。

function hook_theme($existing, $type, $theme, $path) { 
    return array(
    'mymodule_display' => array(  /* displayable name */ 
     'template' => 'mymodule_display', /* template file, leave off .tpl.php */ 
     'variable' => array(...),   /* associative array of vars used */ 
    ) 
); 
} 

このlinkには、さらに深い例があります。

モジュールのデフォルトテーマを呼び出すには、元の投稿のようにtheme()メソッドを使用します。次のようなものがあります。

<?php echo theme('mymodule_display', array(/* vars */)); 

代替アンダースコアは、最後のものが優先されるように定義されます。したがって、theme('links__mymodule_display', ...)は、mymodule_displayを復元できない場合にのみ、DrupalがLinksモジュールテーマを使用することを意味します。

関連する問題