Drupal主题预处理功能 - 主要链接

时间:2010-03-25 17:43:05

标签: drupal themes preprocessor

我最近编写了一个主题函数,将一个类添加到我的主链接中,效果很好。然后我写了一些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 个答案:

答案 0 :(得分: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>';

答案 1 :(得分:2)

如果您只想隐藏链接文字,为什么不使用text-indent: -9999px;之类的内容?

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

错字?

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

应该阅读;

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