4

我最近写了一个主题函数来为我的主要链接添加一个类,效果很好。然后我编写了一些 CSS 类来使用自定义背景图像设置这些链接的样式。效果很好。现在问题来了,主要链接的链接文本仍然显示。通常这不是问题,因为我只是用一个自定义的“隐藏”类包装它。例如:

<span class="hide"><a href="#">Link Text</a></span>

所以我的问题是如何遍历主要链接并用<span>我的示例包装文本?这是我用来添加课程的主题功能。

function zkc_preprocess_page(&$vars, $hook) {

// Make a shortcut for the primary links variables
  $primary_links = $vars['primary_links'];
// Loop thru the menu, adding a new class for CSS selectors
    $i = 1;

    foreach ($primary_links as $link => $attributes){
        // Append the new class to existing classes for each menu item
        $class = $attributes['attributes']['class'] . " item-$i";
        // Add revised classes back to the primary links temp variable
        $primary_links[$link]['$attributes']['class'] = $class;
        $i++;
        } // end the foreach loop

// reset the variable to contain the new markup
$vars['primary_links'] = $primary_links;

}
4

4 回答 4

2

jQuery是一个选项吗?

尝试这样的事情:

$(document).ready(function(){
  $('#primary li a')
  .wrapInner('<span class="hide">' + '</span>');
});

编辑:

或者,如果您想使用 Drupal,请将这个人放在您的 foreach 循环中:

$link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>';

于 2010-03-25T19:23:52.203 回答
2

如果您只想隐藏链接文本,为什么不使用类似的东西text-indent: -9999px;

于 2010-03-25T19:41:37.647 回答
1

更改菜单链接输出的正确方法可以在主题层完成。您在使用预处理钩子时走在了正确的道路上,但还有更多。

有关更多信息,请参阅此:

http://drupal.org/node/352924#comment-1189890

http://api.drupal.org/api/function/theme_links/6

于 2010-03-26T01:52:12.263 回答
0

错字?

$primary_links[$link]['$attributes']['class'] = $class;

应该读;

$primary_links[$link]['attributes']['class'] = $class;

于 2010-03-26T12:42:19.847 回答