【问题标题】:Change Displayed Root of Breadcrumb Trail in Drupal在 Drupal 中更改显示的面包屑路径的根
【发布时间】:2013-12-07 20:31:44
【问题描述】:

如何在某个点更改显示的面包屑路径的根?

假设我的面包屑绘制了太阳系地图。我希望我显示的轨迹从 Solar System 开始,直到我到达 USA,此时我希望 USA 成为根。因此,对于其他行星/大陆/国家,我会有这样的足迹:

太阳系 > 木星 > 大红色漩涡

太阳系 > 地球 > 澳大利亚 > 悉尼

太阳系 > 地球 > 北美洲 > 加拿大

但是一旦我到达 USA,面包屑轨迹不会显示为...

太阳系 > 地球 > 北美洲 > 美国

...我希望美国成为显示的根

美国

美国 > 俄亥俄州

美国 > 加利福尼亚 > 旧金山

任何人都知道我可以如何实现这一点,无论是 Drupal 模块、Drupal 技术还是我的 template.php 文件中的代码?

这是创建面包屑的 php 模板中的代码:

function cph_main_breadcrumb($variables) {

   $breadcrumb = $variables['breadcrumb'];
   $youAreHere = drupal_get_title();
   $crumbs = ' ';

   if (!empty($breadcrumb)) {
      $crumbs = '<ul>';
      foreach($breadcrumb as $value) {
         $crumbs .= '<li>' .$value.'</li>';
      }
      $crumbs .= '<li>' . $youAreHere . '<li></ul>';
   }
   return $crumbs;
}

【问题讨论】:

  • js代码可以接受吗?如果是这样,您只想隐藏 USA 之前的面包屑或任何级别为 4 的面包屑项目(就像 USA 在这里一样)?可以给面包屑的html代码吗?
  • 我只想隐藏 USA 之前的面包屑,没有其他 4 级项目。我不确定 js 代码是什么,面包屑是使用 php 模板创建的。我将代码添加到我上面的帖子中

标签: php drupal-7 breadcrumbs


【解决方案1】:
function MYTHEME_breadcrumb($variables) {

   $breadcrumb = $variables['breadcrumb'];
   //dpm($breadcrumb);
   $youAreHere = drupal_get_title();
   $crumbs = ' ';

   if (!empty($breadcrumb)) {
      $crumbs = '<ul>';
      foreach($breadcrumb as $value) {
        // Add an if statement to check current item
        if($value == '<a href="/MY_PATH_TO_THIS_ITEM">USA</a>') {
          // Reset the list
          $crumbs = '<ul>';
        }
        $crumbs .= '<li>' .$value.'</li>';
      }
      $crumbs .= '<li>' . $youAreHere . '<li></ul>';
   }
   return $crumbs;
}
  • 如果当前的面包屑值为“USA”重置面包屑并重新开始。

  • 如果您想查找 USA dpm() 的当前项目,请使用 $breadcrumb 查找。请注意,如果指向美国的链接稍后更改,您也必须在此处更改...

【讨论】:

  • @kevin 请提供一些反馈。如果这解决了您的问题,请将其选为已接受或投赞成票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
相关资源
最近更新 更多