Drupal 覆盖自定义菜单模板 [英] Drupal Override Custom Menu Template

查看:31
本文介绍了Drupal 覆盖自定义菜单模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个名为sub-top-nav"的自定义菜单,现在我想覆盖 html 输出.特别是我想为每个项目添加一个独特的类.

atm 是这样的:

<div class="内容"><ul class="菜单"><li class="leaf first"><a title="Test 1" href="/test1">Test 1</a></li><li class="leaf"><a title="Test 2" href="/test2">Test 2</a></li><li class="leaf active-trail"><a class="active" title="Test 3" href="/test3">Test 3</a></li><li class="leaf last"><a title="Test 4" href="/test4">Test 4</a></li>

我想把它改成:

<div class="内容"><ul class="菜单"><li class="leaf test1 first"><a title="Test 1" href="/test1">Test 1</a></li><li class="leaf test2"><a title="Test 2" href="/test2">Test 2</a></li><li class="leaf test3 active-trail"><a class="active" title="Test 3" href="/test3">Test 3</a></li><li class="leaf test4 last"><a title="Test 4" href="/test4">Test 4</a></li>

这会给我更多的造型力量.知道它是如何工作的吗?

提前致谢!

解决方案

我现在就可以使用了.这段代码也可能对其他人有所帮助!它进入 yourtheme/template.php

function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));如果 (!empty($extra_class))$class .= ' '.$extra_class;如果($in_active_trail)$class .=' 活动轨迹';$class .= ' ' .preg_replace('/[^a-zA-Z0-9]/', '', strtolower(strip_tags($link)));返回'<li class="'.$class .'">'.$链接.$menu ."</li>
";}

I created a custom menu called "sub-top-nav" and now I'd like to override the html output. In particular I would like to add an unique class to each item like.

This is how it looks atm:

<div class="clear-block block block-menu" id="block-menu-menu-sub-top-nav">
    <div class="content">
    <ul class="menu">
      <li class="leaf first"><a title="Test 1" href="/test1">Test 1</a></li>
      <li class="leaf"><a title="Test 2" href="/test2">Test 2</a></li>
      <li class="leaf active-trail"><a class="active" title="Test 3" href="/test3">Test 3</a></li>
      <li class="leaf last"><a title="Test 4" href="/test4">Test 4</a></li>
    </ul>
  </div>
</div>

And I'd like to change it into:

<div class="clear-block block block-menu" id="block-menu-menu-sub-top-nav">
  <div class="content">
    <ul class="menu">
      <li class="leaf test1 first"><a title="Test 1" href="/test1">Test 1</a></li>
      <li class="leaf test2"><a title="Test 2" href="/test2">Test 2</a></li>
      <li class="leaf test3 active-trail"><a class="active" title="Test 3" href="/test3">Test 3</a></li>
      <li class="leaf test4 last"><a title="Test 4" href="/test4">Test 4</a></li>
    </ul>
  </div>
</div>

This would give me more styling power. Any idea how that works?

Thanks in advance!

解决方案

I got it to work now. This piece of code might help someone else as well! It goes into yourtheme/template.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';

  $class .= ' ' . preg_replace('/[^a-zA-Z0-9]/', '', strtolower(strip_tags($link)));

  return '<li class="'. $class .'">'. $link . $menu ."</li>
";
}

这篇关于Drupal 覆盖自定义菜单模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