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: EAN Nummer in checkout confirmation

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    EAN Nummer in checkout confirmation
    am: 30. Juni 2014, 16:48:29
    Hallo Zusammen,

    habe folgendes Problem:
    Ich würde gerne in der checkout_confirmation die EAN anzeigen lassen, die ich bei den Attributen vergeben habe. Bekomme es aber leider nicht hin sie dort verfügbar zu machen. Mit dem {debug} bekomme ich prefix,price_formated, model ect. alles angezeigt nur nicht die EAN. Sie scheint also gar nicht als Variable vorzuliegen. Hat jemand ne Ahnung wo ich mir die herholen kann bzw. wo ich was assignen muss damit das hin haut?

    Wär fantastisch wenn jemand mir auf die Sprünge helfen könnte.

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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.975
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #1 am: 30. Juni 2014, 19:17:46
    Die Daten für die Attribute der Artikel in der checkout_confirmation werden aus der class order (/includes/classes/order.php) geholt und dort aus der DB-Tabelle orders_products_attributes.
    Dort liegt die EAN aber nicht vor.
    Die EAN steht in der Tabelle products_attributes und könnte mittels entsprechender Query und WHERE-Clause dieser Art geholt werden:
    Suche in der o.g. Klasse das
    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']);

            $subindex++;
        }
    }

    und ersetze es hiermit (Datei vorher sichern!)
    Code: PHP  [Auswählen]
    //BOC get also attrinutes_ean, noRiddle
    $attributes_query = xtc_db_query("SELECT opa.*, pa.attributes_ean
                                        FROM "
    . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . "
                                   LEFT JOIN "
    . TABLE_PRODUCTS_ATTRIBUTES . "
                                          ON opa.orders_products_options_values_id = pa.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"
    );
    //EOC get also attrinutes_ean, noRiddle
    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'],
                                                                   'attr_ean' => $attributes['attributes_ean']); // das ist neu, noRiddle

            $subindex++;
        }
    }

    Damit müsstest du in der checkout_confirmation.html an gewünschter Stelle innerhalb der foreach-Schleife für die Attribute die EAN so ausgeben können:
    Code: XML  [Auswählen]
    {$attrib_data.attr_ean}

    Nicht getestet !

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: EAN Nummer in checkout confirmation
    Antwort #2 am: 02. Juli 2014, 00:46:07
    Erstmal vielen Dank für deine ausführliche Anleitung und deine Mühe!
    Leider funktioniert das nicht so ganz und ich hab keine Ahnung, ob in dem Schnipsel ein Fehler steckt oder woran es sonst liegt. Es scheint als kommt {$attrib_data.attr_ean} nicht in der checkout_confirmation.html an.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.975
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #3 am: 02. Juli 2014, 13:44:50
    error_reporting aktivieren.
    Du hast 1.06 ? (hab's vergessen)

    Gruß,
    noRiddle

    web0null

    • Experte
    • Beiträge: 1.998
    Re: EAN Nummer in checkout confirmation
    Antwort #4 am: 02. Juli 2014, 13:51:33
    Du hast da was vergessen:
    Statt:
    Code: PHP  [Auswählen]
    FROM " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . "
    LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . "
    Dat:
    Code: PHP  [Auswählen]
    FROM " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " opa
    LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa

    Gruß

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.975
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #5 am: 02. Juli 2014, 13:55:09
    Upps, sorry, yes, danke, kommt davon wenn man mal eben was zusammenschreibt ohne zu testen.

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: EAN Nummer in checkout confirmation
    Antwort #6 am: 02. Juli 2014, 15:44:10
    Nochmal danke an euch beide für die Hilfe. Durch die Hinweis von web0null habe ich nun zumindest keine Fehlermeldung mehr wenn ich im Admin in die Bestellungen gehe. Die EAN ist in der checkout_confirmation.html aber leider immer noch nicht verfügbar. Habs in die foreach-Schleife reingeschrieben, hat aber leider keinen Effekt. Hab ihr noch eine Idee?

    Achja...geht um einen 1.06 Shop, richtig. Die EAN gibt es soweit ich weiß ja erst ab der Version in den Attributen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.975
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #7 am: 02. Juli 2014, 15:45:47
    Gib mal den Code (in code-tags) deines Templates.

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: EAN Nummer in checkout confirmation
    Antwort #8 am: 02. Juli 2014, 15:51:31
    Bin nicht sicher ob es das ist was du meinst:

    Code: PHP  [Auswählen]
     {foreach key=a_data item=attrib_data from=$data.attributes}
    {$attrib_data.attr_ean}
      {/foreach}
     

    FutureSell

    • Neu im Forum
    • Beiträge: 37
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #9 am: 02. Juli 2014, 16:07:09
    Hey,

    Datei: includes/classes/order.php

    suchen nach:
    Code: PHP  [Auswählen]
              while (list($option, $value) = each($products[$i]['attributes'])) {
                $attributes = $main->getAttributes($products[$i]['id'],$option,$value);
                $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options_name'],
                                                                         'value' => $attributes['products_options_values_name'],
                                                                         'option_id' => $option,
                                                                         'value_id' => $value,
                                                                         'prefix' => $attributes['price_prefix'],
                                                                         'price' => $attributes['options_values_price'],
                                                                         'price_formated' => $xtPrice->xtcFormat($attributes['options_values_price'], true)
                                                                         );
                $subindex++;
              }
     

    ändern in:

    Code: PHP  [Auswählen]
              while (list($option, $value) = each($products[$i]['attributes'])) {
                $attributes = $main->getAttributes($products[$i]['id'],$option,$value);
                $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options_name'],
                                                                         'value' => $attributes['products_options_values_name'],
                                                                         'option_id' => $option,
                                                                         'value_id' => $value,
                                                                         'prefix' => $attributes['price_prefix'],
                                                                         'price' => $attributes['options_values_price'],
                                                                         'price_formated' => $xtPrice->xtcFormat($attributes['options_values_price'], true),
                                                                         'attr_ean' => $attributes['attributes_ean'] // attributes ean code                                                                    
                                                                         );
                $subindex++;
              }
     

    Datei: templates/xtc5/module/checkout_confirmation.html
    (Ausgehend vom Standard Modified Template)
    suchen nach:
    Code: PHP  [Auswählen]
            {foreach key=a_data item=attrib_data from=$data.attributes}
              {if $attrib_data.value != ''}<br /><span class="nobr small">&nbsp;<i> - {$attrib_data.option} : {$attrib_data.value}</i></span>{/if}          
            {/foreach}
     

    Innerhalb der {if} Abfrage die Variable  {$attrib_data.attr_ean} an die gewünschte Position setzen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.975
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #10 am: 02. Juli 2014, 16:29:05
    In der Tat, danke FutureSell. Da war ich wohl im verkehrten Array.
    Allerdings verwirrt mich jetzt die order class aber ein wenig.
    Warum gibt's denn in der function query() und in der function cart() jeweils die $this->product Arrays,
    die auch noch leicht voneinander abweichen.
    Da ist doch was faul.

    Gruß,
    noRiddle

    FutureSell

    • Neu im Forum
    • Beiträge: 37
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #11 am: 02. Juli 2014, 16:38:08
    Die query-Function holt die Werte der fertigen Bestellung aus den Orders-Tables, wohingegen die cart-Funktion mit den Werten der Session arbeitet + Kundenadresse aus den Customer-Tables.

    Die query-Function ist daher nur für fertige Bestellungen (wie u.a. auch im Backend genutzt), die cart-Function hingegen für den Weg zur fertigen Bestellung.

    Code: PHP  [Auswählen]
          if (xtc_not_null($order_id)) {
            $this->query($order_id);
          } else {
            if(!defined('RUN_MODE_ADMIN')) {
              $this->cart();
            }
          }
     

    Aber nichts desto trotz würde sich das deutlich vereinfachen lassen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.975
    • Geschlecht:
    Re: EAN Nummer in checkout confirmation
    Antwort #12 am: 02. Juli 2014, 16:46:03
    Verstehe, der Code den du da zitierst ist mir noch nie aufgefallen, wieder was gelernt.
    Danke dir.

    In der Tat hoffe ich, daß in der 2.0 die order class mal überarbeitet wird/wurde.

    Gruß,
    noRiddle
    4 Antworten
    4404 Aufrufe
    11. April 2012, 11:04:45 von Konfusion
    15 Antworten
    11103 Aufrufe
    21. Juli 2009, 01:25:01 von Oine
    5 Antworten
    4005 Aufrufe
    18. Februar 2010, 10:51:31 von Tomcraft
    6 Antworten
    3466 Aufrufe
    18. September 2014, 13:11:47 von Mercatura-IT.de