Artikelanzahlauswahl anpassen
Info: Diese Anleitung wird nur für ältere PhPepperShop Systeme bis Version 1.5 benötigt. Bei neueren Versionen können die hier beschriebenen Änderungen bequem via Webinterface durchgeführt werden.
Um was geht es genau
Standardmässig bietet der PhPepperShop in den Versionen bis und mit v.1.5 zur Auswahl der Anzahl Artikel ein Dropdownmenu mit den Zahlen 1-10 an:

Die neueren Shopversionen ab v.2.0 können pro Artikel eine eigene Einheit und deren Darstellung verwalten. Wir haben schon vielfach Anfragen erhalten, wie man das Dropdownmenu zur Auswahl der Anzahl zu bestellender Artikel
in den älteren Shopversionen genauer anpassen kann. Man kann die Anfragen grundsätzlich in vier Anforderungsprofile einteilen:
Im Dropdownmenu sollen andere/weitere Werte zur Auswahl stehen
Die Masseinheit soll anders genannt werden (z.B. kg, m, ...)
Anstatt dem Dropdownmenu soll ein Texteingabefeld angezeigt werden (Nur ganze Zahlen erlaubt).
Anstatt dem Dropdownmenu soll ein Texteingabefeld angezeigt werden (auch Fliesskommazahlen sollen erlaubt sein).
An die Arbeit...
Wenn man die Darstellung nun im eigenen Shop ändern will, so kommt man nicht umhin sich mit dem PhPepperShop Source-Code
zu befassen. Wir machen es hier aber möglichst einfach. Der neue Code ist schon fertig ausprogrammiert, so dass man im
wesentlichen nur noch Code ersetzen muss. Damit man den PhPepperShop Source-Code bearbeiten kann, muss man sich einen
Editor beschaffen, mit welchem man UNIX-Zeilenumbrüche korrekt darstellen kann. Wir empfehlen PHPEd oder PHP-Edit. Hier
hat natürlich jeder seine eigene Präferenz.
PhPepperShop v.1.5: Ab der Version 1.5 des PhPepperShops werden kundenseitig HTML-Templates zur
Darstellung der Artikel benutzt, folglich findet man den hier beschriebenen Code in der Datei USER_ARTIKEL_HANDLING_AUFRUF.php nicht mehr.
Stattdessen findet man im Template artikeldarstellung.tpl.html das via default angezeigte Stückzahlen Dropdownmenü. Die
hier beschriebenen Änderungen können also auch in v.1.5 appliziert werden, nur, dass man sie im HTML-Template direkt anwenden muss.
Für die Ersetzung des Dropdown Menüs durch ein Texteingabefeld für ganze Zahlen findet man hier eine detaillierte Anleitung.
Gewünschte Änderungsart auswählen:
- Im Dropdownmenu sollen andere/weitere Werte zur Auswahl stehen
- Die Masseinheit soll anders genannt werden (z.B. kg, m, ...)
- Anstatt dem Dropdownmenu soll ein Texteingabefeld angezeigt werden (Nur ganze Zahlen erlaubt)
- Version 1.5: Anstatt dem Dropdownmenu soll ein Texteingabefeld angezeigt werden (Nur ganze Zahlen erlaubt) (PhPepperShop v.1.5)
- Anstatt dem Dropdownmenu soll ein Texteingabefeld angezeigt werden (Fliesskommazahlen erlaubt)
Wir haben zu jedem der vier Punkte eine kleine Anleitung geschrieben, was man wo wie ersetzen muss. Diese Angaben müssen
ganz genau befolgt werden, ansonsten hat man am Ende einen Shop, welcher nicht mehr lauffähig ist. Auch deshalb empfehlen
wir vorher ein Backup der zu bearbeitenden Datei(en) anzulegen.
1. Andere Zahlen als 1-10 im Dropdownmenu anzeigen
Standardmässig wird im PhPepperShop ein Dropdownmenu mit der Auswahl von 1-10 in Einerschritten dargeboten. Wenn man
jetzt aber Artikel in anderen Mengen anbieten will und diese nicht zu Paketen bündeln kann, so muss man zwangsläufig
die auswählbaren Stückzahlen ändern können. Hier wird nun beschrieben wie man diese Änderung angehen kann. Grundsätzlich
gibt es hier verschiedene Lösungsansätze: Man kann einerseits das ganze Dropdown-Feld durch ein Texteingabefeld ersetzen,
siehe dazu bitte 'Texteingabefeld (Ganzzahl)' und 'Texteingabefeld (Fliesskomma)'. Wenn man aber
einen linearen Zahlenbereich an Stückzahlen anbieten will und dieser nicht mehr als ~15 Einträge besitzt, so kann man
auch das bestehende Dropdownmenu modifizieren. Wie man das macht, dies wird hier als nächstes beschrieben.
Wir müssen nur einen Ort bearbeiten: Die Datei [shopdir]/shop/USER_ARTIKEL_HANDLING_AUFRUF.php.
Diese Datei nun bitte im Editor öffnen.
Folgendes Codestück suchen (Darstellung des Dropdownmenus):
echo ' </td>'."\n"; echo ' </tr>'."\n"; echo ' <tr class="content">'."\n"; echo ' <td class="content" VALIGN=middle>'."\n"; echo ' <br><h4 class="content">'; echo ' <select name="Anzahl">'."\n"; echo ' <option value="1">1</option>'."\n"; echo ' <option value="2">2</option>'."\n"; echo ' <option value="3">3</option>'."\n"; echo ' <option value="4">4</option>'."\n"; echo ' <option value="5">5</option>'."\n"; echo ' <option value="6">6</option>'."\n"; echo ' <option value="7">7</option>'."\n"; echo ' <option value="8">8</option>'."\n"; echo ' <option value="9">9</option>'."\n"; echo ' <option value="10">10</option>'."\n"; echo ' </select>'."\n"; echo ' Stück </h4>'; echo ' </td><td class="content" VALIGN= middle ALIGN=right>'."\n";
Im oben abgebildeten Dropdownmenu (HTML-Code in PHP) sieht man die zehn Zeilen, welche die zehn Einträge des
Menus beschreiben. Als Beispiel ändern wir hier das Menu, so dass es nachher noch mehr Auswahl anbietet. Zu den
zehn schon vorhandenen Einträgen erstellen wir noch weitere für die Anzahlen 15, 20, 30, 40 und 50.
Erweitertes Dropdownmenu:
echo ' </td>'."\n"; echo ' </tr>'."\n"; echo ' <tr class="content">'."\n"; echo ' <td class="content" VALIGN=middle>'."\n"; echo ' <br><h4 class="content">'; echo ' <select name="Anzahl">'."\n"; echo ' <option value="1">1</option>'."\n"; echo ' <option value="2">2</option>'."\n"; echo ' <option value="3">3</option>'."\n"; echo ' <option value="4">4</option>'."\n"; echo ' <option value="5">5</option>'."\n"; echo ' <option value="6">6</option>'."\n"; echo ' <option value="7">7</option>'."\n"; echo ' <option value="8">8</option>'."\n"; echo ' <option value="9">9</option>'."\n"; echo ' <option value="10">10</option>'."\n"; echo ' <option value="15">15</option>'."\n"; echo ' <option value="20">20</option>'."\n"; echo ' <option value="30">30</option>'."\n"; echo ' <option value="40">40</option>'."\n"; echo ' <option value="50">50</option>'."\n"; echo ' </select>'."\n"; echo ' Stück </h4>'; echo ' </td><td class="content" VALIGN= middle ALIGN=right>'."\n";
Man muss jeweils den value="Wert" und den Wert in den Dreieckigen Klammern >Wert< modifizieren um eine neue Anzahl
korrekt einzubinden. Wenn man eine Anzahl im voraus selektieren will, so kann man noch hinter value="Wert" das Wort selected
schreiben. Nun muss die Datei mit dem modifizierten Menu nur noch gespeichert werden und schon sind alle Arbeiten erledigt.
Wenn jemand noch etwas eleganter programmieren möchte, sollte sich diesen Foreneintrag mal genauer anschauen:
Dropdownmenu mit for-schleife
2. Masseinheit ändern
Natürlich verkauft nicht jeder Webshop in Stück-Einheiten. Einige verkaufen Flaschen, andere wiederum Liter.
Wir werden die Masseinheit der kleinsten bestellbaren Einheit (default: Stück) nun auf eine von Ihnen definierbare
Einheit ändern. In diesem Beispiel nehmen wir jetzt Liter (es würde natürlich auch nur l gehen, aber Liter
sieht besser aus...).
Die Masseinheit wird an drei verschiedenen Orten angezeigt: Zuerst in der Artikelanzeige, weiter im Warenkorb und der
Bestellbestätigung und zuletzt noch im Bestellungs-E-Mail. Wir müssen also drei Änderungen vornehmen.
Bearbeitet werden muss zuerst die Datei [shopdir]/shop/USER_ARTIKEL_HANDLING_AUFRUF.php. Diese Datei nun bitte im Editor
öffnen und darin folgende Änderungen vornehmen.
- Folgendes Codestück suchen (Darstellung des Dropdownmenus):
echo ' </td>'."\n"; echo ' </tr>'."\n"; echo ' <tr class="content">'."\n"; echo ' <td class="content" VALIGN=middle>'."\n"; echo ' <br><h4 class="content">'; echo ' <select name="Anzahl">'."\n"; echo ' <option value="1">1</option>'."\n"; echo ' <option value="2">2</option>'."\n"; echo ' <option value="3">3</option>'."\n"; echo ' <option value="4">4</option>'."\n"; echo ' <option value="5">5</option>'."\n"; echo ' <option value="6">6</option>'."\n"; echo ' <option value="7">7</option>'."\n"; echo ' <option value="8">8</option>'."\n"; echo ' <option value="9">9</option>'."\n"; echo ' <option value="10">10</option>'."\n"; echo ' </select>'."\n"; echo ' Stück </h4>'; echo ' </td><td class="content" VALIGN= middle ALIGN=right>'."\n"; echo " <input type='hidden' name='Artikel_ID' value='".$myarray->artikel_ID."'>"."\n"; echo ' <INPUT TYPE="hidden" name=darstellen value=2 title="Im Warenkorb gelandet">'; echo ' <INPUT TYPE="hidden" name=Session_ID value="'.session_id().'" title="Im Warenkorb gelandet">'; echo " <input type='image' src='Buttons/bt_in_warenkorb.gif' border='0'>"; echo ' </td>'."\n"; echo ' </tr>'."\n";
Hier muss man nun das Wort Stück durch die eigene Masseinheit ersetzen - in
unserem Fall hier durch Liter. Die Datei nun wieder speichern. Wir müssen in
dieser Datei keine weiteren Änderungen mehr vornehmen.
- Warenkorb und Bestellbestätigung anpassen:
Wir öffnen im Editor nun die Datei [shopdir]/shop/USER_BESTELLUNG_DARSTELLUNG.php.
Folgende Codezeile suchen:
<td class="content" align=center><B style='font-weight:bold'>Anzahl</B></td>
Das Wort Anzahl muss hier durch die eigene Masseinheit (bei uns Liter)
ersetzt werden.
- Bestellungs-E-Mail anpassen:
In der gleichen Datei können wir gleich weitermachen:
Folgende Codezeile suchen:
$mailstring.="Anzahl: ".$value->Anzahl."\n"; ?>
$mailstring.="Anzahl: ".$value->Anzahl."\n";
Auch hier nochmals das Wort Anzahl durch die eigene Masseinheit ersetzen.
Nun muss die bearbeitete Datei nur noch gespeichert werden. Alle Änderungen sind jetzt gemacht.
3. Ganzzahl Texteingabefeld einrichten (Anmerkung PhPepperShop v.1.4 Benutzer | PhPepperShop Version 1.5)
Wenn man seine Angebote nicht bündeln kann und grosse Unterschiede bei den Bestellmengen hat, so muss zwangsläufig
ein Texteingabefeld her, das Dropdownmenu würde sonst ins Unermässliche wachsen. Bei einem Texteingabefeld muss aber
auch an die Sicherheit gedacht werden: Kunden können nicht nur Zahlen eingeben, sondern auch maliziösen Code. Die
Eingaben müssen also überprüft werden. Dies erledigen wir hier mit JavaScript-Code, welcher zusätzlich zum
reinen Texteingabefeld noch eingefügt werden muss. Es sind also zwei Punkte abzuarbeiten.
Bearbeitet werden muss die Datei [shopdir]/shop/USER_ARTIKEL_HANDLING_AUFRUF.php. Diese Datei nun bitte im Editor
öffnen und darin folgende Änderungen vornehmen.
- Folgendes Codestück suchen:
// fuer jeden Artikel der Kategorie.. foreach($myArtikelarray as $myarray) { echo " <form method='post' action='./USER_BESTELLUNG_AUFRUF.php'>"
und durch folgendes Codestück ersetzen:
// fuer jeden Artikel der Kategorie.. foreach($myArtikelarray as $myarray) { echo "<script language=\"JavaScript\">\n"; echo " <!--\n"; echo " // Ueberpruefung der eingegebenen Daten des Versandkosteneingabeformulars:\n"; echo " function chkFormular".$myarray->artikel_ID."() {\n"; echo " nummerisch = 1;\n"; echo " for(i=0;i<document.Form".$myarray->artikel_ID.".Anzahl.value.length;++i) {\n"; echo " if(document.Form".$myarray->artikel_ID.".Anzahl.value.charAt(i) < \"0\" || document.Form".$myarray->artikel_ID.".Anzahl.value.charAt(i) > \"9\") {\n"; echo " nummerisch = 0;\n"; echo " }\n"; echo " }\n"; echo " if(nummerisch == 0) {\n"; echo " alert(\"Die Anzahl enthaelt ungueltige Zeichen. Erlaubt sind nur ganze Zahlen!\");\n"; echo " document.Form".$myarray->artikel_ID.".Anzahl.focus();\n"; echo " return false;\n"; echo " }\n"; echo " }// End function chkFormular\n"; echo " //-->\n"; echo "</script>\n"; echo "<form method='post' action='./USER_BESTELLUNG_AUFRUF.php' name=\"Form".$myarray->artikel_ID."\" onSubmit=\"return chkFormular".$myarray->artikel_ID."()\">\n";
- Folgendes Codestück suchen:
//HTML-Teil (Ende des Formulars) echo ' </td>'."\n"; echo ' </tr>'."\n"; echo ' <tr class="content">'."\n"; echo ' <td class="content" VALIGN=middle>'."\n"; echo ' <br><h4 class="content">'; echo ' <select name="Anzahl">'."\n"; echo ' <option value="1">1</option>'."\n"; echo ' <option value="2">2</option>'."\n"; echo ' <option value="3">3</option>'."\n"; echo ' <option value="4">4</option>'."\n"; echo ' <option value="5">5</option>'."\n"; echo ' <option value="6">6</option>'."\n"; echo ' <option value="7">7</option>'."\n"; echo ' <option value="8">8</option>'."\n"; echo ' <option value="9">9</option>'."\n"; echo ' <option value="10">10</option>'."\n"; echo ' </select>'."\n"; echo ' Stück </h4>'; echo ' </td><td class="content" VALIGN= middle ALIGN=right>'."\n"; echo " <input type='hidden' name='Artikel_ID' value='".$myarray->artikel_ID."'>"."\n"; echo ' <INPUT TYPE="hidden" name=darstellen value=2 title="Im Warenkorb gelandet">'; echo ' <INPUT TYPE="hidden" name=Session_ID value="'.session_id().'" title="Im Warenkorb gelandet">'; echo " <input type='image' src='Buttons/bt_in_warenkorb.gif' border='0'>"; echo ' </td>'."\n"; echo ' </tr>'."\n";
und durch folgendes Codestück ersetzen:
//HTML-Teil (Ende des Formulars) echo ' </td>'."\n"; echo ' </tr>'."\n"; echo ' <tr class="content">'."\n"; echo ' <td class="content" VALIGN=middle>'."\n"; echo ' <br><b class="content" style="font-weight:bold">Anzahl</b><br>'; echo ' <input type="text" name="Anzahl" size="7" value="1">'."\n"; echo ' Stück'; echo ' </td><td class="content" VALIGN= middle ALIGN=right>'."\n"; echo " <input type='hidden' name='Artikel_ID' value='".$myarray->artikel_ID."'>"."\n"; echo ' <INPUT TYPE="hidden" name=darstellen value=2 title="Im Warenkorb gelandet">'; echo ' <INPUT TYPE="hidden" name=Session_ID value="'.session_id().'" title="Im Warenkorb gelandet">'; echo " <input type='image' src='Buttons/bt_in_warenkorb.gif' border='0'>"; echo ' </td>'."\n"; echo ' </tr>'."\n";
Nun sind alle nötigen Arbeiten getan und man kann die neuen Eingabemöglichkeiten benutzen.
Wenn man noch die Masseinheit (Stück) ändern will, so muss man nach Punkt 2 verfahren. Der erste Teil
(ersetzen des Wortes Stück im Dropdownmenu, muss man nun aber abgeänderterweise im Texteingabefeldcode vornehmen).
3.1 Ganzzahl Texteingabefeld einrichten im PhPepperShop v.1.5
Die folgende Änderung bezieht sich auf den PhPepperShop v.1.5. Hier sind, wie in der Einleitung beschrieben,
alle Darstellungsteile in eigene, PHP-Source-Code befreite HTML-Dateien (Templates) extrahiert.
- Folgendes Codestück in der Datei shop/language/de/html_templates/artikeldarstellung.tpl.html zwischen der Stelle
Fatal error: Uncaught Error: Call to undefined function ereg_replace() in /home/phpepper/public_html/phpeppershop_files/v12_anzahl_help.php:364
Stack trace:
#0 {main}
thrown in /home/phpepper/public_html/phpeppershop_files/v12_anzahl_help.php on line 364
|