web-dev-qa-db-ja.com

Drupal8のメニューリンクでトークンを使用することはできますか?

現在のユーザー名を表示するオプションを「ユーザーアカウントメニュー」に追加する必要があります。トークンまたは他の方法を使用してこれを行うことは可能ですか?

ありがとう!

1
BSako

LoginLogoutMenuLink を拡張して、getTitle()をオーバーライドできます。

  public function getTitle() {
    return $this->currentUser->getDisplayName();
  }

そして、一般的なロール固有のロールからのキャッシュコンテキストuser

  public function getCacheContexts() {
    return ['user'];
  }

mymodule.links.menu.ymlの拡張クラスを使用します。

user.name:
  weight: 10
  menu_name: account
  class: Drupal\mymodule\Plugin\Menu\UserNameMenuLink
1
4k4

いいえ、そのままのメニューではトークンを使用できません。

ここにいくつかのオプションがあります:

  1. ビューを使用してリンクを作成します。これではメニューは表示されませんが、ビューでブロックを作成してメニューとして使用できます。残りの "メニュー"をビューブロックにハードコーディングする必要がある場合がありますが、これは理想的ではありませんが、コーディングできない場合は、現時点で最良のオプションとなる可能性があります。
  2. メニューリンクをコーディングします。 ルートのドキュメント を参照してください。
  3. Menu Token モジュールの進行状況を確認します。このモジュールはあなたがやりたいことをしますが、Drupal 8の安定版リリースはまだありません。私はD8バージョンを使用していないので、現時点でどれだけうまく機能するのかわかりません。 。
1
Patrick Kenny