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
Lesezeichen