Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst] Inhalte/Felder nicht ausgeben die unter einer bestimmten Rolle erstellt wurde? (Membership-Webseite)

Eingetragen von MoSaG (34)
am 29.07.2016 - 17:10 Uhr in
  • Module
  • Drupal 7.x

Hallo zusammen,

ich erstelle gerade für einen Kunden eine Branchenbuch-Webseite mit verschiedenen Mitgliedschaften (Basis, Pro, Premium), dazu habe ich die drupal-eigenen Felder des Users erweitert und drei verschiedene Rollen eingerichtet. Was das Mitglied eingeben kann, wird durch die drei Rollen vorgegeben, wobei die Pro-Mitgliedschaft, die Basis-Mitgliedschaft beinhaltet und die Premium-Mitgliedschaft sowohl die Basis-, als auch die Pro-Mitgliedschaft. Also je nachdem welche Rollen man aktiviert, stehem dem Kunden mehr oder weniger Felder zum Ausfüllen zur Verfügung.

Jetzt kann ein User der den Status Pro oder Premium hat mehr Daten in seinen Account eintragen (z.B. Bilder), als ein Basis-Mitglied. Wenn der User aber wieder zurückfällt auf die Basis-Mitgliedschaft (indem ich das Häkchen bei Premium und/oder Pro bei den Rollen entferne), bleibt sein Inhalt trotzdem gespeichert und wird auch bei der Anzeige seines Accounts anderen Mitgliedern, bzw. Gästen ausgegeben/angezeigt.

Besteht mit irgendeinem Modul oder mit Drupal-Bordmitteln, die Möglichkeit diese, unter einer bestimmten Rolle erstellten Inhalte, vor Gästen und anderen zu verstecken, solange der Kunde nicht den richtigen Status hat?
Wenn es nicht anders geht, würde ich die Inhalte auch löschen lassen, aber besser wäre es, wenn sie nur nicht ausgegeben würden, damit der Kunde später nicht alles neu eintragen muss, wenn er wieder einen höheren Status bucht.

Folgende Module verwende ich bis jetzt: siehe Anhang.

Vielen Dank vorab!

AnhangGröße
module.jpg36.8 KB
‹ PlUpload file Widget in Drupal8 [gelöst] Inhalte/Felder nicht ausgeben die unter einer bestimmten Rolle erstellt wurde? (Membership-Webseite) ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Such mal in Drupal.org mit dem Begriff member

Eingetragen von maria-rita (501)
am 30.07.2016 - 10:13 Uhr

dann findest Du jede Menge Module. Da ist bestimmt was passendes dabei. Ich denke Du brauchst dafür auf jeden Fall auch noch rules, evtl. auch flag. Organic Group vielleicht auch. Aber ich habe damit noch nicht gearbeitet.

Viele Grüße

Marita Betz

Barrierefreies Webdesign
Marita Betz
http://www.barrierefreies-webdesign-mb.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

field_permissions löst das

Eingetragen von marco.b (643)
am 30.07.2016 - 15:29 Uhr

field_permissions löst das Problem.

– Grüße aus Franken –

"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)

www.bienlein-kommunikation.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bessere User-Experience wahrscheinlich nicht ohne Code

Eingetragen von C_Logemann (823)
am 30.07.2016 - 22:27 Uhr

Wenn ich den Thread Opener richtig verstehe geht es primär nicht darum, das Einträgen von Inhalten zu beschränken, sondern die Anzeige von Inhalten in Abhängigkeit der Rolle des Autoren, die sich ändern kann.
Wenn man dies mit Field_Permissions angehen möchte muss man allerdings mit Löschen von Inhalten agieren, bei einer Rollen-Änderung z.B. per Rules. Das ist vlltr. eine nicht so schöne Experience für die Kunden, die damit tatsächlich Inhalte verlieren und bei einem "Upgrade" Ihrer Rolle diese wieder ins System einpflegen müssten, nur weil sie vllt. nicht rechtzeitig Ihr Abo verlängert haben.
Edit: So hat es der Thread Opener auch schon als besser für die User Experience angedacht.
Aus diesem Grund würde ich das Problem bei der Anzeige der Profile lösen. Da fällt mir zwar ad hoc kein bestehendes Modul für ein, aber so schwierig ist das nicht zu programmieren. Ich hätte da auch schon ein paar Ideen auf der Basis von Search API und der Steuerung des Indexierungs-Vorgangs. An der Oberfläche könnte man dann per Views die Anzeigen steuern.

