Drupal文档教程翻译 - 为菜单项添加特定id或class

logo-drupal-documentation本站原创编译,转载请给面子,尊重劳动果实,欢迎交流指正。

周一早上好,昨天晚上半推半就的下了那么一点雨,今天该怎么热还怎么热;走在路上感到热气从裤管下面钻上来,浑身还挺得劲儿的。Drupal文档自娱自乐翻译时间,上周最后一篇中,我们了解了怎样为不同层级的菜单项添加class;今天仍是菜单相关话题,把三篇并作一篇。

为菜单项添加奇偶class(odd和even)

仍是在当前主题的template.php文件中做文章,之后可以在样式表中做相应设定:

/* add item-odd item-even class to list */
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {

static $count = 0;
$zebra = ($count % 2) ? 'odd' : 'even';
$count++;

$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}
$class .= ' item-'. $zebra;
return '<li class="'. $class .'">'. $link . $menu ."</li>\n";
}

为菜单项添加特定的id

为某菜单中的每个菜单项都添加一个特定形式的id,例如“menu-item-custom-id-x”;在template.php中添加如下代码:

<?php
/**
* Theme override for theme_menu_item()
*/

function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}

// Add unique identifier
static $item_id = 0;
$item_id += 1;
$id .= ' ' . 'menu-item-custom-id-' . $item_id;
// Add semi-unique class
$class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link));

return '<li class="'. $class .'" id="' . $id . '">'. $link . $menu ."</li>\n";
}
?>

为菜单项添加特定的class

下面的代码可以根据菜单的展开或收起等状态(expanded、collapsed、leaf、active-trail)为菜单项添加特定的class:

<?php
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}

if (!empty($link)) {
// remove all HTML tags and make everything lowercase
$css_id = strtolower(strip_tags($link));
// remove colons and anything past colons
if (strpos($css_id, ':')) $css_id = substr ($css_id, 0, strpos($css_id, ':'));
// Preserve alphanumerics, everything else goes away
$pattern = '/[^a-z]+/ ';
$css_id = preg_replace($pattern, '', $css_id);
$class .= ' '. $css_id;
}
return '<li class="'. $class .'">'. $link . $menu ."</li>\n";
}
?>

译者:Viiiix7210

如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看英文原文:


收藏与分享

添加评论


Security code
换一张图