links__system_main_menu在哪里定义?


13

我搜索了links__system_main_menu,但只是找到了该主题的用法。它在哪里定义?

Answers:


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上找到更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.