Zugriffsrechte: Node gesperrt aber dessen Teaser sichtbar - wie?
Eingetragen von jehoho (19)
am 30.05.2008 - 09:25 Uhr in
am 30.05.2008 - 09:25 Uhr in
Hallo.
Ich möchte bestimmte Nodes für bestimmte Nutzergruppen vorenthalten - die Teaser zu diesen Nodes sollen aber immer vollständig verfügbar sein.
Mit welchem Modul bzw. auf welche Weise kann man so etwas realisieren?
Danke
- Anmelden oder Registrieren um Kommentare zu schreiben
Ein Modul dafür ..
am 30.05.2008 - 10:59 Uhr
.. kenne ich nicht, es ist aber nicht schwer sich dafür eine Modul zu schreiben.
Über den hook_view() abfragen ob ein Node als Teaser angefordert ist oder nicht. Wenn der Node dann nicht ausgeliefert werden soll, setze den $node -> status einfach auf 0.
Gruß
UwBach
Danke für den Hinweis - das
am 06.06.2008 - 11:59 Uhr
Danke für den Hinweis - das klingt nicht schwer.
Module zu schreiben oder zu bearbeiten wäre mir nach Einarbeitung auch möglich.
Da ich Drupal-Neuling bin dennoch die Bitte: Könntest Du etwas genauer beschreiben, an welchen Stellen / Dateien ich ansetzen muss? Mit ein paar Hinweisen in die richtige Richtung wäre das erheblich leichter.
Vielen Dank und Grüße
Ein Modul dafür...
am 06.06.2008 - 12:19 Uhr
...wäre premium. Leider scheint die Entwicklung nicht wirklich weiter zu gehen (letzter commit vom 21.08.2007), jedoch wird in den issues fleißig gepatched.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Dann brauche ich mehr ..
am 06.06.2008 - 14:44 Uhr
Angaben. Sollen alle Node-Types betroffen sein oder nur ein bestimmter, welche Rollen sollen eine volle Sicht haben oder sollen nur Gäste ausgefiltert werden. Welche Drupalversion verwendest du (erst jetzt gesehen; 5.x - wer lesen kann ist klar im Vorteil).
Danke für den Hinweis - das klingt nicht schwer.
Module zu schreiben oder zu bearbeiten wäre mir nach Einarbeitung auch möglich.
Da ich Drupal-Neuling bin dennoch die Bitte: Könntest Du etwas genauer beschreiben, an welchen Stellen / Dateien ich ansetzen muss? Mit ein paar Hinweisen in die richtige Richtung wäre das erheblich leichter.
Vielen Dank und Grüße
Dein eigenes Modul kann unter sites/module/deinModul gespeichert werden. Du brauchst ein .info- und ein .module-File.
Ich schätze aber das du das ganze auch mit Views machen könntest. Da bin ich noch nicht so fit
Gruß
UwBach
Fuer das Angefragte Problem
am 06.06.2008 - 18:30 Uhr
Fuer das Angefragte Problem sollte man auch mit geschickten Nodetemplates zum Ziel kommen.
In den Nodetemplates geht es prinzipiel immer um die Frage
if teaser
if body
Diese simple Frage muss man in Deinem Falle aber noch vom Prinzip her ausweiten:
if $teaser
if $title
if $terms
if $links
if $body
if $title
if $terms
if $links
Weil die Links von $title, $terms und $links zum Body fuehren.
In einem Nodetemplate kann man das Userobject laden und hat damit alle Infos des aktuell eine Node betrachtenden Users - incl. seiner Rollenzugeheorigkeit.
Mit Kenntnis der aktuellen Userrechte kannt man komplett auf die Ausgabe der Node Einfluss nehmen - alle Nodebestandteile wie Title, Terms, Teaser, Body und Links.
Ich verstehe das so:
Du sperrst nicht die Anzeige eines Node generell sondern reglementierst die Anzeige des Body und der Links die mit dem Teaser angezeigt werden.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Modul eingeschraenktesicht
am 06.06.2008 - 22:21 Uhr
In diesem Modul werden alle Node-Types 'story' und 'page' herausgefiltert und nur der Teaser angezeigt, es sei den ein User ist angemeldet. Das kann auch einfach auf Rollen umgesetzt werden.
Wird der Content angefordert, wird dieser durch einen Standardtext ersetzt. Die Comment-Funktion wird abgeschaltet, bei Bedarf können auch die Links abgeschaltet werden (ist aber nicht notwendig).
Der Teaser wird normal angezeigt.
Das Modul heißt 'eingeschraenktesicht' - Vorgehen:
- Ordner anlegen unter \sites\all\modules\eingeschraenktesicht
- Datei erzeugen eingeschraenktesicht.info
; $ Id: eingeschraenktesicht.info, UwBach, 2008/06/06 $
name = eingeschraenktesicht
description = Schränkt die Sichten auf Artikel und Seiten ein
package = "AA"
version = "$Name$"
project = "Uwe_Test"
- Datei erzuegen eingeschraenktesicht.module
<?php
// $ Id: eingeschraenktesicht.module, UwBach, 2008/06/06 $
/**
* @file
* Dieses Modul gibt nur beistimmte Seiten zur Vollansicht frei
*/
/**
* Erlaubt Inhalte bestimmten Seiten hinzuzufügen oder zu bearbeiten
*/
function eingeschraenktesicht_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
{
global $user;
$ersatz_text = 'Sie haben zum weiterlesen keine Berechtigung,
machen Sie drei Purzelbäume und hüpfen auf einem Bein um weiter zu lesen.';
if($op == 'alter' && !$user -> uid && ($node -> type == 'page' or $node -> type == 'story'))
{
$node -> body = t($ersatz_text);
//$node -> links = '';
$node -> comment = 0;
//$node -> readmore = 0;
}
} // eingeschraenktesicht_nodeapi()
- Das den $ersatz-text anpassen
- Modul aktivieren
Du solltest evtl. dann noch mal einen Node_Type anlegen der für alle ganz sichtbar ist, sonst hast du kein Impressum, AGB usw.
Gruß
UwBach
@UwBach, genau das was Du in
am 06.06.2008 - 22:33 Uhr
@UwBach,
genau das was Du in dem Modul beschreibst habe ich per Nodetemplate vorgeschlagen.
PS
Ich glaube
unset($node->links);
ist besser als$node->links = '';
. Mit$node->links
wird auch $terms gefuellt.-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Sichten auf Teaser einschränken ..
am 07.06.2008 - 08:27 Uhr
.. ist jetzt noch etwas verfeinert. Die Beschränkung der Teasersicht kann jetzt per Node-Typ und Rolle einfach in der Zugriffskontrolle gesetzt werden. Das vollständige Modul kann unter "Sichten auf Teaser einschränken" herunter geladen werden.
Gruß
UwBach
warum so komliziert?
am 07.06.2008 - 15:45 Uhr
Moin! Ich finde es zwar gut und schön, wie schnell man doch ein Modul zusammenbasteln kann, jedoch verstehe ich manchmal nicht, warum immer wieder Module erstellt werden, die genau die Funktionialität bereits existenter Module besitzen (und Neulinge damit eher noch tiefer in den Moduldschungel geschickt werden).
Wie schon gestern geschrieben, premium bietet genau die gewünschte Funktionalität (sogar noch mehr).
Stefan
PS: @UWBach; nichts gegen Deine Entwicklung, jedoch fände ich es persönlich hilfreicher für die gesamte Community, wenn statt einer Neuentwicklung aktiv am bestehenden Modul mit-entwickelt werden würde (und nein, ich hab bisher mit dem Modul nichts zu tun ;-) )
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
@stBorchert, Recht hast Du
am 07.06.2008 - 15:55 Uhr
@stBorchert,
Recht hast Du mit dem Modul entwickeln.
Mein Vorschlag ging ja auch in Richtung Loesung mit Bordmitteln. Wobei natuerlich Premium den Punkt trifft.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
quiptime schrieb Mein
am 07.06.2008 - 16:04 Uhr
Mein Vorschlag ging ja auch in Richtung Loesung mit Bordmitteln.
Das versuche ich eigentlich auch immer zuerst. Bis mir dann wieder einfällt, dass ich irgendwann mal ein Modul gesehen habe, was das eigentlich auch könnte :-)
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Genau. Premium kenne ich
am 07.06.2008 - 16:17 Uhr
Genau.
Premium kenne ich schon seit Langem. Aber beim Lesen dieses Thread ist es mir nicht in den Sinn gekommen. Naja und in solchen Faellen kann das Forum helfen - wer hat schon Allzeit alle Module im Kopf. Ich nicht.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
stBorchert schrieb Moin!
am 07.06.2008 - 16:44 Uhr
Moin! Ich finde es zwar gut und schön, wie schnell man doch ein Modul zusammenbasteln kann
Ups - basteln ist nicht grade nett. Ich hatte mal angeregt den Neulingen die Arbeit mit Drupal zu erleichtern indem man bessere Tut's anbietet. Dafür wurde ich ausgeschimpft und mache es jetzt halt selber. Auch wenn ich noch am Anfang stehe, basteln ist das nicht.
PS: @UWBach; nichts gegen Deine Entwicklung, jedoch fände ich es persönlich hilfreicher für die gesamte Community, wenn statt einer Neuentwicklung aktiv am bestehenden Modul mit-entwickelt werden würde (und nein, ich hab bisher mit dem Modul nichts zu tun ;-) )
Ich glaube nicht das man dort einen "Neuling" willkommen heißen würde.
Ich werde mich aber ab sofort zurückhalten und im stillen Kämmerlein weiter machen. Die Hilfe überlasse ich erst einmal den "alten Hasen" die auch die ganz alten Module noch kennen.
UwBach
Finde ich nicht so gut.
am 07.06.2008 - 16:54 Uhr
Ich werde mich aber ab sofort zurückhalten und im stillen Kämmerlein weiter machen.
Finde ich nicht so gut.
@UwBach, lege "basteln" nicht auf die Goldwaage.
Letztendlich zeigt der Verlauf des Thread doch nur das es verschiedene Moeglichkeiten gibt ein Problem zu loesen - wie so oft bei Drupal. Und da kann Jeder nach seinen Faehigkeiten oder Beduerfnissen oder was auch immer handeln und zu seinem ganz eigenen Ziel, sprich eigener Loesung, kommen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
öhm, moment...
am 08.06.2008 - 10:11 Uhr
Ups - basteln ist nicht grade nett. Ich hatte mal angeregt den Neulingen die Arbeit mit Drupal zu erleichtern indem man bessere Tut's anbietet. Dafür wurde ich ausgeschimpft und mache es jetzt halt selber. Auch wenn ich noch am Anfang stehe, basteln ist das nicht.
Öhm, sorry. Aber so war das jetzt definitiv nicht gemeint. Entschuldige, wenn das negativ rübergekommen ist. Mit basteln meine ich schon "entwickeln". Nur halt im laxen Sinne gesprochen.
Ich glaube nicht das man dort einen "Neuling" willkommen heißen würde.
Warum nicht? Ich war auch mal neu und hab patches hochgeladen. Da habe ich dann (hauptsächlich von Derek [dww]) Tipps und Anmerkungen bekommen, wie ich bessere Patches "zusammenbastele" und im Endeffekt hatten beide Seiten etwas davon. Die Module enthielten weniger Fehler und evtl. auch mehr Funktionen und ich habe mich auch verbessert (glaube ich zumindest).
Ich werde mich aber ab sofort zurückhalten und im stillen Kämmerlein weiter machen. Die Hilfe überlasse ich erst einmal den "alten Hasen" die auch die ganz alten Module noch kennen.
Mach das bitte nicht. Gerade neue Ideen und Leute bringen drupal und die Module weiter. Ohne neu keine Weiterentwicklung!
Und das ich dann zu bestimmten Problemen entsprechende Module kenne, finde ich persönlich manchmal ziemlich merkwürdig :-}
Allerdings mache ich mir auch öfter mal den Spass und gehe die komplette Modulliste auf drupal.org durch. Wenn mich ein Modul interessiert, lese ich auch noch mehr als den Teaser und teste es vielleicht auch noch. So lernt man halt eine Menge kennen.
Also, jetzt nochmal in kurz: es tut mir leid, wenn ich bei Dir den Eindruck hinterlassen habe, dass Dein Modul "nur so zusammengefrickelt" wurde. Ich muss gestehen, dass ich mir es nichtmal angeschaut habe. Mein Beitrag war nur so gemeint, dass man nicht immer gleich neu schreiben, sondern auch mal vorhandene Lösungen nutzen sollte. Und wenn bei der Lösung (sprich Modul) Fehler enthalten sind, darf man das gerne jederzeit auf drupal.org anmerken und auch Patches schreiben. Auch - oder gerade - als "Neuling"!
Puh, genug geschrieben...
schöne Grüsse,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Template
am 09.06.2008 - 16:18 Uhr
Hallo.
Die Variante von quiptime erscheint mir am geeignetsten.
Da -wie sich inzwischen herausstellt- auch unterschiedliche Inhaltstypen vorhanden sind, deren Anzeige jeweils unterschiedlich behandelt werden will -und zwar a) in Bezug auf die Rolle des Users und b) in Bezug auf vorhandene fields- ist es für mich das beste, auf ein Modul zu verzichten und die Regelungen im Template zu definieren.
Überdies ist es bei der Gelegenheit auch möglich, Terms je nach Vokabular zu Gruppieren.
Danke für Eure Hilfe und Tipps.
@jehoho, ist ja fast so als
am 09.06.2008 - 16:43 Uhr
@jehoho,
ist ja fast so als hätte ich bei meinem ersten Lösungsvorschlag mit der Templatevariante geahnt was bei Dir so erforderlich sein könnte.
Übrigens, die Template-Variante erfordert sicher die meiste Arbeit bietet aber am Ende die größte Variabilität und Skalierbarkeit.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.