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

添加<;span>;Drupal中每个主要项周围的标记,drupal,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> 因此,我可以将span与a分开设置样式 (我知道这听起

我希望我在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在我所有的主链接中插入这些标记吗?

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

print theme('links', $primary_links, array('class' => 'links primary-links'));
一种解决方案(可能不是最干净的,但应该可行)是迭代
$primary\u links
的元素,对于每个元素:

  • 激活HTML模式
如果您的菜单只有一个级别,我想这样做可以:

foreach ($primary_links as & $link) {
  $link['html'] = true;
  $link['title'] = '<span>' . $link['title'] . '</span>';
}
foreach($primary\u links as&$link){
$link['html']=true;
$link['title']='.$link['title'].';
}
然后,您可以像现在一样调用
theme

这样,您就可以在链接的文本周围获得
标记,而不必将它们注入
标记的
标题
属性中


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


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


玩得开心

这应该有帮助


向下滚动到此注释以获得最终解决方案。html输出有一些问题在那里得到了解决。

记录在案,最后我只是使用了,并在相关对话框中以
菜单项1
的形式输入了菜单项

事实上,我在其中一个菜单项中扩展了
菜单项
,因为它已经扩展,并且已经设置了背景图像。它现在有3个


至少我的标签上的曲线角现在在IE中工作。另一次IE因为不能正确支持CSS而占用了5/6个小时

这真的很接近-谢谢你给我指出了正确的方向。最后我不得不编辑
$primary\u links\u tree
,尽管我的主题是用它来制作菜单,而不仅仅是
$primary\u links
。非常接近,足以被接受为答案,我想:)不客气:-)关于变量的名称,好的:我从garland默认主题中选取了一个,我也没想过说这可能需要一些调整^^^事实证明这比我预期的要困难得多,因为
$primary\u links\u tree
page.tpl.php
中调用时已经预先呈现了,
primary\u links\u tree
,我似乎无法追溯到足够远的地方,以便像你所说的那样插入它……关于$primary\u links\u tree太糟糕了:-(谢谢,但再次强调,这与
$primary\u links
有关,而不是
$primary\u links\u tree
,它作为
ul
输出,来自完全不同的地方。