[Gelöst] Premium und Basisvariante eine Content-Types steuern?!
am 24.03.2011 - 13:10 Uhr in
Hallo!
Folgende "Herausforderung", bei der ich für Lösungsvorschläge dankbar bin, bzw. hoffen würde, daß vielleicht schon mal jemand sowas "gebaut" hat:
Ich habe zwei Inhaltstypen erstellt - sagen wir mal "Premium-Telefonbucheintrag" und "Basis-Telefonbucheintrag". Beide verfügen über viele gleiche CCK-Felder, der Premium-Eintrag enthält dazu noch einige extra CCK-Felder.
1 Basiseintrag darf jeder machen, 1 Premiumeintrag nur die Role "Premium-TelB". Das Limit 1 ist über node_limitnumber eingestellt und die Berechtigungen halt über die Rolle/Berechtigungen.
Das Problem:
Jemand kann also zunächst mal mit dem Standardeintrag starten und möchte dann zum Premiumeintrag wechseln - ich schalte ihm die Rolle Premium-TelB frei und er kann dann seinen Premium-Eintrag gestalten. Damit sollte aber automatisch der Standardeintrage "unpublished" werden... Umgekehrt natürlich genauso - verliert jemand die Rolle Premium-TelB, dann sollte sein Premium-Eintrag unpublished werden und sein (wenn vorhandener) Standardeintrag wieder published werden...
Meine ersten Versuche, das in Rules abzubilden, sind kurz gesagt komplett erfolglos. Problem ist, daß ich Rules ja "sagen" müsste, wenn User A einen Node vom Typ Premium erstellt, dann unpublishe alle Nodes vom Typ Standard für User A. Andere Richtung würde bedeuten: Rolle von Nutzer A wechselt von Premium-TelB auf Standard, dann publish Standardeintrag und unpublish Premiumeintrag dieses Nutzers...
Geht das in Rules? Muß ich nur weiter suchen/probieren? Oder ist das aussichtslos?
Ich hatte auch einen anderen Ansatz überlegt, bei dem ich aber auch nicht weiterkomme:
Es gibt nur einen Eintragstyp und abhängig von der (aktuellen!) Rolle des Autors wird dieser mit oder ohne die Premium-Felder angezeigt... Der Autor/Owner könnte dann ja ruhig immer alles ausfüllen und je nach seiner aktuellen Rolle würde im Telefonbuch sein Standard- oder Premiumeintrag angezeigt...
Bin für jeden Hinweis dankbar, wie ich das "mit drupal Bordmitteln" lösen kann!
- Anmelden oder Registrieren um Kommentare zu schreiben
Das Modul CCK beinhaltet auch
am 24.03.2011 - 14:13 Uhr
Das Modul CCK beinhaltet auch das Untermodul "Field Permissions" ... damit kann man bei den Berechtigungen festlegen, welche Rolle, welche Felder bearbeiten, ändern etc. kann. Damit sollte Dein Problem ziemlich easy zu lösen sein. Du musst nur das Modul aktivieren und natürlich entsprechende Rollen in Deiner Installation haben.
Drupal 7 Screencasts in deutsch!
Hallo Thoor, danke schon mal
am 24.03.2011 - 14:23 Uhr
Hallo Thoor,
danke schon mal für die schnelle Rückmeldung... das mit den Field Permissions kannte ich, es steuert aber leider nur den Zugriff für den aktuellen Nutzer.
Was ich brauche, ist ja die Anzeigesteuerung über den Autor des Nodes. Also kurz: Zeige vom Node nur dann die Premiumfelder an, wenn der Autor(!) und nicht der aktuell eingeloggte Nutzer/Betrachter die Rolle "Premium" hat...
Ich habe für diesen Ansatz aber auch schon weitergeforscht und bin unter anderem auf das hier gestossen: http://drupal.org/node/273346
Muß ich mal schauen, ob das wirklich hält, was es verspricht und melde das Ergebnis... scheint auf jeden Fall schlanker zu sein als mein erster Ansatz mit Rules(publish/unpublish).
Das funktioniert tatsächlich so einfach... :-)
am 24.03.2011 - 18:39 Uhr
Also - für alle, die vielleicht ähnliche Dinge lösen möchten...
Mit dem bereits genannten Tipp ( http://drupal.org/node/273346 ) lässt sich das Content Template (ich verwende sowieso schon contemplate) ganz einfach und idiotensicher umbauen.
Damit werden bei mir die Premium Felder des Telefonbucheintrages nur noch angezeigt, wenn der Eigentümer=Autor des Eintrages die Rolle Premium hat. Die Felder darf der Autor (über die normalen Berechtigungen) halt auch nur mit der Premium Rolle editieren. Damit ergibt sich folgende prima Lösung, die noch besser ist, als mein umständlicher Ansatz mit Rules und so:
Nutzer startet als Auth user und legt einen Telefonbucheintrag Standard mit allen Standardfeldern an.
Sollte (!) er Premium User werden, kann er im bestehenden node=Eintrag zusätzlich die Premium Felder füllen.
Alle Betrachter sehen diese zusätzlichen Felder des nodes, sofern der autor aktuell noch die Premium Rolle hat.
Hat der Autor die Premium Rolle nicht mehr, werden die zusätzlichen Felder nicht mehr für andere angezeigt und er kann sie auch nicht mehr editieren - der node=Eintrag fällt also wieder auf den Standard zurück...
Da die zusätzlichen Felder des nodes ja nicht gelöscht werden, kann der Autor jederzeit wieder in die Premiumrolle wechseln und hat seine Feldinhalte wieder.
So naheliegend und simpel wie das war, bin ich nicht drauf gekommen...