Wie kann der direkte Zugriff auf URLs von Knoten eingeschränkt werden, die in einer mit Ansichten erstellten Videogalerie angezeigt werden?


10

Ich habe eine Videogalerie mit Ansichten erstellt . Ich möchte aber nur, dass die Seite öffentlich zugänglich ist und der Zugriff auf jedes der Videos einzeln verhindert wird.

Die Videos mussten als eine Art von Inhalt erstellt werden, damit alle über zugängliche ULRs wie /content/video-1usw. verfügen .

Antworten:


5

Probieren Sie das Inhaltszugriffsmodul aus und verhindern Sie den Zugriff auf videoInhalte einzeln (oder Sie können den Zugriff auf das gewünschte Modul festlegen roles).

Mit diesem Modul können Sie Berechtigungen für Inhaltstypen nach Rolle und Autor verwalten. Hier können Sie benutzerdefinierte Ansichts-, Bearbeitungs- und Löschberechtigungen für jeden Inhaltstyp festlegen. Optional können Sie die Einstellungen für den Inhaltszugriff aktivieren, sodass Sie den Zugriff für jeden Inhaltsknoten anpassen können.

Sie können auch das Modul " Knotenansichtsberechtigungen" verwenden , ich empfehle jedoch die Verwendung Content access module.

(Wenn Sie für die Zukunft mit Drupal arbeiten möchten, sollten Sie sich besser mit diesen nützlichen Modulen beschäftigen.)


Fast das, was ich brauchte. Schließlich habe ich den Zugriff über eine niedrige Ebene gesteuert, da ich in einigen Fällen zur Startseite umleiten wollte, in anderen Fällen zu 404 usw., sodass ich eine bessere Kontrolle hatte, aber ich denke, dass dieses Modul in den meisten Fällen funktionieren könnte. Vielleicht mit einer besseren Anpassung in meinem Fall, hatte aber keine Zeit zu untersuchen.
Cesar

3

Installieren Sie das Modul " Knotenansichtsberechtigungen" .

Das Berechtigungsmodul für die Knotenansicht aktiviert die Berechtigungen "Eigenen Inhalt anzeigen" und "Beliebigen Inhalt anzeigen" für jeden Inhaltstyp auf der Berechtigungsseite wie in Drupal 6.

Gehen Sie nun zur Berechtigungsseite und entfernen Sie Alle Inhaltsberechtigungen aus dem Videoinhaltstyp für anonyme Benutzer anzeigen .

Wenn Sie möchten, dass nur einige der Videos aus der Videogalerie für den anonymen Benutzer zugänglich sind, installieren Sie das Deny Access- Modul.


1

Aktualisieren Sie einfach Ihren Inhaltstyp.

  1. Fügen Sie ein numerisches Feld wie display_order usw. hinzu.

  2. Legen Sie den Wert dieses Felds nur für die Videos fest, die Sie anzeigen möchten.

  3. Gehen Sie zu Ihren Ansichtseinstellungen und legen Sie fest;

    Pager verwenden: Zeigt eine bestimmte Anzahl von Elementen an x Gegenstände

    Dabei ist x die Anzahl der Videos, die Sie anzeigen möchten

  4. Wenden Sie dann die Sortierung nach Anzeigereihenfolge an

Hoffe es wird funktionieren.


1

Ich denke, das Rabbit Hole- Modul macht genau das, wonach Sie suchen. Hier ist ein Auszug aus der Beschreibungsseite des Moduls, der Ihren Anforderungen entspricht. Viel Glück.

Rabbit Hole ist ein Modul, mit dem Sie steuern können, was passieren soll, wenn eine Entität auf einer eigenen Seite angezeigt wird.

Möglicherweise haben Sie einen Inhaltstyp, der niemals auf einer eigenen Seite angezeigt werden sollte, z. B. einen Bildinhaltstyp, der in einem Karussell angezeigt wird. Rabbit Hole kann verhindern, dass auf diesen Knoten über node / xxx auf einer eigenen Seite zugegriffen werden kann.


