我需要在面包屑文本周围包装span标签,这就是我所拥有的

时间:2011-09-10 22:08:07

标签: php html drupal

Drupal 7:

 function THEMENAME_breadcrumb($variables) {
  $breadcrumb = $variables['breadcrumb'];
  if (!empty($breadcrumb)) {

    // Provide a navigational heading to give context for breadcrumb links to
    // screen-reader users. Make the heading invisible with .element-invisible.
    $output = '<h2 class="element-invisible">' . t('You are here:') . '</h2>';
    $crumbs = '<ul class="breadcrumbs clearfix">';
    $array_size = count($breadcrumb);
    $i = 0;
    while ( $i < $array_size) {
      $crumbs .= '<li class="breadcrumb-' . $i;
      if ($i == 0) {
        $crumbs .= ' first';
      }
      if($i != 0 && $i+1 != $array_size ) {
        $crumbs .= ' middle';
      }
      if ($i+1 == $array_size) {
        $crumbs .= ' last';
      }
      $crumbs .=  '">' . $breadcrumb[$i] . '</li>';
      $i++;
    }
    $crumbs .= '</ul>';
    return $crumbs;
  }
}

这将以我需要的格式输出面包屑,而不是我需要在链接内的文本周围添加span标签。

链接写在底部的第七行:

  $crumbs .=  '">' . $breadcrumb[$i] . '</li>';

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

由于我无法看到$breadcrumb[$i]内部的内容,我无法完全确定这是否有效,但以下代码应该适用于您,因为它包含带有span标记的锚标记内的任何内容:

preg_match("@<a ([^>]+)>(.+)</a>@i", $breadcrumb[$i], $matches);
$crumbs .=  '"><a ' . $matches[1] . '><span>' . $matches[2] . '</span></a></li>';

只需用这两行替换函数中的第七行,看​​它是否有效!否则,请在var_dump上使用$breadcrumb[$i]并将结果添加到您的问题中。