【问题标题】:Removing the text from drupal custom menu从 drupal 自定义菜单中删除文本
【发布时间】:2026-02-04 01:50:01
【问题描述】:

我正在尝试在 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();

感谢您的帮助!

【问题讨论】:

    标签: php drupal-6


    【解决方案1】:

    theme_menu_tree 将是在template.php 本身上解决此问题的方法。您的功能的内容与您上面的功能相同。文档位于http://api.drupal.org/api/function/theme_menu_tree

    但是,我建议您使用 CSS 来完成您的工作。如果文本被完全删除(通过 php),那么您将依赖于用户的浏览器来正确显示图像和 CSS 并使导航成为可能。

    您可以考虑同时包含图像和文本,但将文本部分设为display: none,以便在未正确加载 CSS 时更优雅地降级。

    【讨论】:

  • 在使用背景图像时“删除”文本的一个常见技巧是通过 CSS 中的 text-indent:-9999px; 样式将文本移动到视口之外。
  • 开发 HTML 8 年,我从来不知道.. 太好了,谢谢!
  • 我很好奇你为什么使用背景图片而不是普通的 标签。如果您使用 ,则可以通过将标题添加到 alt 标签来一举解决整个问题。
  • @anschauung:如果您自己编写或生成链接,&lt;img&gt; 标签是一个选项,但如果您正在设计其他人的输出,或者像在这种情况下,CMS 生成的东西,这可能根本不可能或至少做很多工作。此外,文本链接更易于访问(想想搜索引擎爬虫、屏幕阅读器等)
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签