Magento: Mengen-Eingabefeld in der Produktliste

Als Standard bietet magento in der Listenansicht einen Warenkorb-Button. Ein klick auf diesen Button legt 1 Stück des entsprechenden Artikel in den Warenkorb. Möchte man dem Kunden die Möglichkeit geben auch die Menge einzugeben muss ein Input-Feld in die Produktliste eingebaut werden. Wie dieses funktioniert zeigt dieses Tutorial. Abgeleitet von der ProduktView ist der String für die Ausgabe und Verarbeitung aufgebaut.

Die list.phtml ändern

Zuständig für die Ausgabe der Produkte in der gewählten Kategorie ist die list.phtml imVerzeichnis
app/design/frontend/default/IhrTheme/catalog/product.
Ist noch keine eigene list.phtml vorhanden wird diese aus dem default theme in das eigene theme Verzeichnis kopiert.

In der list.phtml sind zwei Abschnitte wichtig.
1. Die Ausgabe in der Listenansicht (list mode) und
2. die Ausgabe in der Boxenansicht (grid mode).

Oben steht die Ausgabe im Listmode. Diese beginnt bei der if Abfrage
<?php if($this->getMode()!=’grid’): ?> (Ist mode nicht grid, also list)
Hier die Ausgabe des Warenkorb-Button suchen.
Die Ausgabe erfolgt nach der Abfrage
<?php if($_product->isSaleable()): ?> (ist Produkt kaufbar, ca. Zeile 62)


Die Zeile

<button onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><?php echo $this->__('Add to Cart')?></span></button>

mit diesen Zeilen ersetzen

<form action="<?php echo $this->getAddToCartUrl($_product) ?>" method="post" id="product_addtocart_form_<?php echo $_product->getId(); ?>">
<br /><span><label for="qty"><?php echo $this->__('Qty') ?>:</label>
<input name="qty" type="text" id="qty" maxlength="5" value="<?php echo $this->getMinimalQty($_product) ?>" />
<button style="margin:0px;" onclick="productAddToCartForm_<?php echo $_product->getId(); ?>.submit()"><span><?php echo $this->__('Add to Cart') ?></span></button>
</form>
<script type="text/javascript">
var productAddToCartForm_<?php echo $_product->getId(); ?> = new VarienForm('product_addtocart_form_<?php echo $_product->getId(); ?>');
productAddToCartForm_<?php echo $_product->getId(); ?>.submit = function(){
if (this.validator.validate()) {
this.form.submit();}
}.bind(productAddToCartForm_<?php echo $_product->getId(); ?>);
</script>

Nun noch die Boxenausgabe (grid mode) ändern:
Weiter unten, ca. Zeile 88 beginnt die Ausgabe des Gridmode
<?php else: ?>
<?php // Grid Mode ?>

In diesem Abschnitt wieder die Abfrage
<?php if($_product->isSaleable()): ?> suchen
und die darauffolgende Zeile

<button type="button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><?php echo $this->__('Add to Cart') ?></span></button>

mit diesem Abschnitt ersetzen.

<form action="<?php echo $this->getAddToCartUrl($_product) ?>" method="post" id="product_addtocart_form_<?php echo $_product->getId(); ?>">
<br /><span><label for="qty"><?php echo $this->__('Qty') ?>:</label>
<input name="qty" type="text" id="qty" maxlength="5" value="<?php echo $this->getMinimalQty($_product) ?>" />
<button style="margin-top:5px;" onclick="productAddToCartForm_<?php echo $_product->getId(); ?>.submit()"><span><?php echo $this->__('Add to Cart') ?></span></button></form>
<script type="text/javascript">
var productAddToCartForm_<?php echo $_product->getId(); ?> = new VarienForm('product_addtocart_form_<?php echo $_product->getId(); ?>');
productAddToCartForm_<?php echo $_product->getId(); ?>.submit = function(){
if (this.validator.validate()) {
this.form.submit();}
}.bind(productAddToCartForm_<?php echo $_product->getId(); ?>);
</script>

Speichern, caches leeren und das war es auch bereits.
Nun kann auch in der Listenansicht eine Menge bei der Bestellung eingegeben werden.
Hinweis:
Dieses ist natürlich nur sinnvoll bei Produkten ohne Pflichtfeld-Optionen.
Sind diese vorhanden wird automatisch beim Klick auf den Warenkorb-Button auf die Detailseite gelenkt.
Hier müssen dann erst einmal vom Kunden die Pflichtfelder ausgewählt werden.

Alternativ kann man auch Optionen bereits in der Listenansicht anzeigen lassen.
Aber hierzu vielleicht später einmal ein separates Tutorial.

Viele Spaß damit
Stefan Pröhl – robin2160
mageintern.de

Kommentare: Magento: Mengen-Eingabefeld in der Produktliste

  1. Anna E sagt:

    Danke für das Tutorial. Auf der Listenansicht habe ich damit tatsächlich “Menge”-Feld bekommen. Nur es passiert nichts beim Testing. Also die angegebene Anzahl von den Artikel wird an den Wahrenkorb nicht weiter geleitet. :(
    Woran kann es liegen?
    Dankschön.
    LG
    Anna.

    [Antwort]

  2. Martin Siegel sagt:

    Hallo,
    erstmal danke für das sschicke Tutorial! Kannst du auch noch das Tutorial für die “Optionen in der Listenansicht anzeigen lassen” veröffentlichen? Ich habe nämlich genau deinen beschriebenen Fall, dass ich Pflichtfelder habe und weiß mir nun nicht sinnvoll weiter zu helfen. Ich würde mich daher über einen zweiten Teil sehr freuen!

    Gruß,
    Martin

    [Antwort]

  3. tobias sagt:

    Kann ich irgendwo einstellen, dass Magento standardmäßig 0,3 Einheiten in den Warenkorb legt?

    [Antwort]

  4. DeDu sagt:

    Super! Danke!

    [Antwort]

Kommentar schreiben