Wie kann ich den Inhalt von Knoten / vollständig ausblenden und trotzdem die Verwendung in Drupal beibehalten?

7

Zu Beginn habe ich gesehen:

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/40eine 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/123tatsä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!

Mittenchops
quelle
Hallo Mittenchops. IMHO, ich schlage vor, Ihre Links erneut zu überprüfen. Die Veröffentlichung ist nicht die einzige Antwort. Es sind Hooks, Ansichten und andere Möglichkeiten aufgeführt.
Cigotete
Danke, moon.watcher, ich verstehe, aber ich denke, die Unterscheidung zwischen einem privaten Haltebereich und einem öffentlichen Ausstellungsbereich scheint sehr nützlich (und einfach) zu sein. Ich verstehe, dass es andere Wege gibt, aber Mann, ich wünschte, ich könnte diesen Weg zur Arbeit finden!
Mittenchops
Haben Sie versucht, htaccess zu verwenden?
Ram4nd
Ja, und ich verstehe, dass dies das richtige Verhalten bewirken würde - dennoch scheint es einen systeminternen Weg zu geben, dies zu tun, oder? Irgendwelche Standard- oder Kontrollkästchen irgendwo? Lassen Sie mich meine Frage ändern, um diesen Teil zu klären. Vielen Dank!
Mittenchops
1
Die akzeptierte Antwort auf drupal.stackexchange.com/questions/5622/… erfordert nicht , dass Inhalte unveröffentlicht werden.
mpdonadio

Antworten:

5

Es gibt zwei Drupal-Module, die diese Funktionalität bieten:

alexanderpas
quelle
Danke dafür! Ich wollte ein benutzerdefiniertes Modul vorschlagen, um genau dies zu tun, aber natürlich gibt es ein Modul dafür. Das eigentliche Problem dieser Frage ist: Wie geht man mit Inhalten um, die nur in einem Mashup zu sehen sind, niemals alleine, und genau damit beschäftigen sich diese beiden Module. Wenn Sie solche Inhalte haben, ist es aus diesem und anderen Gründen am besten, sie nicht zu einem Knoten, sondern zu einer Nicht-Knoten-Entität zu machen (z. B. möchten Sie wahrscheinlich nicht, dass alle diese Knoten-Hooks darauf ausgelöst werden).
Alan Dixon
Upvoted für die Empfehlung von Rabbit Hole. Versuchte es und macht den Job leicht. Interne Knoten nicht ausprobiert, daher nicht vergleichbar.
Consuela
2

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.

Chance G.
quelle
Danke, Chance G! Ich schaue mir jetzt die Tutorials an, und vielleicht kümmert sich das darum.
Mittenchops
In der Tat ausgezeichnete Videoserien (wenn auch nicht mehr "vor kurzem"). Und zu Ihrer Information : nodeone.se- Links funktionieren nicht mehr. Möchten Sie Ihren Link aktualisieren?
Pierre.Vriens
1

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

SilidAdmin
quelle
Vielen Dank! Das macht Sinn, aber gibt es auch eine Möglichkeit, es für Nicht-Menschen und Menschen gleichermaßen absolut unzugänglich zu machen? Ich nehme an, es gibt einen einfachen .htaccess-Code dafür, aber das scheint auch übertrieben. Vielleicht irre ich mich, aber es scheint nur die Art von Unterscheidung zu sein, die einfach und offensichtlich sein sollte. Damit meine ich: Ich kann mir nicht vorstellen, dass jemand absichtlich eine Liste von schlecht formatiertem Müll unter einem Knotenmenü haben möchte, wissen Sie?
Mittenchops
Ja, dann speichere ich Ihre Frage für später, da ich mich frage, wie ich das auch erreichen kann. Ich habe noch keine Zeit, dies zu untersuchen, aber wenn ich bald eine Antwort bekomme, werde ich sie hier veröffentlichen. Obwohl moon.watcher vorgeschlagen hat, den Fragentitel zu bearbeiten, ist dies etwas verwirrend.
SeideAdmin
OK, cool, ich habe den Titel angepasst, um den Fokus "vollständig" anstelle des Fokus "Suchmaschine" zu verdeutlichen. Vielen Dank!
Mittenchops
0

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):

  1. Aktivieren Sie das Page Manager-Modul (Teil von ctools), installieren und aktivieren Sie das Page Manager Redirect-Modul: http://drupal.org/project/page_manager_redirect .
  2. Gehen Sie im Admin-Menü zu Struktur >> Seiten
  3. Identifizieren Sie in der folgenden Tabelle die benutzerdefinierte Seite "Systemknotenansicht Knotenvorlage / Knoten /% Knoten" und klicken Sie rechts auf "Bearbeiten".
  4. Für mich hatte ich standardmäßig "Basic Page" und "Storyauthors". Ich drücke bei beiden auf Deaktivieren (aber Sie möchten sie möglicherweise beibehalten, wenn Sie diese Funktionen verwenden - ich nicht).
  5. Klicken Sie auf "Variante hinzufügen".
  6. Titel: "Weiterleiten an main." Variantentyp: "HTTP-Antwortcode". Und überprüfen Sie "Auswahlregeln". Klicken Sie auf "Variante erstellen".
  7. Fügen Sie nun Auswahlregeln hinzu.
    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.
  8. Setzen Sie den HTTP-Antwortcode auf 301 und lassen Sie die Umleitung leer (= to main).

