web-dev-qa-db-ja.com

アクティブリンクのCSSクラスを変更する方法(is-active)

アクティブリンクのCSSクラスを「is-active」から(私の場合)「active」に変更する最良の方法は何ですか?

また、本当にそれを置き換えたり、クラスを追加したりする必要がありますか? 「is-active」クラスがハードコーディングされていることを知っています( ここ といくつかのphpクラスで)drupalは抽象化レイヤーと設定のトン。それは何ですか:「過去の遺産」または本当に十分に根拠のあるアイデア?

現在のcssフレームワークだけに「アクティブ」クラスが必要ですが、コアなどで「is-active」が使用されている可能性がありますか?

ありがとうございました!

2
aleksanderd

次のように、theme_menu_link関数をオーバーライドできます。

function theme_menu_link($variables)
{
  $element = $variables['element'];
  $sub_menu = '';

  if ($element['#below']) {
    $sub_menu = \Drupal::service('renderer')->renderRoot($element['#below']);
  }

  foreach ($element['#attributes']['class'] as &$class) {
    if ($class == 'is-active') {
      $class = 'active';
      break;
    }
  }

  $output = l($element['#title'], $element['#href'], $element['#localized_options']);

  return '<li' . new Attribute($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
1
Denis Frezzato