web-dev-qa-db-ja.com

この[user:roles:join-path] / [user:name]から「authenticated-user」を削除する方法

私には次の役割があります。

  • 匿名ユーザー、
  • 認証済みユーザー、
  • 管理者、
  • メンバー、
  • パートナー。

URLエイリアスで、USER PATHSで次のように変更しました:[user:roles:join-path]/[user:name]

ユーザー用に2つのビューを作成しました。1つはメンバーロール用、2つ目はパートナーロール用です(ビューにはuserpictureとusernameが含まれています)。両方の役割のこれらのユーザーのリンクは次のとおりです。

  • www.example.com/authenticated-user/members/username
  • www.example.com/authenticated-user/partner/username

認証済みユーザーの役割が認証済みユーザーのデフォルトであることを知っていますが、USER PATHから削除できます:„ www.example.com/authenticated-user/members/username”から„ www.example.com/members/username” ?

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

pathauto_create_alias() から呼び出される hook_pathauto_alias_alter() を実装できます。この関数は、トークンが$context['pattern']で置き換えられる前に、Pathautoモジュールから使用されるパターンを渡します。パターンが"[user:roles:join-path]"を明示的に使用している場合、"authenticated-user"が削除されないように、パターンに"authenticated-user"が含まれていることを確認する必要があります。

代替案は次のとおりです。

  • hook_tokens_alter() を実装してそのトークンの出力を変更しますが、Pathautoモジュールから作成されたエイリアスだけでなく、トークンが使用される任意の場所で変更されます

  • hook_tokens() および hook_token_info() を実装して、[user:roles]と同様のトークンを実装しますが、認証されたユーザーロールの文字列は含まれません

pathauto_tokens() のトークンの:join-path部分を処理するのはPathautoモジュールであることに注意してください。

1
kiamlaluno

Pathautoで単一のロールを指定できない場合は、pathautoと同じことを行う小さなモジュールを作成し、お気に入りのロールのみを追加する必要があると思います。

PathautoにはいくつかのAPIとフックもあります。そこで検索してみてください。

0
arrubiu