Inhalte nur für bestimmte Mitglieder online und URL behalten.

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • valentin
    Contao-Nutzer
    • 13.07.2009
    • 135

    #1

    Inhalte nur für bestimmte Mitglieder online und URL behalten.

    Ich bin gerade auf ein kniffliges Problem gestoßen:

    Auf einer Seite mit Produkten (die über eine Liste generiert werden) sind manche Produkte nur für Mitglieder der Gruppe 2 sichtbar. In der Katalog-Liste (wird als Menü verwendet) werden diese Produkte für Gäste über die Bedingungen gefiltert.

    Der Katalog-Leser, egal für welches Produkt, befindet sich immer auf der selben Seite.

    Ein Gast sieht folgende Liste:
    Produkt 1
    Produkt 3
    Produkt 4


    Ein Mitglied der Gruppe 2 sieht:
    Produkt 1
    Geheimes Produkt 2
    Produkt 3
    Produkt 4

    Die URLS für beide Produkte lauten immer: www.meineseite.com/item/produkt-x.html

    Wenn nun das angemeldete Mitglied, die URL des geheimen Produktes an einen Gast weiterleitet, kann dieser das Produkt sehen, da es ja nur in der Katalog-Liste ausgeblendet wird.
    Ich weiß, dass man für die Mitglieder eine eigene geschützte Seite erstellen könnte auf die man von einer geschützen Katalog-Liste (mit allen Einträgen) weitergeleitet werden kann.
    Was mir aber nicht gefällt ist, dass dann die URL des angemeldeten Users https://www.meineseite.com/logged-in...produkt-x.html heißt.
    Wenn nun der User angemeldet ist und die URL eines "öffentlichen" Produktes weiterleiten will, dann bekommt der Gast beim klicken der URL eine Fehlermeldung.

    Okay, ich hoffe, dass Problem ist verständlich.

    Ich hab´s inzwischen auf diese Arten probiert:

    1.) Zuerst habe ich es mit den geschützten Seiten probiert, was mir aber wegen der URL Sache nicht gefiel.

    2.) Wie schon in diesem Thread beschrieben habe ich ein Template gebaut, dass alle Felder nur ausgibt, wenn das Mitglied angemeldet ist.
    Das war ziemlich blöd von mir, weil ja das angemeldete Mitglied das gleiche Template verwendet wie ein Gast. Nun hat halt der Gast keine Inhalte mehr gesehen.

    -------

    Irgendwie komme ich auf keine Lösung. Hat jemand einen Vorschlag?
  • Flex
    Contao-Urgestein
    • 03.06.2010
    • 2149

    #2
    Mach ein einfaches Checkbox Feld am Produkt, wo du festhältst dass das Produkt "geheim" ist.

    Im Template prüfst du ob das Feld gesetzt ist und ob der User eingeloggt ist... Falls ja, zeigst du das Produkt an, falls nein, schickst du den Benutzer per Redirect auf eine andere Seite.

    Kommentar

    • valentin
      Contao-Nutzer
      • 13.07.2009
      • 135

      #3
      Zitat von Flex Beitrag anzeigen
      Mach ein einfaches Checkbox Feld am Produkt, wo du festhältst dass das Produkt "geheim" ist.

      Im Template prüfst du ob das Feld gesetzt ist und ob der User eingeloggt ist... Falls ja, zeigst du das Produkt an, falls nein, schickst du den Benutzer per Redirect auf eine andere Seite.
      Hallo Flex, danke für die Antwort.

      Aber genau das ist ja auch der Hund begraben. Ich verwende das Template ja auch für die öffentlichen Einträge. Wenn also nun ein Gast auf ein Produkt will, dass zwar öffentlich ist, aber er selbst nicht angemeldet, dann wird er ja auch hier weitergeleitet...

      Ich weiß, das wäre einfach zu lösen, wenn ich zwei verschiedene Seiten verwenden würde, aber mir ist es eben wichtig, dass die URL gleich bleibt...

      Nach deiner Methode habe ich auch schon überlegt zwei Module mit verschiedenen Templates anzulegen. Ein Modul zeigt alles an, eines nicht. Eines ist öffentlich, eines geschützt. Aber auch in dem Fall, könnte dann der Gast die URL www.meineseite.com/item/produkt-geheim.html aufrufen und anschauen.

      Kommentar

      • Flex
        Contao-Urgestein
        • 03.06.2010
        • 2149

        #4
        Aber das deckt doch alle Fälle ab?

        Fall A:
        Geheimes Produkt, Benutzer ist eingeloggt => Produkt anzeigen

        Fall B:
        Geheimes Produkt, Benutzer ist nicht eingeloggt => Weiterleiten

        Fall C:
        Produkt, Benutzer ist eingeloggt => Anzeigen

        Fall D:
        Produkt, Benutzer ist nicht eingeloggt => Anzeigen

        Gibt es noch mehr Fälle die mir entgangen sind? Ich meine nein...

        Du musst das ganze halt im Template abfragen, das geht nicht direkt über die Bordmittel in Contao.

        Kommentar

        • valentin
          Contao-Nutzer
          • 13.07.2009
          • 135

          #5
          Stimmt, das könnte so gehen.
          Und es schaut in der Theorie ja ganz einfach aus! ;-)
          Mal sehen ob es mir gelingt!

          Danke!

          Kommentar

          • valentin
            Contao-Nutzer
            • 13.07.2009
            • 135

            #6
            Okay, meine PHP Kenntnisse reichen eindeutig nicht aus.

            Ich habe es mal folgendermaßen probiert:


            PHP-Code:
            <?php if($entry['data']['archive']['raw']):?><?php $this->import('FrontendUser','User');if (in_array(2, $this->User->groups)): ?><?php echo 'hallo'; ?><?php endif; ?><?php endif; ?>
            Archive ist die checkbox.
            Aber ich komme da zu keine Ausgabe...

            Kommentar

            Lädt...