向 Drupal 7 菜单项添加编号

发布于 2024-11-17 16:37:14 字数 491 浏览 1 评论 0原文

我想覆盖 drupal 7 菜单输出以在每个菜单项之前显示编号。因此,每个菜单前面都会有一个按数字顺序排列的数字,从 1 开始。

我目前使用此函数来覆盖输出:

function FDP_link($variables) {
  return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '><sup>01</sup>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>
';
}

问题是我需要数字是动态的,即每个菜单项都增加 1。有人可以帮我实现这个目标吗?

I would like to overide the drupal 7 menu output to display numbering before each menu item. So each menu would have a number before it in numerical order, starting at 1.

Im currently using this function to overide the output:

function FDP_link($variables) {
  return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '><sup>01</sup>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>
';
}

The problem is I need the number to be dynamic, ie increase by 1 with each menu item. Can someone please help me achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

银河中√捞星星 2024-11-24 16:37:14

您可以在函数内使用静态数组来在每次调用时增加值:

function FDP_link($variables) {
  static $counters;
  $counters[$variables['element']['#theme']]++;
  return '<a href="' . 
         check_plain(url($variables['path'], $variables['options'])) . '"' .
         drupal_attributes($variables['options']['attributes']) . 
         '><sup>'.sprintf('%01d',$counters[$variables['element']['#theme']]).'</sup>' .
        ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>
';
}

或者您也可以找到一种使用 preprocess_block() 挂钩拦截菜单项的方法。

You can use a static array inside your function to increment the value each time it is called:

function FDP_link($variables) {
  static $counters;
  $counters[$variables['element']['#theme']]++;
  return '<a href="' . 
         check_plain(url($variables['path'], $variables['options'])) . '"' .
         drupal_attributes($variables['options']['attributes']) . 
         '><sup>'.sprintf('%01d',$counters[$variables['element']['#theme']]).'</sup>' .
        ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>
';
}

Or you may also find a way to intercept the menu items with a preprocess_block() hook.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文