benutzerdefinierte Felder in Kundenkonto - Bestelldetails =>Lösung

Begonnen von dobra, Februar 17, 2007, 10:41:06

« vorheriges - nächstes »

0 Mitglieder und 7 Gäste betrachten dieses Thema.

dobra

Hallo,

Habe eine Lösung gefunden, wie man auch benutzerdefinierte Felder auf der Bestelldetail-Seite anzeigen kann:
(in diesem Beispiel wird berücksichtigt ob es sich um eine Variante oder einen Artikel handelt
Die Benutzedefinierten Felder ARTIKELNAME und SEITE sind bei Artikel angelegt, sollen aber auch bei Varianten angezeigt werden)

<!--spmacro:module(artikelname)
sub vanzeigen {
   my $index = $_[0];
   my $id = ssp::get_var_db("ITEMID",$index);
my $count = ssp::readSQLData("SELECT MITEMID FROM PY2_SITM WHERE ITEMID ='$id'","MITEMID");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
$arikelid = ssp::get_var_db("MITEMID",$i);
++$i;
}

my $count = ssp::readSQLData("SELECT ARTIKELNAME, SEITE FROM PY2_ITEM WHERE ITEMID ='$arikelid'","ARTIKELNAME", "SEITE");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
$name = ssp::get_var_db("ARTIKELNAME",$i);
$seite = ssp::get_var_db("SEITE",$i);
++$i;
}

my $anzeigen = qq{<a href="http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show$vseite,__xxsession__" > $vname </a>};
main::mprint ($anzeigen);
       }
}
}

sub anzeigen {
   my $index = $_[0];
   my $id = ssp::get_var_db("ITEMID",$index);
my $count4 = ssp::readSQLData("SELECT ARTIKELNAME, SEITE FROM PY2_ITEM WHERE ITEMID ='$id'","ARTIKELNAME", "SEITE");
if ($count4 >= 0) {
my $i=0;
while ($count4 > $i) {
$name = ssp::get_var_db("ARTIKELNAME",$i);
$seite = ssp::get_var_db("SEITE",$i);
++$i;
}

my $anzeigen = qq{<a href="http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show$seite,__xxsession__" > $name </a>};
main::mprint ($anzeigen);
       }
}

-->

Gewünschte Ausgabe, Name von den benutzerdefinierten Feldern und ev. Tabellennamen müssen natürlich angepaßt  werden.

Beispiel:

hier wird statt der Artikelnr. der Artikelname (ben. def. Feld ARTIKELNAME) mit Link zu Seite (ben. def. Feld SEITE) ausgegeben.

Den Code in oitem_identifier.ipl schreiben - Ausgabe auf der kundenkonto_bestellung_detail.html Seite mit __artikelname::vanzeigen__ für Varianten und __artikelname::anzeigen__ für Artikel.

Das Skript kann natürlich - je nachdem was man anzeigen möchte - beliebig angepaßt werden.

P.S.:  der Code ist sicher umständlich und nicht professionell geschrieben, aber es funktioniert (zumindestens bei mir  :D)
PP.S.: um nicht mehr im Katalog vorhandene Artikel abzufangen, werde ich noch versuchen, eine "If"-Abfrage einzubauen - ist mir gerade eingefallen, daß das fehlt

mfG
dobra

dobra


ZitatPP.S.: um nicht mehr im Katalog vorhandene Artikel abzufangen, werde ich noch versuchen, eine "If"-Abfrage einzubauen



Wenn Arikel nicht mehr im Katalog ist (erster Artikel) wird wieder die Artikelnummer angezeigt und bei Beschreibung der Hinweistext
"Artikel ........."
(man kann natürlich auch beliebige andere Texte ausgeben)

Falls jemand den Code haben möchte, bitte um Nachricht
mfG
dobra

catwoman

Hallo Dobra, könnte ich den Code bitte haben. Gerne auch mit der Lösung:  um nicht mehr im Katalog vorhandene Artikel abzufangen. Vielen Dank im voraus.

dobra

Hallo catwoman,

hier der Code (für Artikel - berücksichtigt auch abgelaufene Gutscheine)
<!--spmacro:module(show)
sub produkt {
my $jetzt = time();
    my $index = $_[0];
my $itemid = ssp::get_var_cart('id', $index);
my $pre = ssp::db_get_prefix();
my $ITEM = $pre . "ITEM";
ssp::readSQLData("SELECT STAFP4 FROM $ITEM WHERE ITEMID='$itemid'","STAFP4");
my $gueltigbis = ssp::get_var_db('STAFP4', 0);
    my $produkt = ssp::get_var_cart('produkt', $index);
my $out = qq|$produkt|;
if ($itemid =~ /_GS_/ && $jetzt > $gueltigbis && length($gueltigbis)) {$out = "Gutschein abgelaufen";}
if (!length($produkt) && $itemid !~ /_GS_/ ) {$out = "nicht mehr verfügbar";}
main::mprint ($out);
}
-->>


und dann __produkt__ mit __show::produkt__ ersetzen
mfG
dobra