Ergebnis 1 bis 11 von 11

Thema: Template-Abfrage nach Angehörigkeit einer Mitgliedergruppe

  1. #1
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard Template-Abfrage nach Angehörigkeit einer Mitgliedergruppe

    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.

  2. #2
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    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; ?>

  3. #3
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    796
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Getestet, funktioniert ;-)

    Code:
    <?php $this->import('FrontendUser', 'User'); ?>
    <?php if($this->User->isMemberOf(1)) : ?>
    <strong>Hallo</strong>
    <?php endif; ?>
    1 steht für die ID der Mitgliedergruppe

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    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?

  5. #5
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    796
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von folkfreund Beitrag anzeigen
    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?
    Ja, hast du ;-)

    Nina hat nach einer Template Anpassung gefragt.

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    fe_custom.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');

    ?>
    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}}

    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

  7. #7
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    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

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PHP-Code:
    \FrontendUser::getInstance()->isMemberOf([GroupID]) 
    Das ist die neuere Methode, die man auch überall in den Core-Dateien sieht. Wenn du noch weitere Eigenschaften des Members brauchst:
    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

  9. #9
    Contao-Nutzer
    Registriert seit
    05.04.2011.
    Beiträge
    162

    Standard

    Andreas, weißt du, wie save() unter contao 3.5.33 umgesetzt wird?
    PHP-Code:
     <?php
    $user 
    = \FrontendUser::getInstance();
    $groups $user->groups;
    $groups[] = "11";  
    $user->groups serialize($groups);  
    $user->save();
    // print_r(['gruppen'=>$user->groups]);
    ?>
    Die print_r Ausgabe ergibt:
    Array ( [gruppen] => a:2:{i:0;s:1:"8";i:1;s:2:"11";} )
    abgespeichert wird aber nicht.

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das ist eigentlich richtig. Ist das vielleicht ein Bug? Bei mir funktioniert das auch nicht.
    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(4299));

    $member->save();

    dump($member->groups); // 42, 99 
    Vielleicht weiß da jemand mehr? Ja, ich.
    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

  11. #11
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ah, ich hab's. Wir erzeugen kein MemberModel. Es muss so sein.
    PHP-Code:
    $memberObj = \FrontendUser::getInstance();
    $memberModel = \MemberModel::findByPk($memberObj->id);

    dump($memberModel->groups);

    $memberModel->groups serialize(array(4299));
    $memberModel->save();

    dump($memberModel->groups); 
    Für dich:
    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

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •