web-dev-qa-db-ja.com

特定のコンテンツタイプの[アクセス拒否](403)ページをカスタマイズする

私は現在、Drupal 8で簡単なLMSを設定しており、Access Deniedページを次のようにカスタマイズしたいと考えています。

  • 匿名ユーザーは、403エラーが発生したときに、Loginページにリダイレクトされます。
  • ログインしたユーザーにアクセスしようとしています特定のコンテンツタイプ(コース)へのアクセスが許可されていないは、カスタムメッセージにリダイレクトする必要があります(コースなどを購入するように伝えます)。それらがそのノードのティーザーを示すことができればさらに良いでしょうが、それは必要ではありません。
  • それ以外の場合はすべて、一般的なAccess Deniedページを表示します。

Fwiw、D6 herehere にも同様の質問がありましたが、これも良い回答を受け取りませんでした。

誰かがたまたま良い解決策を知っていますか(D8の場合)?どんな助けでも大歓迎です。

1
Marcus C.

ルールモジュールを使用してそれを行うことができます。

Rulesモジュールを使用して、イベントとしてAfter visiting node no_accessのようなルールを作成します。したがって、ルール構成全体は次のようになります。

イベント:ノードno_accessにアクセスした後

条件:ユーザーに役割があります-パラメーター:ユーザー:[site:current-user]、役割:匿名ユーザーNOTテキスト比較-パラメーター:テキスト:[site:current-page:url]、一致するテキスト:ユーザー/ログイン

アクション:ページリダイレクト-パラメータ:URL:ユーザー/ログイン

次に、ログインしているユーザーに対して、ユーザーがログインしているかどうかを確認し、ユーザーがno_accessページにアクセスした場合にカスタムページにリダイレクトする別のルールを作成できます。

一般的なアクセス拒否ページの場合、Admin > Configuration > System > Site informationのエラーページの下にURLを設定できます。

それが役に立てば幸い

1
Jdrupal