我最近编写了一个主题函数,将一个类添加到我的主链接中,效果很好。然后我写了一些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;
}
答案 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)
可以在主题层完成更改菜单链接输出的正确方法。你在使用预处理钩子的正确道路上,但还有更多的东西。
有关更多信息,请参阅此处:
答案 3 :(得分:0)
错字?
$primary_links[$link]['$attributes']['class'] = $class;
应该阅读;
$primary_links[$link]['attributes']['class'] = $class;