Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
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: Admin EAN in der Bestellung anzeigen

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Admin EAN in der Bestellung anzeigen
    am: 31. Juli 2014, 22:31:47
    Hallo!

    Ich brauche mal wieder Eure Hilfe. In meinem Shop gibt es viele Attribute. Ich möchte nun die "Template Datei" im Adminbereich ändern. Es geht um die Seite, wo ich im Adminbereich die Bestellung ansehen kann. (orders.php). Diese Seite möchte ich ändern. Leider finde ich diese nicht im Ordner templates/xtc5/admin

    Wo kann ich diese Datei finden, um einen weiteren Wert anzeigen zu lassen?

    Ich hoffe, dass ich die Frage verständlich formulieren konnte.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=30768.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #1 am: 31. Juli 2014, 22:52:34
    Ich bin jetzt schon etwas weiter.
    Ich habe in der Datei orders.php folgendes gefunden:

    Code: PHP  [Auswählen]
              if (isset($order->products[$i]['attributes']) && sizeof($order->products[$i]['attributes']) > 0) {
                for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j ++) {
                  $model = xtc_get_attributes_model($order->products[$i]['id'], $order->products[$i]['attributes'][$j]['value'],$order->products[$i]['attributes'][$j]['option'],$lang); //web28 Fix attribute model  language problem
                  echo !empty($model) ? $model.'<br />' : '<br />';
    Nun möchte ich dies

    <img src="http://www.xxx.de/images/originale/{$item_data.MODEL}.jpg"

    dort einfügen. Hat da jemand eine Idee?

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #2 am: 01. August 2014, 08:44:23
    {$item_data.MODEL} ist ein Smarty-Tag. Du redest aber vom Admin. Da gibt es kein Smarty. Im Admin kannst du einfach Ausgaben per echo machen, also nach deiner geposteten Zeile 4 z.B.
    Code: PHP  [Auswählen]
    echo !empty($model) ? '<img src="http://www.xxx.de/images/originale/'.$model.'.jpg" alt=""/><br/>' : '';

    $model ist außerdem die Artikelnummer, nicht die EAN.

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #3 am: 01. August 2014, 09:04:44
    Vielen Dank!

    Ich habe die Zeile jetzt so geändert:

    Code: PHP  [Auswählen]
    echo '<br /><nobr><i>&nbsp; - '.$order->products[$i]['attributes'][$j]['option'].': '.$order->products[$i]['attributes'][$j]['value'].'</i></nobr> '.'<img src="http://www.xxx.de/images/originale/'.$model.'.jpg"';

    Ich bekomme jetzt auch eine Anzeige. Jedoch wird das Bild nicht geladen. Wenn ich mir die Grafikinfo anzeigen lasse steht dort http://www.xxx.de/images/originale/.jpg. Es fehlt also die Umsetzung der Artikelnummer.

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #4 am: 01. August 2014, 10:09:14
    Oder muss das hier hin:

    Code: PHP  [Auswählen]
    echo !empty($model) ? $model.'<br />' : '<br />';

    ??? :silly:

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #5 am: 01. August 2014, 11:35:28
    Zu wenig Code. :glaskugel: sagt: Du benutzt $model bevor du es definierst.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.992
    • Geschlecht:
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #6 am: 01. August 2014, 14:49:23
    Sowohl die EAN der Produkte als auch die EAN deren Attribute sind nicht in den entsprechenden Tabellen vorhanden (orders_products und orders_products_attributes).
    Die in der /admin/orders.php angezeigten Werte kommen aber genau von da und zwar aus der class order (/includes/classes/order.php) aus dem Array $products.

    Um also an die EAN für beispielsweise die Attribute zu kommen müsstest/könntest du in diesem Code der genannten class
    Code: PHP  [Auswählen]
              $attributes_query = xtc_db_query("SELECT *
                                                  FROM "
    . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . "
                                              WHERE orders_id = '"
    . $order_id . "'
                                              AND orders_products_id = '"
    . $orders_products['orders_products_id'] . "'
                                              ORDER BY orders_products_attributes_id"
    ); //ADD - web28 - 2010-06-11 - order by orders_products_attributes_id
            if (xtc_db_num_rows($attributes_query)) {
              while ($attributes = xtc_db_fetch_array($attributes_query)) {
                $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options'],
                                                                         'value' => $attributes['products_options_values'],
                                                                         'prefix' => $attributes['price_prefix'],
                                                                         'price' => $attributes['options_values_price']);

    in der $attributes_query ein join auf die Tabelle products_attributes machen um an die EAN zu kommen und das Array products[$index]['attributes'][$subindex] entsprechend erweitern.
    Das müsste etwa so aussehen:
    Code: PHP  [Auswählen]
              $attributes_query = xtc_db_query("SELECT opa.*, pa.attributes_ean
                                                  FROM "
    . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " opa
                                             LEFT JOIN "
    . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                                    ON pa.products_id = '"
    .$orders_products['products_id'] ."' AND pa.options_values_id = opa.orders_products_options_values_id
                                              WHERE opa.orders_id = '"
    . $order_id . "'
                                              AND opa.orders_products_id = '"
    . $orders_products['orders_products_id'] . "'
                                              ORDER BY opa.orders_products_attributes_id"
    ); //ADD - web28 - 2010-06-11 - order by orders_products_attributes_id
            if (xtc_db_num_rows($attributes_query)) {
              while ($attributes = xtc_db_fetch_array($attributes_query)) {
                $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options'],
                                                                         'value' => $attributes['products_options_values'],
                                                                         'prefix' => $attributes['price_prefix'],
                                                                         'price' => $attributes['options_values_price'],
                                                                         'ean' => $attributes['attributes_ean']);

    NICHT GETESTET !

    Bekommen wüdest du den Wert für die Attribut-EAN dann in der /admin/orders.php so:
    Code: PHP  [Auswählen]
    $order->products[$i]['attributes'][$j]['ean']

    Gruß,
    noRiddle

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #7 am: 01. August 2014, 18:35:23
    So jetzt die Lösung für alle. Sie passt nur leider nicht bei mir. Aber in einem unveränderten Shop funktioniert es.
    In der orders.php die Zeile 621 so ändern:

    Code: PHP  [Auswählen]
    echo !empty($model) ? $model.'<img src="'.HTTP_CATALOG_SERVER."/".DIR_WS_IMAGES.'originale/'.$model.'.jpg" <br />' : '<br />';

    Die Bilder die angezeit werden sollen, haben die Artikelnummer als Namen.

    Bei mir geht das leider nicht! Ich habe bei mir den Produkt Attribute-Manager with jQuery 2.0 - MS - V1.06 verbaut. Das Feld EAN habe ich missbraucht, in dem ich dort die Bezeichnung von dem Attribut eigegeben habe. Dieses habe ich dann im Table_listining eingefügt. Um diese Bezeichnung auch im Warenkorb und in der Bestellbestätigungsmail zu haben, hatte ich irgendwo dieses Feld EAN an die Artikelnummer gehangen.

    Nun ist das Ergebnis das: www.example.com/images/originale/123456Hoseblau.jpg

    Da mein Bild jedoch 123456.jpg heisst, wird es natürlich nicht angezeigt. Jetzt heisst es suchen, wo ich es geändert habe. Da habe ich wohl noch zu tun.

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #8 am: 01. August 2014, 22:29:34
    AUFTRAG ZU VERGEBEN!

    Wir brauchen jemanden, der es realisiert! Ich bekomme es nicht hin!

    Hat jemand Lust?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.992
    • Geschlecht:
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #9 am: 02. August 2014, 14:55:28
    Hallo lullifatz.
    Verstehe ich das richtig, du hast in der DB in der Tabelle products_attributes im Feld attributes_model bereits die Artikelnummer inkl. des Eintrages aus dem EAN-Feld stehen ?
    Oder wird das später zusammengebaut und steht in der DB noch getrennt ?

    Falls erstes der Fall ist könntest du, insofern die Artikelnummern lediglich aus Zahlen bestehen und die Einträge im EAN-Feld lediglich aus Buchstaben bestehen, folgendes machen:
    Mache in der /admin/orders.php aus der Definition von $model aus diesem
    Code: PHP  [Auswählen]
    $model = xtc_get_attributes_model($order->products[$i]['id'], $order->products[$i]['attributes'][$j]['value'],$order->products[$i]['attributes'][$j]['option'],$lang);

    das hier
    Code: PHP  [Auswählen]
    $model_raw = xtc_get_attributes_model($order->products[$i]['id'], $order->products[$i]['attributes'][$j]['value'],$order->products[$i]['attributes'][$j]['option'],$lang);
    $model = preg_replace('#[^0-9]#', '', $model_raw);

    Damit würden alle Nicht-Ziffern mit "nichts" ersetzt, oder besser mit einem leeren String.
    Für dein Beispiel heißt das, daß aus 123456Hoseblau.jpg 123456.jpg würde.

    Im zweiten Fall schau dir mal de Funktion /inc/xtc_get_attributes_model.php an, evtl. wurde dort das Zusammensetzen der Artikelnummer mit der EAN gemacht.

    Gruß,
    noRiddle

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #10 am: 02. August 2014, 16:33:34
    Das Zweite ist der Fall. Die Daten stehen in der Datenbank in zwei verschiedenen Spalten. Die Zusammensetzung erfolgt tatsächlich in der xtc_get_attributes_model.inc.php

    Code: PHP  [Auswählen]
    return $options_attr_data['attributes_model'] . $options_attr_data['attributes_ean'];

    Das habe ich in meiner Unwissenheit so gemacht, damit die Beschreibung Hose blau auch im Warenkorb, auf der checkout_cofirmation und in der Mail steht. Bei unseren Produkten ist es wichtig, dass der Kunde genau sieht was er tatsächlich bestellt.
    Also müsste ich diese Anzeige ändern.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.992
    • Geschlecht:
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #11 am: 02. August 2014, 17:48:04
    Ich bekomme leider keine Benachrichtigungen mehr vom modified-Forum wenn ich in einem Thread "subscribed" bin, muß also immer nachschauen.
    Habe das Team informiert aber bislang keine Rückmeldung erhalten.

    ...
    Das habe ich in meiner Unwissenheit so gemacht, damit die Beschreibung Hose blau auch im Warenkorb, auf der checkout_cofirmation und in der Mail steht.
    ...

    Verstehe ich nicht. Die Attribute werden doch per Default sowohl im Warenkorb als auch auf den folgenden wichtigen Seiten angezeigt. Ebenso in der Bestellbestätigung.
    Da hast du irgendwas verbastelt.

    Bis du das gefixt hast kannst du auch für diesen Fall meinen Vorschlag anwenden.
    xtc_get_attributes_model() gibt ja bei dir den zusammengesetzten String aus.

    Mein Vorschlag geht aber nur wenn zutrifft was ich geschrieben habe:
    "...insofern die Artikelnummern lediglich aus Zahlen bestehen und die Einträge im EAN-Feld lediglich aus Buchstaben bestehen..."

    Gruß,
    noRiddle

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #12 am: 02. August 2014, 21:48:16
    Ich habe mich anscheinend wieder nicht richtig ausgedrückt! Man kann die Attribute normal anlegen. Wie z. B. Hose, Henmd, T-Shirt... / Farbe blau, gelb, grün..

    Das habe ich bei mir so nicht gemacht! Es gibt bei uns sehr sehr sehr viele Attribute. Es gibt kaum zweimal das gleiche Attribut. Deshalb habe ich im Feld EAN das Attribut reingeschrieben. Nun musste ich dieses Feld mit dem Attribute (attributes_ean) im Warenkorb usw. ausgeben.

    Das hatte ich dann damit geschafft:

    Code: PHP  [Auswählen]
        return $options_attr_data['attributes_model'] . $options_attr_data['attributes_ean']

    Die Artikelnummern bestehen aus Zahlen und . und - also z. B. 123-55.123

    lullifatz

    • Fördermitglied
    • Beiträge: 474
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #13 am: 02. August 2014, 22:40:15
    Ich muss das ganze jetz noch korrigieren.

    Ich habe jetzt mal in der xtc_get-attributes_model.inc.php das

    Code: PHP  [Auswählen]
    . $options_attr_data['attributes_ean']

    entfernt.
    Es fehlt mit die Beschriebung (attributes_ean) eigentlich nur in der Mail und in der Bestellbearbeitung im Admin. Aber auch dies brauche ich dort. Das Bild ist dann aber da!

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.992
    • Geschlecht:
    Re: Admin EAN in der Bestellung anzeigen
    Antwort #14 am: 03. August 2014, 02:01:50
    Ich hatte schon verstanden.
    Trotzdem sollte in der /admin/orders.php folgender Code enthalten sein:
    Code: PHP  [Auswählen]
              if (isset($order->products[$i]['attributes']) && sizeof($order->products[$i]['attributes']) > 0) {
                for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j ++) {
                  echo '<br /><nobr><i>&nbsp; - '.$order->products[$i]['attributes'][$j]['option'].': '.$order->products[$i]['attributes'][$j]['value'].'</i></nobr> '; //web28- 2010-03-21 - format correction
                }
              }

    um die Option und ihren Value im Backend in der Bestellung darzustellen,
    also, um bei deinem Beispiel zu bleiben: Farbe: grün (oder blau oder....).

    In der Bestellbestätigung (= /templates/YOUR_TEMPLATE/mail/order_mail.html oder ~.txt) sieht es so aus:
    Code: XML  [Auswählen]
    {if $order_values.PRODUCTS_ATTRIBUTES !=''}{$order_values.PRODUCTS_ATTRIBUTES}{/if}

    womit dort ebenfalls stünde: Farbe: grün (oder blau oder....).

    Wofür also benötigst du die Angabe mit dem "Trick" über die EAN ?

    Irgendwie erklärst du dich nicht richtig.
    Die Aussage
    "Es gibt bei uns sehr sehr sehr viele Attribute. Es gibt kaum zweimal das gleiche Attribut. Deshalb habe ich im Feld EAN das Attribut reingeschrieben."
    ist nicht ausreichend ursächlich ausgedrückt.
    Die Tatsache, daß Ihr sehr sehr viele Attribute habt läßt nicht auf das schließen was du schreibst.

    Ich jedenfalls komme da nicht mit und ich halte mich nicht für einen unlogischen Denker (womit ich natürlich irren kann).

    Gruß,
    noRiddle
    46 Antworten
    15364 Aufrufe
    25. August 2022, 22:10:12 von Q
    4 Antworten
    2193 Aufrufe
    12. September 2016, 17:37:53 von Glera77
    11 Antworten
    6898 Aufrufe
    03. Juni 2010, 20:04:11 von sinuspower
    15 Antworten
    7753 Aufrufe
    11. August 2014, 22:54:57 von blitzfreak