Frage: Ich möchte in zu Variantenartikeln einen "ab Preis" darstellen, wie komme ich an den günstigsten Preis in dem Variantenartikel ?
Lösung:
<!--spmacro:module(preis)
sub ab {
my $index = $_[0];
my $anzahl = $_[1];
my $vindex = $_[2];
my $vanzahl = $_[3];
if ($vanzahl > 0) { # Sind überhaupt Varianten da ?
my $minpreis = 9999999999; # sehr hoher Preis
for( my $i = 0; $i <= $vanzahl; ++$i) { # alle Varianten durchlaufen
my $vp = ssp::get_var_varticle('preis',$i);
if ($vp < $minpreis) { # ist der Preis niiedriger ?
$minpreis = $vp;
}
}
main::mprint("ab " . main::fp($minpreis));
}
}
-->
Mit __preis::ab__ kann man dann den niedrigsten Preis einer Variante des Artikels ausgeben.
Das Script ist für Artikelseiten gedacht funktioniert aber auch auf er Detailseite.
Frage: geht das auch für Staffelpreisen (Varianten kosten alle das selbe) ?
Lösung:
<!--spmacro:module(verzpreis)
sub ab {
my $index = $_[0];
my $anzahl = $_[1];
my $minpreis = 9999999999; # sehr hoher Preis
if ($index <= $anzahl) {
my $st1 = ssp::get_var_article('stafp1', $index);
if (length($st1)) { # Sind überhaupt Staffelrabatte eingetragen ?
$st1 =~ s/,/./g;
my @liste = ($st1);
my $st2 = ssp::get_var_article('stafp2', $index);
if (length($st2)) {$st2 =~ s/,/./g; push(@liste, $st2)};
my $st3 = ssp::get_var_article('stafp3', $index);
if (length($st3)) {$st3 =~ s/,/./g; push(@liste, $st3)};
my $st4 = ssp::get_var_article('stafp4', $index);
if (length($st4)) {$st4 =~ s/,/./g; push(@liste, $st4)};
foreach $x (@liste) {
if ($x < $minpreis) { # kleinsten Preis ermitteln
$minpreis = $x;
}
}
main::mprint("<small>ab</small> " . main::fp($minpreis));
} else {main::mprint("__preis__");} # sind keine Staffelpreise eingetragen, wird der normale Preis ausgegeben
}
}
-->
Ausgabe mit __verzpreis::ab__ statt __preis__
Produktseite:
(http://www.woll-insel.at/Bilder/SP-Forum/abpreis1.jpg)
auf der Detailseite gebe ich die Preise und Staffelrabatte dann "konventionell" aus
(http://www.woll-insel.at/Bilder/SP-Forum/abpreis2.jpg)
Aufgabe:
das "ab" soll nur ausgegeben werden, wenn es unterschiedliche Variantenpreise gibt
Lösung:
<!--spmacro:module(preis)
sub ab {
my $index = $_[0];
my $anzahl = $_[1];
my $vindex = $_[2];
my $vanzahl = $_[3];
my $vp;
my $ab;
if ($vanzahl > 0) { # Sind überhaupt Varianten da ?
my $minpreis = 9999999999; # sehr hoher Preis
my $maxpreis = 0;
for( my $i = 0; $i <= $vanzahl; ++$i) { # alle Varianten durchlaufen
$vp = ssp::get_var_varticle('preis',$i);
if ($vp < $minpreis) { # ist der Preis niedriger ?
$minpreis = $vp;
}
if ($vp > $maxpreis) {
$maxpreis = $vp;
}
}
if ($minpreis != $maxpreis) {$ab = "ab ";}
main::mprint($ab . main::fp($minpreis));
}
}
-->
mit __preis::ab__ wird jetzt nur dann ein "ab <Preis>" ausgegeben, wenn es mehr als einen Preis bei den Varianten gibt.
Will man z.B. Preis von - bis ausgeben, kann man das so machen
main::mprint( main::fp($minpreis) . " - " . main::fp($maxpreis));