web-dev-qa-db-ja.com

未公開の製品のディスプレイを開こうとすると、403ではなく別のメッセージを表示する方法は?

誰かが未公開の製品の製品表示ページを開こうとすると、アクセス拒否403ページが表示されます。

メッセージを表示したい( "この製品は現在使用できません。他の製品を確認してください。")ではなく403ページを表示しています。

5
dhiraj900

エラーページとしてビューを追加できます。

エラーページとして、ページ(適切なパスを含む)と添付ファイル付きのビューを追加します。それを製品の表示でフィルタリングし、コンテキストフィルターとしてnidを渡し、必要に応じてクリエイティブにします。添付ファイルには、利用できなくなった製品の詳細を表示できます。実際のページビューには、類似品を代替品として表示できます。コンテキストフィルターに見つからないのは、製品以外の一般的な403です。

次に、ビューのパスをadmin/config/system/site-informationの403エラーページ設定に追加します。

4
J. Reynolds

モジュールのアクセス許可をより詳細にする方法 」に関する質問への私の回答を見てください。これは(のみ) Rules モジュールを使用します。これには、含まれているルールの要約が含まれます。

  • ルールイベント:Drupalは初期化中です。
  • ルール条件:匿名ユーザーであるかどうかを確認し、アクセス権のない一部のURLにアクセスしていないか確認します。
  • ルールアクション:ルール条件を満たすユーザーを「代わりに他のURL」にリダイレクトし、それに関する情報メッセージを表示します。

これらのルール条件とアクションで使用されるURLを適応させることから始め、最初のルール条件(匿名ユーザーについて)を削除します。次に、表示されるメッセージを「」に変更します。この製品は現在利用できません。他の製品を確認してください。」。それで、あなたはあなたが探しているものに近いかもしれません。

:「製品が公開されていない」ことを示すより適切なルール条件を使用して、このルール条件をさらに拡張できる場合があります(私にはわかりません) (まだ)どれか).

1
Pierre.Vriens

私があなただったら、カスタム403ページとして使用したサイトのカスタムモジュールにメニュー項目を作成します。 (これはサイト情報設定フォームで構成できます。)このメニュー項目は、要求パスを調べて、非公開の製品表示が原因でユーザーに403エラーが表示されているかどうかを判断し、製品固有を返します。それに基づいたメッセージ。それ以外の場合は、標準テキスト(またはログインへのリダイレクト)にフォールバックします。

これは、遅いモジュール、不要なクエリ/レンダリング時間などを必要とせずにリクエストを管理するための最も煩わしくない方法です。

1
Ryan Szrama