Overloading von Produktinfos

Thema wurde von Cyrus (LeGong), 21. Oktober 2014 erstellt.

  1. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    die werden in der Datenbank in der Tabelle PRODUCTS gespeichert und erzeugt werden die im Adminbereicht --> Artikel/Kategorien --> Artikel bearbeiten.
    Wenn ich den ganzen original Code eingebe, dann platziere ich den Code auf zwei Stellen:

    PHP:
    $t_products_model $p_products_array[$i]['model'];
                
                
    // BOF CP
                
    $t_products_inhalt $p_products_array[$i]['inhalt'];
                
    // EOF CP
    PHP:
    $module_content[$i] = array(
                    
    'PRODUCTS_NAME' => $p_products_array[$i]['name'] . $mark_stock,
                    
    'PRODUCTS_QTY' => xtc_draw_input_field('cart_quantity[]'gm_convert_qty($p_products_array[$i]['quantity'], false), ' size="2" onblur="gm_qty_is_changed(' $p_products_array[$i]['quantity'] . ', this.value, \'' GM_QTY_CHANGED_MESSAGE '\')"''text'true"gm_cart_data gm_class_input") . xtc_draw_hidden_field('products_id[]'$p_products_array[$i]['id'], 'class="gm_cart_data"') . xtc_draw_hidden_field('old_qty[]'$p_products_array[$i]['quantity']),
    ...
    ...
    'PRODUCTS_INHALT' => $t_products_inhalt,
    ...
    ...
    'PRODUCTS_ID' => $gm_products_id,
                    
    'UNIT' => $p_products_array[$i]['unit_name']
                );
     
  2. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    Ich habe den Fehler gefunden.

    dein Code:
    PHP:
    <?php
    class mx_OrderDetailsCartContentView extends mx_OrderDetailsCartContentView_parent
    {
      function 
    get_html($p_products_array)
      {
        
    //Save $p_products_array for build_html
        
    $this->p_products_array=$p_products_array;
        return 
    parent::get_html($p_products_array);
      }

      function 
    build_html()
      {
        
    //Get $module_content prepared by "get_html" so far
        
    $module_content=$this->get_content_array();
        
    $module_content=$module_content['module_content'];
        
    //Loop over saved products array and add my data to the $module_content entries
        
    foreach ($this->p_products_array as $index=>$product)
        {
          
    $module_content[$index]['PRODUCTS_INHALT']=$product['products_inhalt'];
        }
        
    //Save new $module_content entries
        
    $this->set_content_data('module_content'$module_content);
        return 
    parent::build_html();
      }
    }
    ?>
    Nun, entfernt man das Wort "products" von $products['products_inhalt'], also:
    PHP:
    {
          
    $module_content[$index]['PRODUCTS_INHALT']=$product['inhalt'];
        }
    dann funktioniert es.
     
  3. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Na prima.

    Hätte mich sonst auch gewundert....:cool:

    Sieht doch jetzt sehr viel hübscher aus, als das Codegrab bisher....

    Und updatesicher ist das auch.

    So geht Overloading!

    Aber Gambio muss einfach mehr "Hooks" vorsehen, damit man, gerade in Loops für die Datengenerierung, innerhalb des Loops seine eigenen Daten einfach in Overload-Methoden einbringen kann.
     
  4. Mick-D

    Mick-D Erfahrener Benutzer

    Registriert seit:
    13. August 2012
    Beiträge:
    207
    Danke erhalten:
    12
    Danke vergeben:
    20
    #64 Mick-D, 3. Mai 2015
    Zuletzt bearbeitet: 3. Mai 2015
    die Datei gibt es da bei mir nicht ...

    Gruß Michael

    Shop Version 2.2.x.x
     
  5. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    #65 Cyrus (LeGong), 3. Mai 2015
    Zuletzt bearbeitet: 3. Mai 2015
    dann suche mal unter shop-ordner/includes/classes/product.php

    P.S:
    Denk daran, dass diese Datei ist überladbar und dadurch ein Stück Updatessicher. Anleitung auch in diesem Thred
     
  6. Mick-D

    Mick-D Erfahrener Benutzer

    Registriert seit:
    13. August 2012
    Beiträge:
    207
    Danke erhalten:
    12
    Danke vergeben:
    20
    Hi Cyrus,
    danke für den "Hinweis" ;)

    Wenn ich die Änderungen direkt in die "product.php" einfüge, kann ich im Bereich Admin->Artikel/Kategorien
    Artikeländerungen speichern.

    Wenn ich die Updatesichere "cp_product.inc.php" im Verzeichnis /user_classes/overloads/product/ ablege, zeigt der Shop keine Bilder mehr an.

    Entferne ich die "cp_product.inc.php" wieder, werden die Bilder ganz normal angezeigt.
    (Habe die Imagefunktion von Avenger eingebaut "On the Fly Image")

    In der "cp_product.inc.php" steht folgender Code:
    PHP:
     <?php
    class cp_product extends cp_product_parent
    {
      function 
    buildDataArray(&$array$image 'thumbnail')
      {
        global 
    $xtPrice$main;
        
        
    $t_data_array=parent::buildDataArray($array$image);
        
    //Additional info in $t_data_array
        
    $t_data_array['PRODUCTS_UVP']=$array['products_uvp'];
        
    //Additional info in $t_data_array
        
    return $t_data_array;
      }
    }
    ?>
    hast Du vieleicht eine Idee woran das liegen kann ...

    Gruß Michael
     
  7. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    hast du auch in user_classes/overloads/OrderDetailsCartContentView.inc.php?
    wenn ja, was hast du da im Code?
    Und wo soll dieser Extra-Feld gezeigt werden?
    Übrigens das Problem habe ich nicht. Vieleicht hast du in HTML-Datei was falsch eingegeben?
     
  8. Mick-D

    Mick-D Erfahrener Benutzer

    Registriert seit:
    13. August 2012
    Beiträge:
    207
    Danke erhalten:
    12
    Danke vergeben:
    20
    Nein die "user_classes/overloads/OrderDetailsCartContentView.inc.php" habe ich noch nicht eingebaut.

    Das Extrafeld soll "überall" angezeigt werden (Kategorien/Artikelübersicht (Listen- und Kachelansicht), Artikel Detailansicht, Startseite, Angebote etc.)

    Gruß Michael

    P.S.: in der Kategorie Listen- und Kachelansicht wird der Wert aus dem Extrafeld auch nicht gezogen...
     

    Anhänge:

  9. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    #69 Cyrus (LeGong), 3. Mai 2015
    Zuletzt bearbeitet: 3. Mai 2015
  10. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.474
    Danke erhalten:
    11.263
    Danke vergeben:
    1.607
    Ich muss auch nochmal anfangen :(
    Erst hatte ich die Anzeige in der Listen / Kachelansicht in den Kategorien und auf der Startseite; aber nicht bei Cross-Selling oder bei "Kunden kauften auch".
    Jetzt habe ich die Anzeige auf der Startseite und im Cross-Selling sowie bei "Kunden kauften auch", aber nicht mehr in den Kategorien.
     
  11. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    Hallo Barbara,
    meinst du damit, dass die Anzeige in den Kategorien verschwunden ist?
     
  12. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.474
    Danke erhalten:
    11.263
    Danke vergeben:
    1.607
    Ja, genau.
    So sieht das auf der Starseite aus:
    Unbenannt.JPG

    So bei Ebenfalls gekauft:
    Unbenannt-1.JPG

    Und wenn ich die Kategorie aufrufe ist es so:
    Unbenannt2.JPG

    Seltsamer weise wird die Artikelnummer die ich gleichzeitig eingebaut habe angezeigt, :confused:
     
  13. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    @Barbara,
    an welche Dateien hast du geschraubt? Und was hast du ganz genau geändert oder erweitert?
     
  14. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.474
    Danke erhalten:
    11.263
    Danke vergeben:
    1.607
    Ich vermute einen Fehler in der
    system/ classes/ listing/ ProductListingContentControl.inc.php
    bzw. in dem Overload.
    Das werde ich mir nochmal genauer ansehen.
     
  15. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.474
    Danke erhalten:
    11.263
    Danke vergeben:
    1.607
    #75 barbara, 4. Mai 2015
    Zuletzt bearbeitet: 4. Mai 2015
    Ich bin nochmal weiter.
    Wenn ich diesen Code
    (Link nur für registrierte Nutzer sichtbar.)
    in einer usr_classes/ overload schreibe, habe ich die Anzeige in der Kategorie,
    aber es werden in der 1. Kategorie nicht die Artikel der Unterkategorie angezeigt.

    Nachtrag:
    es liegt an dieser Zeile:
    public function extend_proceed($p_action)

    Nachtrag 2:
    ich bekomme die Anzeige der Extrafelder nicht, wenn ich die originale Datei bearbeite.:confused:
    Kann doch eigentlich nicht sein.
     
  16. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    Meinst du damit die Artikel der Unterkategorie zeigen keine Extrafelder? Wenn ja, dann hast du was falsch eingegeben, da ich nur mit Unterkategorien arbeite und keine Artikel in der Kategorie oberste Stufe habe.
    unterkat.png

    Diese hier ist die kategorie Gewürze, die ist eine Unterkategorie der Kategorie Produkte. Allerdings ich habe keine Kachelansicht.
     
  17. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.474
    Danke erhalten:
    11.263
    Danke vergeben:
    1.607
    Hallo Cyrus,

    Ich erkläre das mal an einem Beispiel:
    Es gibt die Kategorie "Reduzierte Artikel" und darin die beiden Unterkategorien "Restposten" und "B-Ware"
    Öffne ich "Reduzierte Artikel" sehe Ich die beiden Unterkategorien und die Artikel aus den Unterkategorien.

    Wenn ich jetzt die
    system/ classes/ listing/ ProductListingContentControl.inc.php
    überlade, dann ist in "Reduzierte Artikel" die Anzeige der Artikel aus den Unterkategorien weg. Rufe ich aber die Unterkategorie "Restposten" auf, ist alles richtig mit Extrafeldern.

    Ich löse da jetzt ganz einfach, indem ich einige Artikel in die obere Kategorie verlinke.
    Dann ist die Seite nicht so leer und ich kann das ein bisschen steuern :)
     
  18. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.474
    Danke erhalten:
    11.263
    Danke vergeben:
    1.607
    Ich habe es mit der Datei:
    user_classes/ overloads/ ProductListingContentControl/ extrafeld_ProductListingContentControl.inc.php

    Der Filter funktioniert mit der Datei auch nicht.
    Das habe ich gerade in einem frischen Shop Version 2.2.0 getestet (ohne die Zeile p.products_inhalt)


    Dank Cyros sieht die Datei jetzt so aus:
    Code:
    <?php
    
     class extrafeld_ProductListingContentControl extends extrafeld_ProductListingContentControl_parent
     {
      public function extend_proceed($p_action)
        {
            $t_uninitialized_array = $this->get_uninitialized_variables(array(    'current_category_id',
                                                                                'customer_country_id',
                                                                                'customer_zone_id',
                                                                                'customers_fsk18_display',
                                                                                'customers_status_id',
                                                                                'languages_id',
                                                                                'show_price_tax',
                                                                        ));
            
    
                $this->sql_query = "SELECT DISTINCT p.products_fsk18,
                                                p.products_shippingtime,
                                                p.products_model,
                                                p.products_inhalt,
                                                p.products_ean,
                                                pd.products_name,
                                                m.manufacturers_name,
                                                p.products_quantity,
                                                p.products_image,
                                                p.products_image_w, 
                                                p.products_image_h,
                                                p.products_weight,
                                                p.gm_show_weight,
                                                pd.products_short_description,
                                                pd.products_description,
                                                pd.gm_alt_text,
                                                pd.products_meta_description,
                                                p.products_id,
                                                p.manufacturers_id,
                                                p.products_price,
                                                p.products_vpe,
                                                p.products_vpe_status,
                                                p.products_vpe_value,
                                                p.products_discount_allowed,
                                                p.products_tax_class_id
                                                " . $t_select_part . "
                                            FROM
                                                " . TABLE_PRODUCTS . " p
                                                LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " AS pd ON (pd.products_id = p.products_id)
                                                LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " AS ptc ON (ptc.products_id = p.products_id)
                                                LEFT JOIN " . TABLE_MANUFACTURERS . " AS m ON (m.manufacturers_id = p.manufacturers_id)
                                                LEFT JOIN " . TABLE_SPECIALS . " AS s ON (s.products_id = p.products_id)
                                                " . $t_from_part . "
                                            WHERE
                                                p.products_status = 1 AND
                                                pd.language_id = '" . $this->languages_id . "' AND
                                                ptc.categories_id = '" . $this->current_category_id . "'
                                                " . $t_where_part . "
                                                " . $t_group_check . "
                                                " . $t_fsk_lock . "
                                                " . $t_sorting;
                                        return $t_uninitialized_array;
            
        }
     }
    ?>
    Hat jemand eine Idee woran das liegen könnte, bzw. wie man "p.products_inhalt" anders einfügt?
     
  19. Timo (Gambio)

    Timo (Gambio) Administrator

    Registriert seit:
    23. Juni 2011
    Beiträge:
    1.688
    Danke erhalten:
    651
    Danke vergeben:
    46
    Hi,

    anbei findest du einen Overload "der eigentlich funktionieren müsste" von einem netten Kollegen... ;)

    Ich selber kenne den Overload nicht und kann daher leider keinen Support leisten.


    PS: War wohl doch ein Bug drin. Soeben eine neue Version hochgeladen.
     

    Anhänge:

  20. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    Hallo Timo,
    ich habe die Datei soeben getestet. Es funktioniert leider nicht. Es meldet "USER ERROR (256), SQL Error".