Wo ist links__system_main_menu definiert?

14

Ich habe gesucht links__system_main_menu, aber nur Verwendungen dieses Themas gefunden. Wo ist es definiert?

hpn
quelle

Antworten:

24

Drupal 7 Core definiert diese Funktion nicht.

links__system_main_menuist ein thematisches Hakenmuster des Formulars [base hook]__[context]. Wenn Links mit einem Thema versehen sind theme('links__system_main_menu', $vars), theme()wird gesucht und verwendet, theme_links__system_main_menu()falls dies definiert wurde. Wenn nicht, wird es verwendet theme_links().

Siehe theme () für die offizielle Dokumentation dieses Verhaltens. Kapitel 3 der Modulentwicklung von Drupal 7 bietet eine hervorragende Erklärung und enthält mehrere Beispiele.

Übrigens gilt das gleiche Prinzip für Vorlagendateien. Wenn wir zum Beispiel anrufen theme('node__article__1', $vars), theme()suchen wir nach einer node--article--1.tpl.phpDatei und greifen node--article.tpl.phpschließlich auf zurück, node.tpl.phpwenn keine von beiden definiert ist.

keithm
quelle
11

theme_links__system_main_menu()ist derzeit nicht in Drupal definiert, wird aber von Drupal verwendet MYTHEME_links__system_main_menu(), wenn Sie es in Ihrem Thema definieren.

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;
}

Weitere Informationen finden Sie unter http://drupal.org/node/1033442#comment-5076932 .

Tecjam
quelle