zuletzt angesehene Artikel anzeigen

Begonnen von dobra, Oktober 09, 2007, 16:42:32

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Aufgabe:
Die zuletzt angeschauten Artikel sollen angezeigt werden
(funktioniert ohne login und JS)

Lösung:
in HEADbereich der Detailseiten
<!--spmacro:module(Callback)
sub begin_read_template {
     if ($ssp::xxsession != 4711471147) {
           my $besuchteSeiten = ssp::cart_read_var('compseite');
                if ($besuchteSeiten eq $ssp::undefined) { $besuchteSeiten = ""; }
                     my $aktuelleSeite= ssp::get_var_article('itemid');
                if ($besuchteSeiten =~ m/$aktuelleSeite!_!/) {$alleSeiten = $besuchteSeiten}
                else { $alleSeiten = $aktuelleSeite . "!_!" . $besuchteSeiten; }

           ssp::cart_write_var('compseite', $alleSeiten);
    }
}
-->


Auf der (den) Seiten, wo die Artikel angezeigt werden soll(en) im BODYbereich
(kann auf allen Seiten, jeder beliebigen Seite oder auch auf einer extra Infoseite sein)
<!--spmacro:module(show)
sub artikel {
    my $Artikel = ssp::cart_read_var('compseite');
    my (@Liste) = split('!_!', $Artikel);
    my $str;
     foreach my $out(@Liste) {
        $str .= "$out,";
     }
     ssp::embedded("csearch","xyz.txt",$str . ":10000000");
}
-->


xyz.txt => beliebige txt Datei für die Anzeige (s. mini_cross.txt)

An der Stelle, wo die gesehenen Artikel anzeigen werden sollen __show::artikel__

(der entscheidende Tipp, wie ich das Script bauen kann, kam wieder von ahe - DANKE)

Nachtrag:
Wenn man nur eine bestimmte Anzahl - also z.B. die letzen 10 angeschauten Artikel ausgeben will, zusätzlich auf den Seiten auf denen die zuletzt gesehenen Artikel angezeigt werden im HEAD-Bereich diesen Code einfügen
<!--spmacro:module(Callback)
sub begin_read_template {
if ($ssp::xxsession != 4711471147) {
my $besuchteSeiten = ssp::cart_read_var('compseite');
my(@Liste) = split('!_!', $besuchteSeiten);
if ($#Liste >= 10) { $#Liste = 9; 
$besuchteSeiten = join('!_!', @Liste);   }
ssp::cart_write_var('compseite', $besuchteSeiten);
}
}
-->


Bei "if ($#Liste >= 10) { $#Liste = 9;" kann die Anzahl eingestellt werden.
(die 2. Zahl muß um 1 kleiner angegeben werden, da das erste Element 0 und nicht 1 ist)

ursprünglicher Code editiert
(doppelte Artikelnummern aus Liste entfernen war zu ungenau - jetzt wird auch zwischen 123_1 und 123_1_1 unterschieden)

ACHTUNG ! - funktioniert nicht auf statischen Seiten
mfG
dobra