我希望 Drupal 中的主要链接在代码中如下所示:

<a class="active" title="Go to the Foo Homepage" href="/"><span>Home</span></a>

而不是:

<a class="active" title="Go to the Foo Homepage" href="/">Home</a>

这样我就可以设计样式了 span 分别从 a.

(我知道这听起来有点奇怪,但这是为了解决 IE 缺乏边框半径支持以及无法设置 2 个背景图像的问题。)

那么您知道在哪里以及如何让 Drupal 在我的所有主链接中插入这些标签吗?

有帮助吗?

解决方案

我猜,在你的某个地方 page.tpl.php, ,你有这样的东西来显示主菜单:

print theme('links', $primary_links, array('class' => 'links primary-links'));

一种解决方案 (可能不是最干净的——但应该可以) 将迭代以下元素 $primary_links, ,至,对于每一个,:

  • 激活 HTML 模式
  • 包裹住 title<span></span>

如果您的菜单只有一层,我想这样做:

foreach ($primary_links as & $link) {
  $link['html'] = true;
  $link['title'] = '<span>' . $link['title'] . '</span>';
}

然后,您可以致电 theme 就像你现在已经在做的那样。

有了这个,你应该得到 <span> 标签围绕链接的文本,而不将它们注入到 title的属性为 <a> 标签。


如果你的菜单中有更多级别,你将不得不向下迭代;要么使用两个叠瓦式循环,要么使用某种递归(如果您不知道菜单的深度)。
(我会让你玩得开心;我说的应该足以让你开始;-))


作为旁注,这可能可以在某个地方完成 template.php 也...可能是一个更好的地方;但我会让你决定你喜欢哪种解决方案......


玩得开心 !

其他提示

这应该有助于 http://drupal.org/node/221382

向下滚动至此评论以获取最终解决方案 http://drupal.org/node/ 221382#评论-755469 。 html输出存在问题,并在那里得到解决。

为了记录,我最后只使用了 menu_html模块并输入了菜单项相关对话中的&lt; span&gt;菜单项1&lt; / span&gt;

事实上,我最终在其中一个中使用了&lt; span&gt;&lt; span&gt;菜单项扩展&lt; / span&gt;&lt; / span&gt; ,因为它已展开并且已经有了背景图片组。它现在有3个!

至少我的标签上的弯角现在正在IE中工作。 IE再次吸收5/6小时,因为它不能正确支持CSS!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top