Die ersten drei News als neu markieren - die 2.

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
eSKa
Senior Member
Beiträge: 557
Registriert: Do 1. Jan 1970, 02:00

Die ersten drei News als neu markieren - die 2.

Beitragvon eSKa » Di 18. Nov 2003, 16:37

ich habe in einem Thread gesehen, dass man mit einer listview-Abfrage die ersten 3 News folgendermassen mit "NEU" markieren kann
<?php $counter = 0; ?>
<we:listview>
<we:repeat>
<?php if($counter++ < 3): ?>
NEU -
<?php endif; ?>
<we:field name="we_path"/>

</we:repeat>
</we:listview>
Meine FRAGE ist nun:

Kann man dies nicht mit den ersten drei News machen, sondern Zeitabhängig ? Also mit den NEWS, die zB nicht älter sind als 3 Tage?

Hab´s irgendwie nicht hinbekommen :(
Bin für jeden Tipp dankbar...

piXel relations GmbH | Agentur für Online-Kommunikation
Luxemburger Str. 93 | 50354 Hürth
Telefon 0 22 33 / 99 66 81
www.pixelrelations.de | info@pixelrelations.de

Christoph Lütjen

Beitragvon Christoph Lütjen » Di 30. Dez 2003, 10:27

Hallo,

das Prinzip hinter dieser Abfrage ist einfach: Das Listview wird "ganz normal" ausgeführt, so dass der Bereich innerhalb von we:repeat für jeden Datensatz wiederholt wird.

Jetzt wird aber bei jedem Mal, wo dieser Bereich angezeigt wird eine "wenn dann (if) Anweisung ausgeführt, ist deren Kriterium erfüllt, wird in diesem Beispiel der Begriff "neu" hinzugefügt. Im Beispiel, wird am Anfang eine Variable auf den Wert 0 gesetzt und bei jedem durchlauf um eins erhöht ($counter++) ist der Wert kleiner 3 ist die Bedingung erfüllt.

Möchten Sie das ganze also für Ihre Anforderungen anpassen, müssen Sie die Bedingung so ändern, dass der Wert eines Feldes mit dem aktuellen Datum verglichen wird und wenn die Abweichung weniger als 3 Tage ist muss die Bedingung zutreffen. Also...

1. Schritt - Datumsfeld ermitteln und ausgeben lassen
Zuerst lassen wir den Inhalt des Datumsfeldes ausgeben, so können wir erstmal sehen, mit was wir vergleichen - ist einfacher als später Fehler zu suchen ;-)

<?php echo $lv->f("Feldname_Datumsfeld"); ?>

Sie sollten jetzt eine lange Zahl ausgegeben bekommen. Das liegt daran, dass in webEdition ein Datum als "unix timestamp" gespeichert wird. Bedeutet, es wird die Anzahl der Sekunden seit dem 1.01.1970 angegeben.

2. Schritt - Aktuelles Datum minus x Tage ermitteln
Die Funktion time(); gibt den aktuellen Timestamp zurück:

<?php echo time(); ?>

Jetzt noch die Tage abziehen:

<?php
$tage = 2;
echo (time() - ($tage * 60 * 60 * 24));
?>

3. Schritt - wir bauen alles zusammen

<?php
/* Bedingung für den Block angeben */
$tage = 2;
if(intval($lv-f("Feldname_Datum")) > (time() - ($tage * 3600 * 24))){
?>

Dieser Bereich wird nun nur ausgeführt, wenn das Datum im angegebenen Feld nicht älter als $tage * 24 Stunden ist.

Da durch die if Anweisung ein Block geöffnet wird, müssen wir diesen natürlich auch wieder schließen. Die folgende Zeile darf also auf keinen Fall fehlen:

<?php } /* Ende des if Blocks */ ?>


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 37 Gäste