# DrupalCenter-Moderator # Mitglied im Drupal e.V. # https://www.drupal.org/u/c_logemann
# CTO der Nodegard GmbH: CMS Security & Availability Management

  • Anmelden oder Registrieren um Kommentare zu schreiben

Oh, danke Carsten.

Eingetragen von marco.b (643)
am 01.08.2016 - 19:27 Uhr

Das stimmt, das hatte ich anders verstanden und das eigentliche Problem überlesen.

mit field_permissions kann ich für jedes Feld folgende permissions vergeben:

  • Create own value for field XY
  • Edit own value for field XY
  • Edit anyone's value for field XY
  • View own value for field XY
  • View anyone's value for field XY

Damit wird also die Möglichkeit der Eingabe und des Zugriffs auf das Feld geregelt, aber das Problem der Darstellung nach Ablauf des Abozeitraums nicht.

Damit die Inhalte nicht gelöscht werden müssen, nur um nicht mehr öffentlich dargestellt zu werden, würde ich die user view mit einer Panels page überschreiben und da die Felder als einzelne panel panes einsetzen mit individuellen Sichtbarkeitsbedingungen (hier z.b. 'user hat Rolle').

– Grüße aus Franken –

"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)

www.bienlein-kommunikation.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Situation ist ein wenig kompliziert

Eingetragen von ronald (3832)
am 02.08.2016 - 05:35 Uhr

während du natürlich die Rechte des angemeldeten Users steuern kannst, weil dieser als $user immer geladen wird, geht es hier ja um den Autor und seine Rolle.

Das heißt aber, dass der User, unabhängig von seiner Rolle, einen Inhalt nicht lesen darf, weil der Autor eine bestimmte Rolle nicht (mehr) hat.

Das wirst du wahrscheinlich nur mit einem eigenen Filter regeln können, der allerdings alle betroffenen Seiten extrem bremsen wird, weil für jeden content der Autor mit seinen Rechten geladen, und dann entschieden werden muss, ob das eine oder andere Feld angezeigt werden soll, oder nicht.

Grüße
Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

mit panels geht das doch.

Eingetragen von marco.b (643)
am 02.08.2016 - 11:12 Uhr

Mit panels kann man die Beziehung zu den Rollen des dargestellten users (oder auch des Autors eines nodes) herstellen und die wie oben kurz beschrieben als Sichtbarkeitsbedingung für jede einzelne panels pane (Feld oder was auch immer) innerhalb der panels page (node variante) nutzen.

Das ist nach meinem Wissen auch cachebar und wäre aus meiner Sicht sogar 'best practice' in Drupal.

– Grüße aus Franken –

"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)

www.bienlein-kommunikation.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für die bisherige

Eingetragen von MoSaG (34)
am 02.08.2016 - 12:07 Uhr

Danke für die bisherige Beteiligung!

Ich würde nur seeeeeeehr ungerne mit Panels arbeiten! Wenn es IRGENDWIE anders geht, dann lieber anders ;)

Z.Z. versuche ich das ganze mit "Profile 2" und Views zu lösen.
Die Idee dahinter: eine Liste (view) in der die Branchenbuchdaten in Kurzform dargestellt werden, mit einem Link zur Detailseite, z.B. so: webseite.de/branchenbuch/50/werkzeuge-mueller - dann in der URL die ID (z.B. 50) als Argument (Contextual Filter heißt es jetzt ja) auslesen und dann nacheinander (wahrscheinlich über attachment - noch nicht probiert) die drei Versionen der Profile abfragen (Basis, Pro, Premium) und ich meine unter Views kann man den Author mit seiner Rolle filtern - nur noch rausfinden wie ;)

