it-swarm-ja.com

links__system_main_menuはどこに定義されていますか?

私はlinks__system_main_menuを検索しましたが、このテーマの使用方法を見つけました。それはどこに定義されていますか?

13
hpn

Drupal 7コアは実際にはこの関数を定義していません。

links__system_main_menuは、[base hook]__[context]形式のテーマフックパターンです。リンクがtheme('links__system_main_menu', $vars)でテーマ設定されている場合、theme()は、定義されている場合はtheme_links__system_main_menu()を検索して使用します。そうでない場合は、theme_links()を使用します。

この動作の公式ドキュメントについては、 theme() を参照してください。 Drupal 7モジュール開発 の第3章は、これを説明する優れた機能を果たし、いくつかの例を示します。

ところで、同じ原則がテンプレートファイルに適用されます。たとえば、theme('node__article__1', $vars)を呼び出すと、theme()node--article--1.tpl.phpファイルを検索し、node--article.tpl.phpを検索します。どちらも定義されていない場合は、最終的にnode.tpl.phpにフォールバックします。

24
keithm

theme_links__system_main_menu()は現在Drupalから定義されていませんが、テーマで定義すると、DrupalはMYTHEME_links__system_main_menu()を使用します。

function MYTHEME_links__system_main_menu($variables) {
  $html = "<div>\n";
  $html .= "  <ul>\n"; 

  foreach ($variables['links'] as $link) {
    $html .= "<li>".l($link['title'], $link['path'], $link)."</li>";
  }

  $html .= "  </ul>\n";
  $html .= "</div>\n";

  return $html;
}

http://drupal.org/node/1033442#comment-5076932 で詳細を確認できます。

11
tecjam