Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Artikel Atributte

    mozartteich

    • Neu im Forum
    • Beiträge: 7
    Artikel Atributte
    am: 03. März 2014, 00:06:46
    Ich habe bei manchen Artikel ca 30 Artikelmerkmale. Bei vielen Merkmalen ist der erste Optionswert "keine". Das ganze einmal an einem Beispiel angewendet:

    Ich benutze die dropdown vorlage und das Produkt ist ein Rasenmäher. Jetzt gibt es folgende Artikelmerkmale (hier als Beispiel nur mit 3 Merkmalen):
    Radantrieb (mit den Optionen "keine" bzw. Antrieb),
    Elektrostart ( mit den Optionen"keine" bzw.E-Start)
    Schnitthöhenverstellung (mit den Optionen "keine" bzw. Schnitthöhenverstellung)

    Wenn ein Kunde den Rasenmäher ohne eines dieser zusätzlichen Merkmale bestellen möchte  legt er diesen Artikel einfach in den Warenkorb ohne eine Änderung an den voreingestellen Artikelmerkmalen vor zu nehmen. Das Problem im Warenkorb werden alle Artikelmerkmale angezeigt. Ich möchte jedoch nur die Merkamale anzeigen die vom Kunden geändert wurden. Also alle Merkmale deren Wert nicht"keine" ist.

    Wie kann ich die array bzw. foreach in order_details ändern damit nur die Merkmale angezeigt werden, welche nicht den Wert "keine" enthält.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=29543.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Artikel Atributte
    Antwort #1 am: 03. März 2014, 02:32:21
    Das Problem ist es das multi-language-fähig zu halten, sonst könntest du einfach in /templates/DEIN_TEMPLATE/module/order_details.html folgendes machen
    Code: PHP  [Auswählen]
                    {foreach key=key_data item=item_data from=$module_data.ATTRIBUTES}
                    {if $item_data.VALUE_NAME != 'keine'}
                    <tr>
                            <td class="attribute"><strong>{$item_data.NAME}:</strong></td>
                            <td class="value">{$item_data.VALUE_NAME}</td>
                    </tr>
                    {/if}
                    {/foreach}

    Um es multi-language-fähig zu halten müsstest du über die ID des Optionswertes gehen (der Wert X der im Quelltext bei option value="X" steht)
    und dazu in /includes/modules/order_details_cart.php
    folgendes suchen
    Code: PHP  [Auswählen]
    $module_content[$i]['ATTRIBUTES'][$subindex] = array ( 'ID' => $attributes['products_attributes_id'],
                                                           'MODEL' => $attributes['attributes_model'],
                                                           'EAN' => $attributes['attributes_ean'],
                                                           'NAME' => $attributes['products_options_name'],
                                                           'VALUE_NAME' => $attributes['products_options_values_name'].$attribute_stock_check
                                                               );

    und so erweitern
    Code: PHP  [Auswählen]
    $module_content[$i]['ATTRIBUTES'][$subindex] = array ( 'ID' => $attributes['products_attributes_id'],
                                                           'MODEL' => $attributes['attributes_model'],
                                                           'EAN' => $attributes['attributes_ean'],
                                                           'NAME' => $attributes['products_options_name'],
                                                           'VALUE_NAME' => $attributes['products_options_values_name'].$attribute_stock_check,
                                                           'VALUE_ID' => $attributes['options_values_id']
                                                               );

    und in /templates/DEIN_TEMPLATE/module/order_details.html
    dann so abfragen
    Code: PHP  [Auswählen]
                    {foreach key=key_data item=item_data from=$module_data.ATTRIBUTES}
                    {if $item_data.VALUE_ID != 'X' && $item_data.VALUE_ID != 'Y' && $item_data.VALUE_ID != 'Z'}
                    <tr>
                            <td class="attribute"><strong>{$item_data.NAME}:</strong></td>
                            <td class="value">{$item_data.VALUE_NAME}</td>
                    </tr>
                    {/if}
                    {/foreach}
    wobei X, Y, Z für die jeweiligen values stehen die die diversen Optionen "keine" haben.

    Dabei entsteht ein leerer table-tag im HTML-Output weshalb man die foreach-Schleife und die if-Abfrage um den table machen sollte (siehe Original-Code), wirst du selbst hinbekommen.

    Gruß,
    noRiddle

    mozartteich

    • Neu im Forum
    • Beiträge: 7
    Re: Artikel Atributte
    Antwort #2 am: 03. März 2014, 11:07:34
    Tausend Dank.

    Funktioniert einwandfrei zumindest die erste Variante. Die zweite habe ich nicht ausprobiert. Würde das auch gerne im Backend ebenso darstellen, z.B. beim Lieferschein drucken(printpacking_slip) oder auch bei der Ansicht wenn die Bestellung angeklickt wird.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Artikel Atributte
    Antwort #3 am: 04. März 2014, 07:26:15
    Die zweite Variante solltest du aber nehmen, nur so bleibt der Shop mehrsprachig (selbst wenn du Mehrsprachigkeit momentan nicht nutzt).

    Für den Lieferschein ist die /admin/print_packingslip.php zuständig.
    Was du mit "Ansicht wenn die Bestellung angeklickt wird" meinst verstehe ich nicht.

    Gruß,
    noRiddle

    mozartteich

    • Neu im Forum
    • Beiträge: 7
    Re: Artikel Atributte
    Antwort #4 am: 22. März 2014, 10:28:19
    Hallo NoRiddle,

    könntest Du mir das mit der print_packingslip näher erläutern?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Artikel Atributte
    Antwort #5 am: 23. März 2014, 14:53:52
    In der /admin/print_packingslip.php werden die Daten aus der class order{} (/includes/classes/order.php) mittels der Funktion getOrderData() geholt.
    Da mußt du ansetzen. (Hier ist es dann die orders_products_options_values_id aus der Tabelle orders_products_attributes, siehe die o.g. Funktion).

    Gruß,
    noRiddle

    mozartteich

    • Neu im Forum
    • Beiträge: 7
    Re: Artikel Atributte
    Antwort #6 am: 23. März 2014, 22:01:56
    Hallo NoRiddle,

    Warum  orders_products_options_values_id aus der Tabelle. Das Feld ist doch  product_options_values
    oder?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Artikel Atributte
    Antwort #7 am: 24. März 2014, 11:16:08
    Ich habe dir alle nötigen Informationen gegeben.
    Wenn du nicht klar kommst beauftrage jemanden.

    Gruß,
    noRiddle