Ich hänge aber leider noch an dem "Argument auslesen" fest, er erkennt zwar die ID = 50 in der URL, zeigt mir auch anderen Inhalt an, als wenn ich eine nicht vergebene ID verwende, aber er zeigt mir nicht den Inhalt an, der unter der ID 50 gespeichert ist, sondern den der ID = 1 (also des Admins), irgendwie muss ich das noch verknüpft kriegen mit der UID des Autors ... ich habe mal Screenshots angehängt, vielleicht hat ja jemand eine Idee?! ;)

AnhangGröße
view.jpg 36.29 KB
context-filter.jpg 62.14 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Beziehung setzen von Node zum

Eingetragen von wla (9018)
am 02.08.2016 - 15:57 Uhr

Beziehung setzen von Node zum Autor und dann den Filter über diese Beziehung definieren. Dann kannst Du an die Rolle des Node-Autors kommen.

.
Werner
drupal-in-duesseldorf.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *

  • Anmelden oder Registrieren um Kommentare zu schreiben

@marco. b: ich habe es jetzt

Eingetragen von MoSaG (34)
am 05.08.2016 - 15:00 Uhr

@marco. b: ich habe es jetzt doch mit Panels umgesetzt, das funktioniert endlich wie es soll.

Leider hänge ich jetzt trotzdem wieder in Views fest, denn ich möchte vor der Detailansicht (die jetzt dank Panels läuft), noch eine Listenansicht erstellen, wo z.B. die Premium-User nach oben in die Liste sollen und bei den Pro- und Premium-Usern noch ein Vorschaubild angezeigt werden soll.

Aber ich schaffe es einfach nicht in Views die Rolle des Benutzer dessen Profil gerade abgefragt wird auszulesen, es lässt sich immer nur die Rolle des gerade angemeldeten Benutzers auslesen und die brauche ich nicht, da ALLE Benutzer die Profile sehen dürfen, nur soll halt immer noch nicht Inhalt dargestellt werden, der unter einer Pro- oder Premium-Rolle eingestellt wurde.

Kann man nicht evtl. von der detaillierten Panelsseite eine reduzierte Form erstellen (Variante) und diese dann als "Template" in Views einladen für die Liste?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Freut mich, dass du es hingekriegt hast.

Eingetragen von marco.b (643)
am 09.08.2016 - 14:41 Uhr
Zitat:

Leider hänge ich jetzt trotzdem wieder in Views fest, denn ich möchte vor der Detailansicht (die jetzt dank Panels läuft), noch eine Listenansicht erstellen, wo z.B. die Premium-User nach oben in die Liste sollen und bei den Pro- und Premium-Usern noch ein Vorschaubild angezeigt werden soll.

Entweder je eine extra Views pane für Pro- und Premium-User oder views_conditional (Modul) nutzen

Zitat:

Aber ich schaffe es einfach nicht in Views die Rolle des Benutzer dessen Profil gerade abgefragt wird auszulesen, es lässt sich immer nur die Rolle des gerade angemeldeten Benutzers auslesen und die brauche ich nicht, da ALLE Benutzer die Profile sehen dürfen, nur soll halt immer noch nicht Inhalt dargestellt werden, der unter einer Pro- oder Premium-Rolle eingestellt wurde.

Das geht auf jeden Fall - Was hast du denn für eine Basistabelle in deiner View? Profil2-Profile, oder?
Dann wie wla oben schreibt:

Zitat:

Beziehung setzen von Node (oder eben Profil2) zum Autor (User des Profils) und dann den Filter über diese Beziehung definieren. Dann kannst Du an die Rolle des Node-Autors kommen.

Unter Filer nach Rolle des Users filtern, der über o.g. Beziehung hergeholt wurde.

– Grüße aus Franken –

"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)

www.bienlein-kommunikation.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe Profile2 wieder

