Weiß jemand, wie man eine Template-Abfrage nach der ID einer Mitgliedergruppe gestalten müsste?
Ich möchte, je nachdem welcher Mitgliedergruppe der eingeloggte Nutzer angehört, etwas anderes anzeigen.
Weiß jemand, wie man eine Template-Abfrage nach der ID einer Mitgliedergruppe gestalten müsste?
Ich möchte, je nachdem welcher Mitgliedergruppe der eingeloggte Nutzer angehört, etwas anderes anzeigen.
Ungetestet, aber an sich so:
PHP-Code:
<?php
// Mitgliedsgruppen auslesen.
$memberGroups = \FrontendUser::getInstance()->groups ?: array();
// Überpr+fe Mitgliedsgruppe 3
if (in_array('3', $memberGroups)): ?>
User ist in Gruppe drei
<?php endif; ?>
Getestet, funktioniert ;-)
1 steht für die ID der MitgliedergruppeCode:<?php $this->import('FrontendUser', 'User'); ?> <?php if($this->User->isMemberOf(1)) : ?> <strong>Hallo</strong> <?php endif; ?>
Und wenn der User mehreren Gruppen angehört?
Man könnte doch auch einfach mehrere CEs anlegen und schützen (nur bestimmten Gruppen anzeigen).
Oder habe ich die Anforderung das falsch verstanden?
fe_custom.html5
Oder auch ohne $this->extend in ein j_xxx oder moo_xxx Template schreiben und im Layout einbinden. Oder über Head-Tags als Datei reinholen {{file::inc-different_css.html5}}PHP-Code:
<?php
if(\FrontendUser::getInstance()->isMemberOf(2)) // Piano Students
{
$GLOBALS['TL_CSS'][] = 'files/css/group-piano_students.css|static';
}
else
{
$GLOBALS['TL_CSS'][] = 'files/css/group-default.css|static';
}
$this->extend('fe_page');
?>
Edit: Ach Mist, sehe gerade, es geht dir ja gar nicht um CSS, sorry. Aber vielleicht kannst du es trotzdem gebrauchen.
Geändert von Andreas (12.10.2015 um 23:19 Uhr)
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Herzlichen Dank für eure Hilfe, mit Ainschys Code bin ich prima weitergekommen.
Ich ärgere mich nur im Nachhinein, dass ich da nicht selbst drauf gekommen bin ... den Code kenne ich vom Prinzip schon aus der dcaconfig, habe nur nicht daran gedacht, dass der auch in normalen Templates funktionieren würde
Das ist die neuere Methode, die man auch überall in den Core-Dateien sieht. Wenn du noch weitere Eigenschaften des Members brauchst:PHP-Code:
\FrontendUser::getInstance()->isMemberOf([GroupID])
PHP-Code:
$userObj = \FrontendUser::getInstance();
// Felder Beispiel
echo $userObj->firstname;
echo $userObj->lastname;
// Alle Felder ansehen
var_dump($userObj->getData());
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Andreas, weißt du, wie save() unter contao 3.5.33 umgesetzt wird?
Die print_r Ausgabe ergibt:PHP-Code:
<?php
$user = \FrontendUser::getInstance();
$groups = $user->groups;
$groups[] = "11";
$user->groups = serialize($groups);
$user->save();
// print_r(['gruppen'=>$user->groups]);
?>
abgespeichert wird aber nicht.Array ( [gruppen] => a:2:{i:0;s:1:"8";i:1;s:2:"11";} )
Das ist eigentlich richtig. Ist das vielleicht ein Bug?Bei mir funktioniert das auch nicht.
Vielleicht weiß da jemand mehr? Ja, ich.PHP-Code:
$member = \FrontendUser::getInstance();
dump($member->groups); // 1, 2 - bei jedem Aufruf, also nicht gespeichert
#$member->groups = array(42, 99);
$member->groups = serialize(array(42, 99));
$member->save();
dump($member->groups); // 42, 99
Geändert von Andreas (17.03.2018 um 01:20 Uhr)
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Ah, ich hab's. Wir erzeugen kein MemberModel. Es muss so sein.
Für dich:PHP-Code:
$memberObj = \FrontendUser::getInstance();
$memberModel = \MemberModel::findByPk($memberObj->id);
dump($memberModel->groups);
$memberModel->groups = serialize(array(42, 99));
$memberModel->save();
dump($memberModel->groups);
PHP-Code:
$user = \FrontendUser::getInstance();
$user = \MemberModel::findByPk($user->id);
dump($user->groups);
$groups = deserialize($user->groups);
$groups[] = '11';
$groups = serialize($groups);
$user->groups = $groups;
$user->save();
dump($user->groups);
Geändert von Andreas (17.03.2018 um 01:28 Uhr)
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen