Inhalt aus Extra-Datenfeldern im Checkout anzeigen

Thema wurde von barbara, 11. Juli 2012 erstellt.

  1. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.452
    Danke erhalten:
    11.253
    Danke vergeben:
    1.606
    Um eigene Datenfelder, wie z.B. Inhalt, im Checkout anzuzeigen,
    müssen in folgenden Dateien Anpassungen gemacht werden:

    /lang/german/sections/samples/checkout_convirmation.lang.inc.php
    /checkout_confirmation.php
    templates/EyeCandy/module/checkout_confirmation_products.html

    Datensicherung bitte nicht vergessen!

    In der
    /lang/german/sections/samples/checkout_convirmation.lang.inc.php
    Code:
    'text_products_inhalt' => 'Inhalt',
    am Ende einfügen und in /lang/german/sections kopieren

    in der /checkout_confirmation.php
    nach
    PHP:
    $t_products_item = array(
            
    'products_name'        => '',
            
    'quantity'            => '',
            
    'price'                => $xtPrice->xtcFormat($order->products[$i]['price'], true),
            
    'final_price'        => '',
            
    'shipping_status'    => '',
            
    'attributes'        => '',
            
    'flag_last_item'    => false,
            
    'PROPERTIES'        => $t_properties,
            
    'properties_array'    => $t_properties_array,
            
    'products_image'    => (!empty($coo_product_item->data['gm_show_image']) && !empty($coo_product_item->data['products_image'])) ? DIR_WS_THUMBNAIL_IMAGES $coo_product_item->data['products_image'] : '',
            
    'products_vpe_array' => get_products_vpe_array($order->products[$i]['id'], $order->products[$i]['price'], $t_options_values_array),
            
    'products_alt'        => (!empty($coo_product_item->data['gm_alt_text'])) ? $coo_product_item->data['gm_alt_text'] : $order->products[$i]['name'],
            
    'checkout_information' => $coo_product_item->data['checkout_information'],
            
    'products_url'        => xtc_href_link('request_port.php''module=ProductDetails&id=' $order->products[$i]['id'], 'SSL'),    
            
    'products_model'    => $t_products_model,
            
    'products_weight'    => $t_products_weight,
            
    'shipping_time'        => $t_shipping_time,
            
    'DATA_ARRAY'        => $coo_product_item->data
        
    );
    suchen und unter die Zeile 'products_weight'...
    PHP:
    'products_inhalt'    => $coo_product_item->data['products_inhalt'],
    einfügen
    zum Schluss in der templates/EyeCandy/module/checkout_confirmation_products.html
    nach der Zeile
    HTML:
    {if $products_item_array.products_weight}
    				<br />{$info.text_weight}: {$products_item_array.products_weight}{$info.text_weight_unit}
    			{/if}
    HTML:
    {if $products_item_array.products_inhalt}
    				<br />{$info.text_products_inhalt}: {$products_item_array.products_inhalt}
    			{/if}
    einfügen.
    Caches leeren

    Ich hoffe es haben sich keine Fehler eingeschlichen.
    Wie immer auf eigene Gefahr
     
  2. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Das kann man sich jetzt alles sparen.....

    Seit dem letzten Button-Update wird jetzt auch das in die Template-Daten übergeben:

    PHP:
    'DATA_ARRAY' => $coo_product_item->data
    D.h., die Smarty-Variable "DATA_ARRAY" enthält alle Daten-Felder das Artikels!

    Mit
    PHP:
    {$products_item_array.DATA_ARRAY.products_inhalt}
    sollte man das denn auch haben...
     
  3. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.452
    Danke erhalten:
    11.253
    Danke vergeben:
    1.606
    #3 barbara, 11. Juli 2012
    Zuletzt bearbeitet: 11. Juli 2012
    Da primelt Frau Stunden an einer Lösung...und dann kommt Avenger und zeigt, dass es ganz einfach ist :)

    Avengers Lösung gehört in die /template/eyeCandy/module/checkout_confirmation_products.html
    einfach an gewünschter Stelle einfügen. Wenn man noch ein <br /> davor setzt, ist der Wert auch in einer eigenen Zeile.

    Kleiner Schönheitsfehler: es wird nur der Wert ausgegeben. also z.B. 100ml
    und nicht die Beschriftung, also z.B. Inhalt: 100ml
     
  4. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Dann musst Du den Text hat selbst davor stellen, Du weißt ja, was der Wert bedeuten soll.
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.452
    Danke erhalten:
    11.253
    Danke vergeben:
    1.606
    Du weißt nicht zufällig wie ich die Anzeige in die neue product_deteils Seite bekomme, oder?
     
  6. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.452
    Danke erhalten:
    11.253
    Danke vergeben:
    1.606
    Wer die Datenfelder auch in den neuen "Produkt Details" (öffnet sich in der Lightbox, wenn "alle Detail-Informationen zum Produkt" angeklickt wird) anzeigen möchte, muss zwei Dateien anpassen. Beide Dateien lassen sich als Usermod updatesicher speichern

    In der /system/views/product_info/ProductDetailsContentView.ink.php
    nach diese Zeile (fast ganz unten)
    Code:
    $this->set_content_data('PRODUCTS_QUANTITY', gm_prepare_number($t_quantity, $xtPrice->currencies[$xtPrice->actualCurr]['decimal_point']));
    diese Zeile einfügen:
    Code:
    $this->set_content_data('PRODUCTS_INHALT', $coo_product->data['products_inhalt']);
    und in der /templates/EyeCandy/module/product_deteils.html
    an gewünschter Stelle
    Code:
    {if $PRODUCTS_INHALT}
    	<dt>{$txt.text_products_inhalt}</dt>
    	<dd>{$PRODUCTS_INHALT}</dd>
    	{/if}
    einfügen.
    Caches leeren.

    wie immer auf eigene Gefahr
     
  7. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Es ist sehr schade, dass so wenige sich die tollen neuen Möglichkeiten von Gambio zu Nutze machen, um ihren Shop updatesicher zu halten....

    Das kann man nämlich sehr viel eleganter und präziser lösen:

    Folgende Routine als "user_classes\overloads\ProductInfoContentView\pt_fulldata_ProductInfoContentView.inc.php" speichern:

    PHP:
    <?php
    /*
    Copyright (c) 2012 Avenger, entwicklung@powertemplate.de
    Overload class for method "get_html" of "ProductInfoContentView" class.

    Add products information codes to template data

    Store as "user_classes\overloads\ProductInfoContentView\pt_fulldata_ProductInfoContentView.inc.php"
    */

    class pt_fulldata_ProductInfoContentView extends pt_fulldata_ProductInfoContentView_parent
    {
      function 
    get_html($p_coo_product$p_current_category_id 0)
      {
        
    //Store complete products object in template data
        //$this->set_content_data('PRODUCTS_OBJECT', $p_coo_product);
        
        //Store complete products data in template data
        //$this->set_content_data('PRODUCTS_DATA', $p_coo_product->data);
        
        //Store one products value in template data
        //$this->set_content_data('PRODUCTS_INHALT', $p_coo_product->data['products_inhalt']);;
        
    return parent::get_html($p_coo_product$p_current_category_id);
      }
    }
    ?>
    Je nachdem, was man erreichen will, kann man eine der vorigen "$this->set_content_data'"-Anweisungen entkommentieren,

    Der große Vorteil dieses Ansatzes ist, dass nicht die komplette "ProductInfoContentView.inc.php" geändert wird, sondern nur das dazu gebracht wird, was nötig ist.

    Das ist nicht nur updatesicher, sondern man braucht das bei neuen Releases auch nicht jedes Mal überprüfen, ob das auch noch passt.

    Und übersichtlicher ist es allemal.
     
  8. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Auch die UPC???
     
  9. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Nein, diese Product Information Codes sind da nicht drin
     
  10. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Shitt, wie bekomme ich diese upc auf die Bestätigungsseite?
     
  11. walterkanis

    walterkanis Aktives Mitglied

    Registriert seit:
    20. September 2011
    Beiträge:
    33
    Danke erhalten:
    1
    Danke vergeben:
    15
    Hallo Avenger,
    habe den Pfad und Code angelegt.
    Bekomme aber Fehlermeldungen:
    Parse error: syntax error, unexpected T_STRING, expecting '{' in /var/www/vhosts/kanis-augen.eu/httpdocs/system/core/ClassOverloadRegistry.inc.php(131) : eval()'d code on line 1

    Fatal error: Class 'pt_fulldata_ProductInfoContentView_parent' not found in /var/www/vhosts/kanis-augen.eu/httpdocs/user_classes/overloads/ProductInfoContentView/pt_f ulldata_ProductInfoContentView.inc.php on line 11
    Was muß ich da noch ändern? Mein PHP ist recht mäßig.

    Vielen Dank, schon mal
    Walter
     
  12. Gerd Schoolmann

    Gerd Schoolmann Erfahrener Benutzer

    Registriert seit:
    23. August 2012
    Beiträge:
    165
    Danke erhalten:
    23
    Danke vergeben:
    21
    Guten Morgen Walter,

    Du hast in Deiner "ClassOverloadRegistry.inc.php" ganz am Anfang eine '{' vergessen.

    Gruß
    Gerd