Eingetragen von MoSaG (34)
am 09.08.2016 - 17:58 Uhr

Ich habe Profile2 wieder runtergeschmissen und es mit dem eingebauten Profil aufgesetzt.

Für die Darstellung der Detailseite habe ich jetzt Panels genommen, dort kann man auf "user being viewed" schalten und somit die Rollen des Autors abfragen und dementsprechend die Inhalte darstellen oder auch nicht. Sie bleiben jedenfalls erhalten, wenn der Autor die Rolle verliert, aber sie werden - wie gewüncht - nicht mehr ausgegeben (wobei ich mittlerweile, zumindest theoretisch auch weiß, wie es über Views geht*, aber Panels lässt sich dann doch etwas netter stylen ;)).

Für die Listendarstellung nehme ich Views und ich weiß nicht wieso es anfangs nicht geklappt hat, aber ich muss einfach nur unter den Filtern die Rollen abfragen ... manchmal sieht man ja den Wald vor lauter Bäumen nicht ... allerdings bin ich auch nicht mit der Liste angefangen, sondern mit der Detailseite, wo ich auch noch mit Argumentübergabe arbeiten musste, das hat die Sache sicherlich erschwert. (* jetzt wo ich weiß wie es in der Liste funktioniert, könnte ich eine weitere Seite anlegen und das mit den Argumenten noch mal probieren, aber wie schon geschrieben, das Stylen ist dann doch schöner in Panels).

Das views_conditional Modul hatte ich auch irgendwann gefunden, das half mir dann sehr beim Trennen der Inhalte. Selbst per Anhang/Attach die Premium-Einträge nach oben zu verschieben hat geklappt *freu*

Also ich habe jetzt eine Listendarstellung in der alles angezeigt wird wie es soll und eine Detailseite wo ebenfalls nur das ausgegeben wird, was erlaubt ist. Der Rest (das Stylen und passende Felder anlegen) ist jetzt nur noch Fleißarbeit (hoffe ich ;)).

Allen vielen Dank fürs "Hinschubsen" in die richtige Richtung! Hab den Beitrag als gelöst markiert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Sichtbarkeit von Seiten über Rollen steuern
  • Theme suggestion wird nicht verwendet
  • [gelöst]Pflichtfeld vom User deaktivieren lassen
  • Konto löschen, wie? (Drupalorg/Drupalcenter)
  • Layout-Builder hängt
  • Drupal 8/9 SEO-Beratung/Coaching
  • Verschachtelte UND / ODER Abfrage mit hook_views_query_alter
  • Kartenansicht, Position des Users und Nodes anzeigen
  • Hilfe zu Views und Filter?
  • Views für 2 Kategorien
  • [gelöst]Probleme nach löschen eines Menüpunktes im Adminmenü
  • [gelöst]Zufallsausgabe von Inhalt
Weiter

Neue Kommentare

  • Nimm content access, aber Du
    vor 2 Stunden 14 Minuten
  • Verlege diese Funktion in ein
    vor 2 Stunden 32 Minuten
  • Nodeaccess geht ja gerade
    vor 3 Stunden 45 Minuten
  • sollte mit domainaccess gehen
    vor 5 Stunden 31 Minuten
  • Danke das ist die Lösung
    vor 1 Tag 12 Minuten
  • Ah, das sind wertvolle Hinweise
    vor 1 Tag 3 Stunden
  • Schau Dir mal folgenden
    vor 1 Tag 3 Stunden
  • Du kannst die Eigenschaften
    vor 1 Tag 3 Stunden
  • Bitte meinen Account auch löschen
    vor 1 Tag 3 Stunden
  • Danke, den hook kannte ich natürlich
    vor 1 Tag 5 Stunden

Statistik

Beiträge im Forum: 246103
Registrierte User: 18884

Neue User:

  • Stine_64
  • uniquename
  • xapizm

» Alle User anzeigen

User nach Punkten sortiert:
wla9018
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3917
ronald3832
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 6 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association