"NEU" zeitgesteuert ein/ausblenden

Begonnen von dobra, Februar 26, 2008, 10:54:42

« vorheriges - nächstes »

0 Mitglieder und 2 Gäste betrachten dieses Thema.

dobra

Hallo,

mal wieder ein kleiner Codeschnipsel aus meiner Bastelstube  :)

Aufgabe: Bei neuen Artikeln soll ein "neu"-Icon für einen vorgegebenen Zeitraum eingeblendet werden.

Lösung:
Ein ben.def. Artikelfeld (Text, Zahlen) "NEU" anlegen.
Wenn jetzt ein neuer Artikel angelegt wird, in diesem Feld das Datum bis zu dem das "neu" eingeblendet werden soll in Form von
JJJJMMTT (ohne Komma oder Leerzeichen) eintragen.

<!--spmacro:module(show)
sub neu {
(my $sec,my $min,my $hour,my $mday,my $mon,my $year) = localtime(time);
$mon += 1; $year += 1900; # Y2K
my $heute = sprintf("%04d%02d%02d",$year,$mon,$mday);
my $index = shift;
my $neu = ssp::get_var_article("NEU", $index);
if ($neu ne $ssp::undefined) {
if ((length($neu))  && ($heute <= $neu)) {
my $out = qq|<img src="../neu.gif">|;  ##Pfad wo das "neu"-Icon liegt
main::mprint $out;
}
}
}
-->


An die Stelle, an der das Icon im vorgegebenen Zeitraum eingeblendet werden soll __show::neu__ schreiben

Man braucht nicht mehr daran denken, das Icon wieder zu entfernen, damit der Artikel nicht nach 2 Jahren immer noch "NEU" ist  ;)
Das Icon wird nach dem eingegebenen Datum nicht mehr angezeigt!

P.S.: das funktioniert natürlich auch z.B. mit "AKTION"
mfG
dobra

dobra

Hier noch eine andere Version.....

Voraussetzung: man legt alle neuen Artikel als Verknüpfung auf eine (beliebige) Seite
(das kann z.B. eine Verzeichnisseite sein, wenn man sie hier auflisten will oder - wenn es nicht irgendwo sichtbar sein soll - auch auf einer beliebigen Infoseite)

<!--spmacro:module(show)
sub neu {
my $index = $_[0];
my $anzahl = $_[1];
   if ($index <= $anzahl) {
for ($i=0;$i<=$anzahl;$i++) {
   my $artikel = ssp::get_var_article("itemid", $index);

my $read = ssp::readSQLData("SELECT ITEMID FROM HOP_ITEM WHERE PGID='10' && ITEMID='$artikel'","ITEMID"); 
for (my $i = 0; $i < $read; $i++) {
   my $artikelneu = ssp::get_var_db("ITEMID", $i);
if (length($artikelneu)) {main::mprint "<img border=0 src=\"../neu.gif\">";
return "noinc"; }
}
}
}
}
-->


("SELECT ITEMID FROM HOP_ITEM WHERE PGID='10' && ITEMID='$artikel'","ITEMID");  ## Präfix und Seitennr. anpassen

Wenn also der Artikel auch als Verknüpfung auf dieser Seite liegt, wird das "NEU" Icon angezeigt.
Wird die Verknüpfung gelöscht -> kein "NEU" Icon beim Artikel
mfG
dobra

parimo

Hallo dobra,

ich habe das mal ausprobiert (mit der ersten Version).
Das Einblenden funzt prima, allerdings blendet er auch das "neu.gif" ein, wenn ich das Datum von gestern eingebe, das dürfte dann doch eigentlich nicht sein, oder?

LG - parimo

dobra

oups  :-[

da hat sich ein kleiner Tippfehler eingeschlichen:
es muß heißen
my $heute = sprintf("%04d%02d%02d",$year,$mon,$mday);

und bei der Gelegenheit noch etwas:
$heute < $neu  -> heute kleiner als eingegebenes Datum
besser $heute <= $neu  -> heute kleiner oder gleich eingegebenes Datum (dann wird das "neu" bis inclusive dem eingegebenen Datum angezeigt)
mfG
dobra