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


14

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

回答:


24

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ます。


11

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

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でさらに情報を見つけることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.