Zu Beginn habe ich gesehen:
- Wie verstecke ich Knoten, auf die Benutzer und Suchmaschinen nicht direkt zugreifen sollten?
- Wie kann der Zugriff auf Nur-Ansichten-Inhalte verhindert werden?
- Wie kann ich Ansichtsberechtigungen auf knotenbezogene untergeordnete Knoten beschränken?
Alle Antworten auf diese Fragen machen den Vorschlag, den Knoten unveröffentlicht zu machen, was für mich die sauberste Lösung war, da ich einige Inhaltstypen so erstellt habe, dass sie ausschließlich mit Diashows angezeigt werden, dh www.mysite.com/node/40
eine Liste aller Rohdaten anzeigen Bilder, aus denen meine Diashow in einem anderen Block besteht, wollte ich nicht. Ich möchte nur, dass die Bilder im Kontext einer Diashow angezeigt werden.
Als ich diesen Antworten folgte und den Inhalt des Knotens nicht veröffentlichte, war der Inhalt für die Diashow nicht zugänglich. Ansicht: Für anonyme Betrachter war er jetzt leer. Gibt es etwas, das ich verpasst habe, um einen Knoten unveröffentlicht zu machen, aber dennoch den Zugriff auf seinen Inhalt über Ansichten als Block zuzulassen?
Ich möchte dies tun, ohne die Optionen htaccess, hooks oder javascript zu verwenden, die ich in den obigen Links erwähnt habe.
Ich kann mir nicht vorstellen, dass eine Liste von Inhalten, auf die nackt zugegriffen werden kann, nodes/123
tatsächlich beabsichtigt ist.
Eine weitere Qualifikation, die dies zu einem heiklen Problem macht - es gibt Möglichkeiten, den Zugriff auf zu verhindern node/123
, aber sie können auch Ihre eigene Fähigkeit zum Erstellen oder Bearbeiten von Knoten beeinträchtigen!
Antworten:
Es gibt zwei Drupal-Module, die diese Funktionalität bieten:
quelle
Johan Falk von nodeone.se hat kürzlich eine hervorragende Videoserie über Page Manager (Teil von cTools, einem sehr verbreiteten Modul) erstellt und einen Anwendungsfall behandelt, wie Sie ihn sehr gut beschreiben. Link .
Grundsätzlich richten Sie eine Variante in Page Manager ein und haben als Antwort einen http-Anforderungscode (in Ihrem Fall wahrscheinlich einen 301), um zu Ihrem beabsichtigten Ziel umzuleiten. In seinem Beispiel (ich denke, es war das 2. oder 3. Video in der Serie, sie sind jedoch alle ziemlich schnell) verwendete er Knotenreferenzen und wollte nicht, dass jemand zu einem 'Unterknoten' gelangt, sondern Sie zum übergeordneten Knoten weiterleitet Knoten, wenn Sie versucht haben, darauf zuzugreifen. Ihr Anwendungsfall scheint noch einfacher zu sein. Lassen Sie einfach jeden versuchen, auf einen Ihrer Diashow-Knoten zuzugreifen, der auf eine Seite umgeleitet wird, auf der die richtige vollständige Diashow angezeigt wird.
Sie brauchen nicht einmal Panels, um all diese Magie zum Laufen zu bringen. Und Sie können Ihre Umleitungsregeln ziemlich komplex gestalten, wenn Dinge wie Knotenreferenzen installiert sind, um verwandte Knoten zu laden.
quelle
Wenn es nur um die Zugänglichkeit von Suchmaschinen geht, können Sie die Datei robot.txt verwenden, die verhindert, dass Suchmaschinen auf bestimmte Seiten Ihrer Website zugreifen.
Mit dieser Technik können Benutzer Ihrer Website dennoch auf URLs zugreifen, wie in Ihrem Beispiel www.mysite.com/node/40
quelle
EDIT: Niemals, das hat nicht funktioniert!
Ich habe festgestellt, dass alle Zugriffsregeln, die ich hinzufügen kann, damit der Administrator Inhalte erstellen und bearbeiten kann, da das Bearbeiten von Inhalten unter "/ node / add / ..." auch die anonyme Benutzerzugriffsbeschränkung aufhebt und es allen Benutzern ermöglicht, den Inhalt anzuzeigen. Irgendwie zurück, wo ich angefangen habe, aber lassen Sie dies für den Fall, dass es anderen hilft, den Weg zu erkennen. Die ursprüngliche Antwort folgt:
OK, hier ist das Rezept, um dies auf nicht programmatische Weise zu erreichen, so einfach ich konnte (Erklärung, warum folgt):
7.a. Gehen Sie im Dropdown-Feld zu "Benutzer: Rolle" und klicken Sie auf "Hinzufügen". >> NICHT (Der angemeldete Benutzer hat die Rolle "Administrator")
7.b. Fügen Sie eine weitere Auswahlregel hinzu >> Knoten: Typ. Klicken Sie auf jeden Inhaltstyp, für den ein Benutzer keine nackten Knoten sehen soll. Klicken Sie dann auf NICHT. Da ich nie möchte, dass nackte Knoten sichtbar sind, habe ich auf jeden Inhaltstyp geklickt, den ich habe.
Das Grundprinzip:
Möglichen Gefahren:
Wenn Sie einen neuen Inhaltstyp erstellen, müssen Sie daran denken, zum Seitenmanager zurückzukehren und ihn zu aktualisieren (dh das Kontrollkästchen in der zweiten Auswahlregel zu aktivieren).
Zukünftige Verbesserung:
Wenn jemand wirklich cool ist, erstellt er ein einzelnes Modul, das diesen Vorgang automatisch ausführt, und nennt es "Knoten ausblenden". =) Ich wünschte wieder, das Ausblenden von "node /" wäre das Standardverhalten von Drupal, und ich bin sicher, dass ich nicht der einzige bin. Ich betrachte diese wirklich als Inszenierungs- und Sammlungsbereich - es scheint sehr seltsam, sie für die Öffentlichkeit sichtbar zu machen. Es ist, als würde der Zauberer die Tauben in seine Ärmel schieben!
Dank Chance G, der mich dorthin zeigt, und Johan Falks Tutorial , um mich zum Laufen zu bringen!
EDIT: UPDATE
Aus dem oben Gesagten werde ich sagen, dass die Antwort auf diese Frage lautet, dass es keine Möglichkeit gibt, dies zu tun. Du steckst mit Knoten fest!
quelle
Da hier niemand eine Code-Antwort gegeben hat, ist dies eine weitere Option:
Ersetzen Sie
HOOK
durch den Namen Ihres Moduls und ersetzen Sie ihnTYPE_OF_NODE
durch den Namen des Knotentyps, den Sie ausblenden möchten.Dies wird nur umgeleitet, wenn der Pfad
node/123
oder istnode/123/view
.node/123/edit
odernode/123/whatever
ist erlaubt. Beachten Sie, dass dies der Pfad ist, nicht die URL, über die ich spreche. Der Pfadalias des Knotens spielt hier keine Rolle.quelle
Mit dem Modul Regeln können Sie eine Regel implementieren, die ungefähr so aussieht:
Jeder, der eine URL wie verwendet,
node/...
wird auf eine Seite mit Pfad umgeleitetno_access
(passen Sie diesen Pfad an Ihre Bedürfnisse an).Die obige Regel berücksichtigt (noch) nicht, die "Aktion" nur für ausgewählte Rollen (z. B. anonyme Benutzer) anzuwenden. Aber für alle, die mit dem Regelmodul ein wenig vertraut sind, ist dies eine einfache "Bedingung", die hinzugefügt werden muss ... Wenn Sie nur einen solchen Zugriff auf eine begrenzte Liste (einige) von Knoten verhindern möchten, ist keine Verwendung erforderlich die Operation "Regex" in der Bedingung "text_matches" (ersetzen Sie sie einfach durch eine genaue Übereinstimmung der relevanten Knoten).
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. Bearbeiten / verfeinern Sie dann weiter, um es an Ihre eigene Umgebung anzupassen (z. B. die anzuzeigende Meldung "Entschuldigung, ...").
Achtung : Diese Regel nimmt den "vollständigen" Teil des Fragentitels ernst ... Wenn diese Regel aktiviert ist (ohne dass eine zusätzliche Regelbedingung hinzugefügt wurde, um sie nur für ausgewählte Regeln anzuwenden), kann sogar ein Administrator (oder Benutzer / 1 ... ) kann nicht auf eine (Wiederholung: beliebige) URL wie zugreifen
node/...
. Die einzige Möglichkeit, dies zu umgehen, besteht darin, diese Regel (vorübergehend) zu deaktivieren, relevante Regelbedingungen hinzuzufügen (um ausgewählte Rollen trotzdem zuzulassen) und die Regel erneut zu aktivieren.quelle