我正在尝试在drupal中设置自定义菜单。
我已经成功地设计了显示背景图像,但问题是菜单项标题仍然显示。所以我得到了一个漂亮的图像,并在其上面进行了布局。
是否有模板功能可用于格式化自定义菜单并从超链接中删除文本部分?
我在我的主要链接上做了类似的事情(见下文),但我可以帮忙找出如何在自定义菜单上执行此操作。
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']);
$cssid = str_replace(' ', '_', strip_tags($link));
$link = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $link);
$output .= '<li id="'.$cssid.'">' . $link .'</li>';
};
$output .= '</ul>';
}
return $output;
}
然后在page.tpl.php
中调用print primary_links_add_icons();
感谢您的帮助!
答案 0 :(得分:1)
theme_menu_tree
将是template.php
本身解决此问题的方法。你的功能与你上面的功能相同。文档位于http://api.drupal.org/api/function/theme_menu_tree
但是,我建议你使用CSS来做你正在做的事情。如果文本被完全删除(通过php),那么你将依赖于用户的浏览器来正确显示图像和CSS并使导航成为可能。
您可以考虑同时包含图像和文本,但是如果未正确加载CSS,则会使文本部分display: none
更加优雅地降级。