Answers:
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
两者都未定义的情况。
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上找到更多信息。