Inhalt aus Extra-Datenfeldern im Checkout anzeigen

Dieses Thema im Forum "Tutorials & Anleitungen" wurde erstellt von barbara, 11. Juli 2012.

  1. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.679
    Zustimmungen:
    11.401
    Gegebene Danke:
    1.619
    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
    Zustimmungen:
    1.478
    Gegebene Danke:
    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.679
    Zustimmungen:
    11.401
    Gegebene Danke:
    1.619
    #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
    Zustimmungen:
    1.478
    Gegebene Danke:
    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.679
    Zustimmungen:
    11.401
    Gegebene Danke:
    1.619
    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.679
    Zustimmungen:
    11.401
    Gegebene Danke:
    1.619
    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
    Zustimmungen:
    1.478
    Gegebene Danke:
    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
    Zustimmungen:
    1.466
    Gegebene Danke:
    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
    Zustimmungen:
    1.478
    Gegebene Danke:
    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
    Zustimmungen:
    1.466
    Gegebene Danke:
    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
    Zustimmungen:
    1
    Gegebene Danke:
    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
    Zustimmungen:
    23
    Gegebene Danke:
    21
    Guten Morgen Walter,

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

    Gruß
    Gerd