Das Grundprinzip:

  • Ich bin diesen Weg gegangen, anstatt Zugriff zu haben oder Module zu erstellen, da dies ein Problem zu sein scheint, das innerhalb der Schnittstelle zugänglich sein sollte. Auch hier glaube ich nicht, dass es eine Gruppe geben würde, die verlangt, dass alle Inhalte unter Knoten / sichtbar sind, nummeriert, wenn dies nicht das Standardverhalten wäre.
  • Zu den Auswahlregeln: Die erste für den Administrator (oder eine Gruppe auf Editorebene) stellt sicher, dass Sie weiterhin Inhalte erstellen und bearbeiten können! Wenn Sie dies weglassen und versuchen, neuen Inhalt hinzuzufügen, werden Sie zu main weitergeleitet. Die zweite, die sich mit Inhaltstypen befasste, war erforderlich, um das Anzeigen von Seiten unter ihrem URL-Alias ​​zu ermöglichen. Wenn diese Option aktiviert war und ich auf "Blog-Beiträge" klickte, konnte ich sie nicht auf der ganzen Seite anzeigen, sondern nur ihre Teaser. Ich bin mir nicht sicher, warum dies der Fall war oder warum ich hier eher negative als positive Berechtigungen ausführen musste. Aber das musste ich ändern, damit Redakteure bearbeiten konnten und anonyme Betrachter formatierte Inhaltstypen und nicht Node / anzeigen konnten.

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!

Mittenchops
quelle
Wenn ich etwas genauer hinschaue, scheint es das Problem zu sein, dass ich möchte, dass "Basisseite" immer sichtbar ist, damit beispielsweise einzelne Blog-Beiträge sichtbar sind, aber leider ist es auch eine Basisseite, Node / 123 alleine zu sehen . Vielleicht weist dies jedoch den Weg zu einer anderen Lösung? Wie kann ich Node / 123 dazu bringen, nicht als Basisseite zu zählen, sondern Blog / My-Blog-Post zu zählen?
Mittenchops
Hey, würde es Ihnen etwas ausmachen, stattdessen eine andere Antwort zu akzeptieren?
Leymannx
0

Da hier niemand eine Code-Antwort gegeben hat, ist dies eine weitere Option:

/**
 * Implements hook_init().
 */
function HOOK_init() {
  $object = menu_get_object();
  $action = arg(2);
  if(isset($object->type) && $object->type == 'TYPE_OF_NODE' && (empty($action) || $action == 'view')) {
    drupal_goto();
  }
}

Ersetzen Sie HOOKdurch den Namen Ihres Moduls und ersetzen Sie ihn TYPE_OF_NODEdurch den Namen des Knotentyps, den Sie ausblenden möchten.

Dies wird nur umgeleitet, wenn der Pfad node/123oder ist node/123/view. node/123/editoder node/123/whateverist erlaubt. Beachten Sie, dass dies der Pfad ist, nicht die URL, über die ich spreche. Der Pfadalias des Knotens spielt hier keine Rolle.

Felix Eve
quelle
0

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

{ "rules_check_url" : {
    "LABEL" : "Disallow node/* access",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "text_matches" : {
          "text" : [ "site:current-page:url" ],
          "match" : "node\/\\d+$",
          "operation" : "regex"
        }
      }
    ],
    "DO" : [
      { "drupal_message" : {
          "message" : "Sorry, URLs like [site:current-page:url] are not allowed around here ...",
          "type" : "error"
        }
      },
      { "redirect" : { "url" : "no_access" } }
    ]
  }
}

Jeder, der eine URL wie verwendet, node/...wird auf eine Seite mit Pfad umgeleitet no_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.

Pierre.Vriens
quelle