Hallo,
Nachdem ich im Moment an "Arbeitsnotstand" leide
, hab' ich mal in meiner "Bastelstube" nach Scripten gegraben, die vielleicht auch für andere interessant sein könnten.
(habe dieses "alte" Script nochmal überarbeitet und vereinfacht, so daß es universell anwendbar ist)
Aufgabe:In manchen Fällen ist es sinnvoll, Crossartikel nicht mit Checkboxen sondern mit Radiobutton einzubinden.
z.B.
- zu losen Flüssigkeiten muß ein Behälter mitbestellt werden - aber nicht mehr als einer
- eine Kombitherme braucht ein Thermostat - es gibt verschiedene Ausführungen aber nur eine soll gewählt werden können
- ein Auspuff brauch ein - aber eben nur ein - Endstück
usw
Lösung:In der txt-Vorlage das __wkcheck__ mit
<input name="myradio" type="radio" value="__lib::artikelnummer2__" onclick='check_radios(this)'>
<input type="hidden" name="__lib::artikelnummer2__" id="__lib::artikelnummer2__" value="" >
ersetzen.
In der (den) Detailseite(n) in denen die Crossartikel verwendet werden den JS-Code eintragen
<script language="JavaScript" type="text/javascript">
function check_radios(el) {
var m_itemids = new Array(__print::jsscript__);
for (var i = 0; i < m_itemids.length; i++) {
document.getElementById('a__' + m_itemids[i]).value = "0";
}
document.getElementById(el.value).value = "1";
}
</script>
(kann alternativ auch in eine externe JS-Datei - die in allen Seiten eingebunden ist - geschrieben werden)
In stdall.ipl folgenden ssp-Code eintragen:
<!--spmacro:module(lib)
## Identifier nachbauen
sub artikelnummer2 {
my $index = shift;
my $anzahl = shift;
if ($index <= $anzahl) {
my $itemid = ssp::get_var_article('itemid', $index);
my $out = qq|a__$itemid|;
main::mprint $out;
}
return 'noinc';
}
-->
<!--spmacro:module(print)
sub jsscript {
my $index = shift;
my $anzahl = shift;
for($i=0; $i <= $anz; ++$i) {
my $cross = ssp::get_var_article('ergaenz4', $index);
$cross =~ s/,/","/g;
main::mprint "\"$cross\"";
}
}
-->
Hier sind die Crossartikel in
ergaenz4 eingetragen - muß gegebenenfalls angepasst werden
Die Funktionen und die Einbindung bleiben die selben - einziger Unterschied: es werden Radiobutton statt Checkboxen verwendet
Nachtrag:Soll der Kunde einen Crossartikel dazu bestellen
müssen, das JS-Script um diesen Code ergänzen:
function check(){
var okay = false;
for(var i = 0; i < document.getElementsByName('myradio').length; i++)
{
if(document.getElementsByName('myradio')[i].checked == true)
{
okay = true;
}
}
if (okay == false)
{
alert("Bitte wählen Sie eine Variante");
return false;
}
return true;
}
und in den form tag onsubmit="return check()" schreiben
<form method="post" action="
http://__xformcart__"
onsubmit="return check()">
Auf diese Weise kann man z.B. einen speziellen Produktkonfigurator bauen, bei dem zwischen verschieden Komponenten (die mit der Crossartikel-Methode natürlich mit dem üblichen Bild, Text, Beschriebung, Preis usw dargestellt werden können) gewählt werden kann, aber eben
EIN Teil zwingend gewählt werden muß.
(einziges - kleines - Problem dabei: es fehlt noch die ShopPilot-Funktion, diese Teile auch im WK zu koppeln, da der Kunde ja jetzt theoretisch die Komponenten in WK auch einzeln löschen oder die Mengen ändern kann)
Linkback: https://www.shoppilot.net/pf/index.php?topic=1009.0