web-dev-qa-db-ja.com

ビューで作成されたビデオギャラリーに表示されるノードのURLへの直接アクセスを制限するにはどうすればよいですか?

Viewsを使用してビデオギャラリーを作成しました。しかし、私はページが一般にアクセス可能であり、個別に各ビデオへのアクセスを禁止することを望んでいます。

動画は一種のコンテンツとして作成する必要があったため、すべての動画に/content/video-1など.

10
Cesar

コンテンツアクセスモジュール を試して、videoコンテンツへのアクセスを個別に禁止します(または、必要に応じてアクセスを設定することもできますroles

このモジュールを使用すると、ロールおよび作成者ごとにコンテンツタイプの権限を管理できます。これにより、各コンテンツタイプのカスタム表示、編集、および削除権限を指定できます。オプションで、コンテンツごとのアクセス設定を有効にして、コンテンツノードごとにアクセスをカスタマイズできます。

Node View Permissions モジュールも使用できますが、Content access moduleを使用することをお勧めします。

(drupalで作業したい場合は、この便利なモジュールに参加することをお勧めします)

5
Yusef

インストール ノードビュー権限 モジュール。

ノードビューのアクセス許可モジュールは、アクセス許可ページの各コンテンツタイプのアクセス許可「独自のコンテンツの表示」と「コンテンツの表示」を有効にしますDrupal 6。

View content topermission from video content type fromAnonymous user

ビデオギャラリーの一部のビデオのみを匿名ユーザーがアクセスできるようにする場合は、 Deny Access モジュールをインストールします。

3
Nikhil Banait

Rabbit Hole モジュールは、まさにあなたが探していることを実行すると思います。ここにあなたのニーズに答えるモジュールの説明ページからの抜粋があります。幸運を。

ウサギの穴は、エンティティが独自のページで表示されているときに何が起こるかを制御する機能を追加するモジュールです。

カルーセルに表示される画像コンテンツタイプのように、独自のページに表示されるべきではないコンテンツタイプがある可能性があります。 Rabbit Holeは、node/xxxを通じて、このノードが独自のページでアクセスできないようにすることができます。

1
Mario Awad

コンテンツタイプを更新するだけです。

  1. display_orderなどの数値フィールドを追加します。

  2. このフィールドの値は、表示したい動画にのみ設定してください。

  3. ビュー設定に移動して設定します。

    ポケットベルを使用:指定した数のアイテムを表示する| xアイテム

    ここで、xは表示する動画の数です

  4. 次にdisplay-orderによるソートを適用します

それがうまくいくことを願っています。

1
Iqbal

rabbit hole モジュールを探します。まったく同じです。すべてのコンテンツはビュー/コードを介してアクセスできますが、詳細ページ "content/***"にアクセスしようとすると、アクセスが拒否されるか、リダイレクトを設定できます。

1
nikunj

1)ブール値フィールドをコンテンツタイプに作成します。

2)値がtrueとして選択された場合、一意のクラスがそのビデオフィールドに追加されます。値がfalseとして選択された場合、クラスはそのビデオフィールドに追加されません。

3)[〜#〜] css [〜#〜]と記述して、クラスが存在しないビデオを非表示にします。

0
user52318

Rules モジュールを使用すると、次のようなルールを実装できます。

{ "rules_disallow_accesss_to_selected_urls" : {
    "LABEL" : "Disallow access to selected URLs",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "text_matches" : {
          "text" : [ "site:current-page:url" ],
          "match" : "content\/video-1",
          "operation" : "regex"
        }
      }
    ],
    "DO" : [
      { "drupal_message" : {
          "message" : "Sorry, access to URLs like [site:current-page:url] is not allowed ...",
          "type" : "error"
        }
      },
      { "redirect" : { "url" : "no_access" } }
    ]
  }
}

相対パスcontent/video-1にアクセスしようとすると、パスno_accessのページにリダイレクトされ、関連するエラーメッセージが表示されます(このパスを独自の規則に合わせて変更し、表示されるメッセージを確認してください)。

上記のルールは、(質問のように)相対パスcontent/video-1へのアクセスのみを制限します。ルールを同様のURLに拡張する場合は、content\/video-1content\/video-\\d+$などのパス、またはパスの命名規則に適合するバリエーションに変更します。

上記のルールは、(まだ)選択されたロールを持つユーザーにのみルールアクションを適用することを考慮していません。ただし、Rulesモジュールに少し慣れている人にとっては、これは簡単に追加できる「条件」です。例:編集者、管理者などの役割を持つユーザーのルールアクションをスキップします。これは、ルールを追加することで実行できます。 「ユーザーに管理者(または編集者)の役割がない」などの条件。そうすれば、そうした種類の特別なユーザーは、とにかくそのようなノードを表示できます(そのような特別な条件がないと、そのようなノードはもう表示できません...)。

独自のサイトでこのルールを試すには、上記のルールコード全体をコピーして、「インポート」機能で作成した独自のサイトの新しいルールに貼り付けます(ルールUIが有効になっている場合に使用可能)。次に、さらに編集/調整して、自分の環境に合わせます(たとえば、「Sorry、...」メッセージが表示されます)。

追加の改良

他の回答の1つに、これを含むコメントを追加しました。

...場合によってはホームページに、他の場合は404にリダイレクトしたかったので、より適切に制御した...

それもあなたがやりたいことなら、 Conditional Rules モジュールも追加することで、上記のルールアクションをさらに絞り込むことができます。これで、「いくつかのケース」ごとに、リダイレクト先の適切なURLを指定できます。ルールアクション内でこのモジュールを使用する方法の図については、「 リストボックスの値に応じて一部のフィールドの値を設定する方法 」に対する私の回答を参照してください。

0
Pierre.Vriens