Ergebnis 1 bis 4 von 4

Thema: Besuchte Seiten in Liste/Navigation markieren

  1. #1
    Contao-Fan Avatar von izanagi
    Registriert seit
    19.01.2011.
    Ort
    Köln
    Beiträge
    595

    Standard Besuchte Seiten in Liste/Navigation markieren

    Ist jetzt kein echtes Tutorial, aber ich möchte es den Neulingen nicht vorenthalten, was ich hier gerade gebastelt habe.

    Was nun folgt kann natürlich auch anderwertig umgesetzt werden für Artikel, News etc.
    Was aber nicht heisst einfach überall reinkopieren. Mein Beispiel bezieht sich NUR auf die FAQ Liste.
    Ich brauchte es für eine FAQ um den Kunden zu zeigen welche Frage/Antwort er bereits durchgelesen hat.
    Für Checks oder Pflichtleseartikel wie AGBs ist es bestimmt auch Interessant.

    Der besuchte Link bekommt von mir die Klasse "visited" und kann dann individuell per CSS gestaltet werden (bei mir gibts ein Punkt mit grünen Häkchen)
    Hinweis: nicht Updatesicher, dafür bin ich dann doch nicht schlau genug ^^

    (Nach einem Backup) öffnen wir die ModuleFaqReader.php .
    In der Funktion compile() unter der Zeile "// Overwrite the page title and description"
    folgende zwei Zeilen hinzufügen:

    PHP-Code:
            $this->Template->faqid $objFaq->id;// zusätzlich ID übergeben
            
    $this->Template->faqpid $objFaq->pid;// zusätzlich pID übergeben 
    In der mod_faqlist.* Templatedatei oder welche ihr auch immer benutzt,
    folgende Zeilen am Anfang (Zeile 1) hinzufügen:

    PHP-Code:
    <?php session_start();
    if (
    $_SESSION['faq']) {
    $faqchecker $_SESSION['faq'];
    // bereits vorhanden
    } else {
    // wird erstellt
    $faqchecker = array();
    }
    ?>
    Zwischen <!-- indexer::stop --> und <!-- indexer::continue -->
    alles mit diesem Code ersetzen:

    PHP-Code:
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>

    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>
    <?php 
    foreach($this->faq as $category): ?>

    <h2><?php echo $category['headline']; ?></h2>
    <ul class="<?php echo $category['class']; ?>">
    <?php foreach ($category['items'] as $faq): ?>
    <?php 
    $search 
    $faq[pid].$faq[id];
    if (
    array_search($search$faqchecker)!== FALSE) {
    $checked 2;
    } else {
    $checked 1;
    }
    if (
    $checked == 1) { ?>
         <li class="<?php echo $faq['class']; ?>"><a href="<?php echo $faq['href']; ?>" title="<?php echo $faq['title']; ?>"><?php echo $faq['question']; ?></a></li>
    <?php } else { ?>
         <li class="<?php echo $faq['class']; ?> visited"><a href="<?php echo $faq['href']; ?>" title="<?php echo $faq['title']; ?>"><?php echo $faq['question']; ?></a></li>
    <?php ?>
     
      <?php endforeach; ?>
    </ul>
    <?php endforeach; ?>

    </div>
    In der mod_faqreader.* Templatedatei oder welche ihr auch immer benutzt,
    folgende Zeilen am Anfang (Zeile 1) hinzufügen:

    PHP-Code:
    <?php session_start();
    if (
    $_SESSION['faq']) {
    $faqchecker $_SESSION['faq'];
    // bereits vorhanden
    } else {
    // wird erstellt
    $faqchecker = array();
    }
    ?>
    <?php 
    $faq 
    $this->faqpid.$this->faqid;
    if (
    array_search($faq$faqchecker)!== FALSE) {
    // bereits vorhanden
    } else {
        
    array_push($faqchecker$faq);
        
    $_SESSION['faq'] = $faqchecker;
    // wird erstellt
    }
    ?>
    Anmerkung: Statt eine Session könnt ihr ja auch einen Cookie nutzen oder sogar in Verbindung der UserID bringen, was auch immer ihr erreichen wollt.
    Wie gesagt könnte ihr das gleiche Schema auch für eine Navigation nutzen oder den News nutzen, dazu holt ihr euch die nötigen Werte wie ID oder Zeitstempel, whatever
    und vergleicht diese bei der Ausgabe (Reader)

    Viele Grüße
    Geändert von izanagi (28.04.2012 um 18:59 Uhr)

  2. #2
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Hallo izanagi,

    erstmal: vielen Dank für das schöne Tutorial!

    Aber ich frage mich trotzdem, warum Du nicht einfach die CSS-Pseudoklasse :visited für die optische Hervorhebung nutzt? Hat das einen bestimmten Grund? Wenn nicht, dann hättest Du Dir evtl. eine Menge Arbeit sparen können
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

  3. #3
    Contao-Fan Avatar von izanagi
    Registriert seit
    19.01.2011.
    Ort
    Köln
    Beiträge
    595

    Standard

    Hi Webster,
    Ich dachte mir schon das irgendwer danach fragen würde

    Ne es ist zur besseren Kontrolle und der Weiterverarbeitung.
    Ich habe die Möglichkeit den Verlauf und die Inhalte individuell zu bestimmen und auf den Besucher einzustellen.
    Bei einer Führung durch den Shop könnte man einsehen für was er sich besonders interessiert und dementsprechen interagieren.
    Bei einer Anmeldung oder nem Formular kann ich ihn darauf hinweisen welche Infos er noch lesen sollte.
    Beim Navigieren könnte ich ebenfalls individuelle Wege setzen usw. usw.
    Ach ja und ich kann einen Schalter einbauen mit dem man Reseten kann, falls er alles neu durchgehen möchte. Z.B für ein Formular.

    Nennen wir es mal individueller Wegbegleiter.

    Bei meinem Fall kann ich z.b. dem eingeloggten User anzeigen ob er alle FAQ bereits gelesen hat, das wollte ich aber nicht ins Tutorial einfließen lassen.
    Ich weiss auch noch nicht für was ich es später brauchen werde, ich wollt nur schonmal ein Fundament bauen auf das ich dann aufbauen kann.

    gruss

  4. #4
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Daumen hoch

    Ahhh! Schöne Sache, :visited wäre ja auch zu einfach gewesen

    So macht das Ganze jetzt auch Sinn - kann ich bestimmt mal gebrauchen!
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

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
  •