Où est défini links__system_main_menu?

13

J'ai cherché links__system_main_menu, mais je trouve juste les usages de ce thème. Où est-il défini?

hpn
la source

Réponses:

24

Drupal 7 core ne définit pas réellement cette fonction.

links__system_main_menuest un motif de crochet de thème du formulaire [base hook]__[context]. Lorsque les liens ont pour thème theme('links__system_main_menu', $vars), theme()recherchera et utilisera theme_links__system_main_menu()s'il a été défini. Sinon, il utilisera theme_links().

Voir theme () pour la documentation officielle de ce comportement. Le chapitre 3 du développement du module Drupal 7 fait un excellent travail pour expliquer cela et fournit plusieurs exemples.

BTW, le même principe s'applique aux fichiers de modèle. Si, par exemple, nous appelons theme('node__article__1', $vars), theme()recherchera un node--article--1.tpl.phpfichier, puis recherchera node--article.tpl.phpfinalement node.tpl.phpsi aucun d'eux n'est défini.

Keithm
la source
11

theme_links__system_main_menu()n'est pas actuellement défini à partir de Drupal, mais Drupal l'utilisera MYTHEME_links__system_main_menu()si vous le définissez dans votre thème.

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

Vous pouvez trouver plus d'informations sur http://drupal.org/node/1033442#comment-5076932 .

tecjam
la source