Где определено links__system_main_menu?

13

Я искал 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 () для официальной документации этого поведения. Глава 3 Drupal 7 Разработка модулей отлично объясняет это и предоставляет несколько примеров.

Кстати, тот же принцип применяется к файлам шаблонов. Если, например, мы называем theme('node__article__1', $vars), theme()будет искать node--article--1.tpl.phpфайл, а затем node--article.tpl.php, наконец , падает обратно , node.tpl.phpесли ни один из них определены.

keithm
источник
11

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 .

tecjam
источник