fremdsprachige Listboxen für Subkatolog

Begonnen von dobra, März 27, 2008, 13:41:47

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Habe mal einen Prototyp für fremdsprachige Listboxen gebaut
(kann natürlich noch angepasst und beliebig erweitert werden)

Listbox nachbauen:

  • ein ben.def. Artikelfeld (im Beispiel "MYLIST1") anlegen
    (ich habe es als Hauptartikelfeld und NICHT  für Subkataloge angelegt - so kann es theoretisch für ALLE Subkataloge verwendet werden)
  • ein ben.def. Auftragsfeld (Projekt -> Benutzerdefinierte Datenfelder -> Auftrag -> Position / im Beispiel "LISTE1") anlegen
  • bei dem Artikel in das MYLIST1-Feld die übersetzte Liste wie bei den Standard-Listboxen eintragen
    (z.B. "1,black,white,blue,red")
    Achtung: an erster Stelle muß eine Zahl stehen - wird dann aber nicht angezeigt - weiß nicht warum, aber sonst funktioniert es nicht.
  • in der alternativen HTML-Vorlage (z.B. der englischen detail.html) dann das __listbox1__ mit __show::mylistbox1__ ersetzen
  • damit die Listbox nicht nur auf der Detailseite angezeigt, sondern die gewählte Option auch im WK bzw. Händlermail angezeigt wird, muß - falls nicht eh verwendet - der bestellbare Teil in ein <form> eingebettet und ein input type="hidden" verwendet werden
<!--spmacro:pagetype(1)-->  
<form method="post" action="__xformcart__">
<input type="hidden" name="listid" value="__artnr__">
...
...
</form>


Jetzt noch die notwendigen Scripte einbauen:

in stdall.ipl
<!--spmacro:include(scripts/bestellposition.ipl)-->

<!--spmacro:module(show)
## Nachgebaute Listbox-Funktion
sub mylistbox1 {
    my $index = shift;
    my $anzahl = shift;
   
    if ($index <= $anzahl) {
        my $list = ssp::get_var_article('MYLIST1', $index);
        my @listids = split(",", $list);

    if ($list !=0){
        my $out = qq|
<SELECT name="LISTE1" id="LISTE1" size="1">|;
            for (my $i = 1; $i < scalar(@listids); $i++) {
                $out .= qq|<OPTION value="$listids[$i]">$listids[$i]</OPTION>|;
            }
            $out .= qq|</SELECT>|;

        main::mprint($out);
    }
}
}
-->


bestellposition.ipl anlegen, (wird in stdall.ipl eingebunden, damit es automatisch auf allen Seiten verfügbar ist - nicht vergessen, diese Datei auch in die "Dateien hinzufügen" - Liste eintragen!)
<!--spmacro:module(bestellposition)

sub myliste1 {
    my $index = shift;
   
    my $anzahl = ssp::get_var_cart('anzahl',$index);
    my $artnr = ssp::get_var_cart('id',$index);
    my $id = ssp::get_var_cart('rawid',$index);
    my $txt = "";
   
    my $liste1 = ssp::get_var_cart("LISTE1",$index);
   
    $liste1 =~ s/\\//g;
   
    if ($liste1) {
        $txt = qq |$liste1|;
    }
   
    main::mprint $txt;
}
-->


stdplacecart.ipl (falls noch nicht vorhanden - anlegen)
<!--spmacro:module(form)
## POST-Daten auslesen
my $item = ssp::get_var_form('listid');
if (length($item) && ($item ne ssp::undefined)) {
my $list1 = main::qform(ssp::get_var_form('LISTE1'));
if ($item) {
$main::FORM{"LISTE1__$item"} = $list1;
}
}
-->


So, das war's schon fast
Jetz nur noch im WK und den Mailvorlagen ein __bestellposition::myliste1__  an den Stellen, an denen die Listboxauswahl angezeigt werden soll einfügen.

Die Listbox auf den Detailseiten bzw. die Zusatztexte im WK und Mail werden nur dann angezeigt, wenn für diesen Artikel auch ein Listboxeintrag in MYLIST1 vorhanden ist.

Auf diese Weise können beliebig viele nachgebaute Listboxen verwendet werden.
mfG
dobra

parimo

Hallo dobra,

das ist ja super, vielen Dank !!  :)
Ich hatte schon befürchtet, ich müsste mich zu einem Programmier-Kurs anmelden, um den Shop vernünftig aufzubereiten.
Ich werde es dank deiner Anleitung am Wochenende ausprobieren, ob ich auch Listboxen bauen kann. Das wird sicher auch für viele andere Shoppilot-Händler nützlich sein, denn - wie gesagt - bisher habe ich noch keine elegante SPE-Umsetzung eines Mehrsprachenshops gesehen.

Viele Grüße
parimo

dobra

#2
Hallo nochmal

mit Genehmigung habe ich den Demoshop tabshop_ml in dem ich die Listbox eingebaut habe im Privatbereich zum download zur Verfügung gestellt, falls sich das jemand anschauen möchte - der Testartikel ist Mäuse -> Kugelmaus im englischen Subkatalog
http://www.shoppilot.net/pf/offtopic_privat/tabshopml_mit_uebersetzer_listbox-t1051.0.html;msg3896#msg3896

ZitatIch hatte schon befürchtet, ich müsste mich zu einem Programmier-Kurs anmelden
Davon halte ich nicht viel  ;)
Mit "learning by doing" und ein wenig Hilfe von Support geht's viel einfacher und macht viiiieeeeeel mehr Spaß  :D
mfG
dobra