Gdzie jest zdefiniowane menu link__system_main_menu?

13

Szukałem links__system_main_menu, ale po prostu znajduję zastosowania tego tematu. Gdzie to jest zdefiniowane?

hpn
źródło

Odpowiedzi:

24

Rdzeń Drupala 7 tak naprawdę nie definiuje tej funkcji.

links__system_main_menujest motywem wzoru formularza [base hook]__[context]. Gdy linki są tematyczne theme('links__system_main_menu', $vars), theme()wyszuka i użyje, theme_links__system_main_menu()jeśli zostało zdefiniowane. Jeśli nie, użyje theme_links().

Zobacz theme () w celu uzyskania oficjalnej dokumentacji tego zachowania. Rozdział 3 rozwoju modułu Drupal 7 doskonale wyjaśnia to i podaje kilka przykładów.

BTW, ta sama zasada dotyczy plików szablonów. Jeśli, na przykład, zadzwonimy theme('node__article__1', $vars), theme()wyszuka node--article--1.tpl.phpplik, a następnie w node--article.tpl.phpkońcu wróci do, node.tpl.phpjeśli żaden z nich nie zostanie zdefiniowany.

klucz
źródło
11

theme_links__system_main_menu()nie jest obecnie zdefiniowany w Drupal, ale Drupal użyje go MYTHEME_links__system_main_menu(), jeśli zdefiniujesz go w swoim motywie.

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

Więcej informacji można znaleźć na stronie http://drupal.org/node/1033442#comment-5076932 .

tecjam
źródło