在Drupal </span>中的每个主要项目周围添加<span>标记

时间:2009-07-29 16:42:08

标签: drupal

我希望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>

因此,我可以将spana分开设置样式。

(我知道这听起来有些奇怪,但它与IE缺乏边界半径支持以及无法设置2个背景图像有关。)

所以你知道吗?我如何让Drupal在我的所有主要链接中插入这些标记?

3 个答案:

答案 0 :(得分:2)

我猜,在你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的某个地方完成......可能是一个更好的地方;但我会让你决定你喜欢哪种解决方案......


玩得开心!

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

为了记录,我最后使用了menu_html module并在相关对话框中输入了<span>Menu Item 1</span>的菜单项。

事实上,我最后在其中一个中使用了<span><span>Menu Item Expanded</span></span>因为它已经展开并且已经有了背景图像集。它现在有3个!

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