Herausforderung: Webseite mit 2 Startseiten

  • Joomla Version
    5.2.0
    PHP Version
    PHP 8.3.x
    Hoster
    Lokal

    Ich stehe vor einer ziemlichen Herausforderung. Mein Kunde möchte, dass seine Webseite zwei Startseiten hat. Es handelt sich um einen Verband mit vielen Mitgliedern. Diese Mitglieder besuchen die Webseite regelmässig, um sich über allerlei Neuigkeiten zu informieren. Es sollen aber auch Nicht-Mitglieder angesprochen werden, welche das erste mal auf diese Webseite gelangen.

    Startseite 1

    Grafisch aufwändig gestaltet, mit einem seitenfüllenden Video und diversen Bildern. Die Seite soll standardmässig, also neuen Besuchern angezeigt werden. Sie soll das Interesse für den Verband wecken und idealerweise zu einem Verbandsbeitritt führen. Eine etwas längere Ladezeit wird inkauf genommen.

    Startseite 2

    Für Verbandsmitglieder braucht es das Brimborium von Startseite 1 nicht. Hier stehen die konkreten Informationen, nicht die Mitgliederwerbung im Vordergrund. Die Mitglieder empfinden das Video und die vielen Bilder als störend, weil sie nicht schnell genug an die interessierenden Informationen gelangen. Also: grafisch immer noch schön gestaltet, aber ohne Video und mit wenigen, sachbezogenen Bildern.

    Idee

    Auf Startseite 1 könnte eine Abfrage platziert werden, wo Besucher ein Häkchen [x] Nicht wieder anzeigen setzen können. Diese Einstellung würde in einem Cookie gespeichert und hätte zur Folge, dass bei allen zukünftigen Besuchen direkt Startseite 2 angezeigt wird. Oder mindestens so lange, bis das Cookie gelöscht wird.

    Ich habe jetzt gerade keinen Plan, wie so etwas umgesetzt werden könnte. Vielen Dank schon mal!

  • Hier war mal was:

    FlyingMarkus
    12. November 2021 um 09:33
  • Sollen es zwei verschiedene Domains sein ?

    example1.de

    example-gast.de

    gast.example.de

    oder einfach nur jeweils verschiende Seiten ?

    example.de

    example.de/gast

    example.de/mitglieder

    Sicherlich kann man mit der Erlaubnis des Websitebesuchers auch ein Cookie setzten und beim erneuten besuch auf eine andere Site weiterleiten...

  • Du könntest auf der Startseite 1 einfach oben einen Button mit "Intro überspringen" setzen, oder ähnlich. Nach dem Klick gelangt man dann zu einem neuen Menüpunkt, z.B. "Aktuelles". Eine Startseite 2 benötigt man dann nicht wirklich.

  • Sollen es zwei verschiedene Domains sein ?

    example1.de
    example-gast.de
    gast.example.de

    oder einfach nur jeweils verschiende Seiten ?

    example.de
    example.de/gast
    example.de/mitglieder

    Zwei verschiedene Seiten:

    examp.de → Standardseite
    example.de/mitglieder → für Mitglieder, welche die Standardseite nicht mehr sehen wollen

    Zitat

    Sicherlich kann man mit der Erlaubnis des Websitebesuchers auch ein Cookie setzten und beim erneuten besuch auf eine andere Site weiterleiten...

    Die Frage ist jetzt eben: wie macht man sowas???

  • Hier war mal was: ... «Gäste» und «Eingeloggt»

    Ja an eine solche Lösung habe ich auch schon gedacht. Aber unschön daran ist, dass man sich ja nach einer gewissen Zeit wieder erneut einloggen muss. Das ist dann noch umständlicher als einen Button [Intro überspringen] anzuklicken.

  • Du könntest auf der Startseite 1 einfach oben einen Button mit "Intro überspringen" setzen, oder ähnlich. Nach dem Klick gelangt man dann zu einem neuen Menüpunkt, z.B. "Aktuelles". Eine Startseite 2 benötigt man dann nicht wirklich.

    Das wäre wohl die einfachste Lösung. Aber geht es auch automatisch mit einem Cookie?

  • Ob das Cookie "Mitglied" vorhanden ist beim Websitebesucher kannst du wohl ermitteln per:

    Code
    document.cookie.match('(^|;)\\s*' + 'Mitglied' + '\\s*=\\s*([^;]+)');

    :)Weiterleiten z.B. per:

    Code
    location.href="https://forum.joomla.de"

    JavaScript/DOM/Document/cookie – SELFHTML-Wiki

    und der Javascript-Code könnte man in der index.php des Templates in folgenden PHP-Code einfügen:

    PHP
    <?php  if ($input->server->get('REQUEST_URI','','PATH') == '/index.php' or 
               $input->server->get('REQUEST_URI','','PATH') == '/') :   ?>
      
     Der Javascript-Code
     
       <?php endif; ?>

    Damit er nur ausgeführt wird wenn die Startseite aufgerufen wird...

  • Das ganze sollte man natürlich nur z.B. in einem Child-Template machen weil sonnst kann die Ergänzung bzw. Änderung nach einem Update des Templates verloren gehen.

    Und wenn die Ergänzung bzw. Änderung am Joomla-Core-Template gemacht wurde, wird diese auch bei einem Joomla-Update verloren gehen, wenn nicht ein Child-Template entsprechend verwendet wird.

    Natürlich müßte dann auch der entsprechende Child-Template-Stil(Menüzugehörigkeit) für die Startseite bzw. "Homepage" verwendet werden, damit die "index.php" vom Child-Template auch benutzt wird.

  • Es gibt ja den Switch zwischen White und Dark Mode, den man häufig im Menü oder z.B. im Footer sieht. Ich würde genau so einen Switch bauen mit "Startseite an / off". -> Da wird ja auch ein Cookie gesetzt. Die Logik wäre also die Gleiche.

    1. Besuch -> Default Startseite

    2. Besuch -> Default Startseite, wenn Switch auf "Startseite an"

    2. Besucht -> Extra Startseite, wenn Switch auf "Startseite off" -> per Weiterleitung

    Ich denke das wäre eine sehr benutzerfreundliche und verständliche Möglichkeit, welche man auch selbstständig nach belieben, ähnlich wie den White/Dark-Mode umstellen könnte, dauerhaft. Auch ist es nicht an irgendeine Mitgliedschaft gebunden.


    Könnte man auch als Modul oder Template-Override machen: Musst mal schauen ob der Code so in etwa funktioniert. Mit ChatGPT 4o erstellt und mit ChatGPT o1 überprüft und verbessert worden:

    Anpassungen, die du vornehmen solltest

    • URLs anpassen:
      • Ersetze "/" durch die tatsächliche URL deiner Standard-Startseite.
      • Ersetze "/alternative-startseite" durch die tatsächliche URL deiner alternativen Startseite.
    • Label-Texte anpassen:
      • Passe die Texte "Standard-Startseite" und "Alternative Startseite" nach Bedarf an, um sie für deine Nutzer verständlich zu machen.

    HTML:


    Javascript:

  • Es gibt ja den Switch zwischen White und Dark Mode, den man häufig im Menü oder z.B. im Footer sieht. Ich würde genau so einen Switch bauen mit "Startseite an / off". -> Da wird ja auch ein Cookie gesetzt. Die Logik wäre also die Gleiche.

    Herzlichen Dank für den hervorragenden Lösungsansatz! Genau so hatte ich mir das vorgestellt. Ich habe das auf einer Test-Webseite implementiert und kann sagen: wir sind auf dem richtigen Weg.

    Was funktioniert:

    • Auf der Standard-Startseite (home, mit Video) erscheint ganz unten links ein Toggle-Button [Standard-Startseite].
    • Schaltet man um auf [Alternative Startseite] wird man wie gewünscht zur Seite home-2 (ohne Video) weitergeleitet.
    • Schaltet man wieder um auf [Standard Startseite] wird man wie gewünscht zur Seite home weitergeleitet.

    Was nicht funktioniert:

    • Bei einem weiteren Besuch der Startseite (home) wird man nicht automatisch zur alternativen Seite (home-2) weitergeleitet, obwohl der Button immer nach aktiviert ist.

    Für das Debugging bin ich nun heillos überfordert. Wahrscheinlich habe ich irgendwo eine Kleinigkeit übersehen. Vielleicht hast Du Zeit, einen prüfenden Blick auf den Quellcode meiner oben erwähnten Test-Webseite zu werfen? Das wäre super!

  • Um von obiger Zeile 8 currentPath zu bekommen kannst du ja in der Konsole z.B. folgendes ausführen wenn du auf der Startseite bist:

    alert(window.location.pathname);

    daher wohl:

    standardStartseite = "/de/"; // URL der Standard
    alternativeStartseite = "/de/home-2"; // URL der alternativen Startseite