世界如何可能?我发誓,我已经阅读了相当于3个百科全书,但无济于事。我在区域内尝试过解决方案,page.tpl.php和blocks。他们都没有给我我需要的东西......我知道还有很多其他人也需要这个!
我得出的结论是,我想打印出page.tpl.php中的菜单......所以请不要使用块解决方案。
我希望能够遍历主菜单链接(AND children)并重写输出,以便没有默认的Drupal类标记。我发现的最接近的是这个例子:
<?php if (is_array($primary_links)) : ?>
<ul id="sliding-navigation">
<?php foreach ($primary_links as $link): ?>
<li class="sliding-element"><?php
$href = $link['href'] == "<front>" ? base_path() : base_path() . drupal_get_path_alias($link['href']);
print "<a href='" . $href . "'>" . $link['title'] . "</a>";
?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
正如您所看到的,链接正在使用自定义的UL和LI类重新打印......这太棒了!但是,没有儿童正在打印。我如何扩展此代码,以便所有孩子都是列表的一部分?注意:我不希望孩子只出现在他们的父页面上,他们必须一直在场。否则,我计划的下拉菜单是没用的。
我真诚地感谢你,以减轻我的巨大头痛!
答案 0 :(得分:5)
一旦达到page.tpl,就很难影响输出 - 你可能会更好地寻找template.php函数。
这是我用来改变主链接类的一个:
function primary_links_add_icons() {
$links = menu_primary_links();
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level\">\n";
if ($links) {
foreach ($links as $link) {
$link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
$output .= '<li class="sublevel">' . $link .'</li>';
};
$output .= '</ul>';
}
return $output;
}
然后在page.tpl.php中,我就这样称呼它:
<?php if ($primary_links) :?>
<?php print '<div id="menu">'; ?>
<?php print primary_links_add_icons(); ?>
<?php print '</div>'; ?>
<?php endif;?>
答案 1 :(得分:1)
我必须在我的链接中添加<span>
来设置样式,所以我覆盖了includes / theme.inc中的theme_links()
您可以将该函数复制到template.php,将其重命名为yourthemename_links(),并根据需要进行修改。
此函数输出ul,li标签,drupal_attributes,“first”,“last”,“active”等类,并影响整个站点的菜单。
您可能还想查看includes / menu.inc中的函数,包括theme_menu_local_tasks()和menu_local_tasks(),如果您需要以不同方式输出主要和次要。 MarkLNH