Links in Beiträgen abhängig von Benutzerdaten gestalten (conditional links, Rollen-abhängige Links)
am 02.05.2016 - 14:32 Uhr in
Hallo
Ich habe Stunden recherchiert, aber komme auf keinen grünen Zweig und hoffe daher auf Eure Hilfe:
Ziel: In den Benutzerprofilen gibt es ein zusätzliches Feld "Autoclubnr." Auf verschiedenen Basisseiten sind Links zu weiterführenden Seiten (z.B. Formularen oder Produkten) enthalten. Hat jemand im Feld Autoclubnr. eine Mitgliedsnr. eingetragen, sollen ihm jeweils andere Links angezeigt werden als jemandem, der kein Mitglied ist.
Idealerweise sollten die Links als Weiche erscheinen. Bei webform kennt man dies als conditionals, also wenn dies dann das. Nur finde ich keinen Weg, Links quasi als conditional links zu verwenden.
Bisherige Ideen:
- doppelte Seiten für Mitglieder/Nichtmitglieder und getrennte Menüführung -> sehr aufwändig und mit der Gefahr, dass bei Inhaltsänderungen diese nicht überall stattfinden
- Verknüpfung von User-Rollen mit der Mitgliedsnr. -> löst das Problem mit dem variablen Link innerhalb einer Seite nicht
- Modul Rules_Link -> blicke ich überhaupt nicht durch, ob und wie es damit zu lösen wäre
- Anmelden oder Registrieren um Kommentare zu schreiben
conditional fields ist die
am 02.05.2016 - 15:58 Uhr
conditional fields ist die lösung, denke ich
C.A.W. Webdesign
Das könntest du mit Rollen lösen
am 02.05.2016 - 15:58 Uhr
wer Mitglied ist, hat eine andere Rolle.
Diese kann beim Ausfüllen des Profils sogar per rules automatisch vergeben werden.
Und über die Rolle lassen sich Berechtigungen steuern.
Grüße
Ronald
Rollen / Rules
am 03.05.2016 - 15:07 Uhr
Vielen Dank für Eure raschen Antworten.
Mit Rules habe ich es schon versucht, bin aber auf halber Strecke gescheitert. Mit meiner ersten Regel versuchte ich, die Benutzergruppe "versichert" allen Usern zuzuordnen, welche im Profil die beiden Felder "versicherung" und "versichertennr." ausgefüllt haben. Das klappte problemlos.
Mit der zweiten Regel versuchte ich, den Usern, welche eines der zwei Felder nicht ausgefüllt haben, die Benutzergruppe "versichert" zu entfernen und gleichzeitig die Benutzergruppe "nichtversichert" zuzuordnen, das klappte aus mir unerfindlichen Gründen nicht. Es wurde stets die Benutzergruppe "versichert" beibehalten und auch nicht die Benutzergruppe "nichtversichert" zugefügt.
Hier die Details des Regeleditors:
1. Regel (die funktioniert):
Regelname: Versichert
Events:
- Nach der Aktualisierung eines bestehenden Benutzerkontos
- Nach nach dem Speichern eines neuen Benutzerkontos
Bedingungen:
- NOT Datenwert ist leer Parameter: Data to check: [account:field-versicherung]
- UND
- NOT Datenwert ist leer Parameter: Data to check: [account:field-versichertennr]
Aktionen:
- Benutzerrolle hinzufügen Parameter: Benutzer: [account], Rollen: versichert
- Benutzerrolle entfernen Parameter: Benutzer: [account], Rollen: nichtversichert
2. Regel (die nicht funktionierte)
Regelname: Nichtversichert
Events:
- Nach der Aktualisierung eines bestehenden Benutzerkontos
- Nach nach dem Speichern eines neuen Benutzerkontos
Bedingungen:
- Datenwert ist leer Parameter: Data to check: [account:field-versicherung]
- ODER
- Datenwert ist leer Parameter: Data to check: [account:field-versichertennr]
Aktionen:
- Benutzerrolle entfernen Parameter: Benutzer: [account], Rollen: versichert
- Benutzerrolle hinzufügen Parameter: Benutzer: [account], Rollen: nichtversichert
oder hier die exportierten Regel-Codes der 2. Regel:
{ "rules_nichtversichert" : {
"LABEL" : "nicht Versichert",
"PLUGIN" : "reaction rule",
"WEIGHT" : "1",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "user_update" : [], "user_insert" : [] },
"IF" : [
{ "data_is_empty" : { "data" : [ "account:field-versicherung" ] } },
{ "OR" : [] },
{ "data_is_empty" : { "data" : [ "account:field-versichertennr" ] } }
],
"DO" : [
{ "user_add_role" : { "account" : [ "account" ], "roles" : { "value" : { "11" : "11" } } } },
{ "user_remove_role" : { "account" : [ "account" ], "roles" : { "value" : { "10" : "10" } } } }
]
}
}
Wenn ich die 2. Regel mit "UND" statt "ODER" verknüpfe oder weder noch dazu nehme, dann funktioniert die Regel, wenn beide Felder leer sind. Das löst aber das Problem nicht, denn die Rolle "nichtversichert" soll auch dann zugewiesen werden, wenn nur eines der zwei Felder ausgefüllt wurde.