1

Entscheide dich für ein Kaninchenbau- Modul, es macht genau das gleiche. Auf den gesamten Inhalt kann über Ansichten / Code zugegriffen werden. Wenn Sie jedoch versuchen, auf die Detailseite "content / ***" zuzugreifen, wird entweder der Zugriff verweigert oder Sie können eine Umleitung festlegen.


Ich werde es mitnehmen, danke. Im Moment habe ich es auf niedrigem Niveau gelöst, aber es ist am besten zu wissen, dass bereits benutzerdefinierte Module erstellt wurden.
Cesar

0

1) Erstellen Sie ein boolesches Wertefeld in Ihrem Inhaltstyp.

2) Wenn der Wert als wahr ausgewählt ist, sollte diesem Videofeld eine eindeutige Klasse hinzugefügt werden. Wenn der Wert als falsch ausgewählt wird, sollte die Klasse nicht zu diesem Videofeld hinzugefügt werden.

3) Schreiben Sie CSS , um die Videos auszublenden, in denen die Klasse nicht vorhanden ist.


0

Mit dem Modul Regeln können Sie eine Regel implementieren, die ungefähr so ​​aussieht:

{ "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" } }
    ]
  }
}

Jeder, der versucht, auf den relativen Pfad zuzugreifen, content/video-1wird auf eine Seite mit Pfad umgeleitet no_access, und eine zugehörige Fehlermeldung wird angezeigt (passen Sie diesen Pfad an Ihre eigenen Konventionen an und überprüfen Sie die anzuzeigende Nachricht).

Die obige Regel beschränkt nur den Zugriff auf den relativen Pfad content/video-1(wie in Ihrer Frage). Wenn Sie die Regel auf ähnliche URLs erweitern möchten, ändern Sie sie content\/video-1in eine ähnliche content\/video-\\d+$oder eine andere Variation, die der Namenskonvention Ihrer Pfade entspricht.

Die obige Regel berücksichtigt (noch) nicht, dass die Regelaktion nur für Benutzer mit ausgewählten Rollen angewendet wird. Für alle, die mit dem Regelmodul vertraut sind, ist dies eine einfache "Bedingung", die hinzugefügt werden muss. Beispiel: Überspringen Sie die Regelaktion für Benutzer mit einer Rolle wie Editor, Administrator usw. Sie können dies tun, indem Sie Regeln hinzufügen Bedingung wie "Benutzer hat KEINEN Rollenadministrator (und / oder Editor)". Auf diese Weise können solche speziellen Benutzer solche Knoten trotzdem anzeigen (ohne eine solche zusätzliche Bedingung können sie solche Knoten auch nicht mehr anzeigen ...).

Um mit dieser Regel auf Ihrer eigenen Site zu experimentieren, kopieren Sie einfach den gesamten obigen Regelcode und fügen Sie ihn in eine neue Regel auf Ihrer eigenen Site ein, die über die Funktion "Importieren" erstellt wurde (verfügbar, wenn die Benutzeroberfläche für Regeln aktiviert ist). Bearbeiten / verfeinern Sie es dann weiter, damit es in Ihre eigene Umgebung passt (z. B. die anzuzeigende Meldung "Entschuldigung, ...").

Zusätzliche Verfeinerung

In einer der anderen Antworten haben Sie einen Kommentar hinzugefügt, der Folgendes enthält:

... Ich wollte in einigen Fällen auf die Startseite umleiten, in anderen auf 404 usw., damit ich eine bessere Kontrolle hatte ...

Wenn Sie dies auch tun möchten, können Sie die obige Regelaktion weiter verfeinern, indem Sie auch das Modul Bedingte Regeln hinzufügen . Damit können Sie für jeden Ihrer "einige Fälle" die entsprechende URL angeben, zu der umgeleitet werden soll. In meiner Antwort auf " So legen Sie die Werte einiger Felder abhängig vom Wert eines Listenfelds fest? " Finden Sie eine Illustration zur Verwendung dieses Moduls in einer Regelaktion.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.