Artikelzusatzfelder und Artikelnummer in der Kategorieansicht

Thema wurde von Anonymous, 22. Januar 2018 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Hallo Zusammen,
    ist es möglich die Artikelzusatzfelder und Artikelnummern von Gambio in der Kategorieansicht darstellen zu lassen?
    Das würde mir meine Arbeit extrem ersparen.
    Aktuell gebe ich diese Angaben händisch in der Artikelkurzbeschreibung ein.
    Das birgt aber Fehlerquellen bei Änderungen oder Neueinstellungen.

    Vielen Dank für Eure Mühen
     
  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Hallo Barbara,
    vielen Dank. Das hat schon einmal gut funktioniert.
    Wie hast du die Zusatzfelder auf die Kategorieseite bekommen?
    Man müsste doch eigentlich nur die Variabeln für die Extrafelder kennen und könnte diese dann doch durch deine Datei mit einschleusen oder sehe ich das falsch?
     
  4. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    Du musst die Daten in der Kategorie zur Verfügung stellen.

    Bei mir sind das eigene Extrafelder, die in der Tabeller "products" stehen.
    Ich habe dem Shop gesagt "Fülle die Variable 'size' mit den Werten aus der Tabelle products - Spalte size.

    Bei den Shopeigenen Feldern stehen die Daten in 3 verschiedenen "additional..." Tabellen
    Das bedeutet, du müsstest der Kategorie sagen:
    fülle die Variable xy mit dem Wert aus Tabelle a, wenn in Tabelle b die Product-ID steht und in Tabelle c die Werte verknüpft sind (das ist jetzt nicht ganz korrekt, umschreibt aber das Problem :D )

    Meine minimalen PHP-Kenntnisse reichen dafür nicht aus.
    Vielleicht findet sich ja jemand, der das kann.

    Ich verstehe allerdings nicht, warum Gambio das nicht in den Kategorien einbaut
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    #5 Anonymous, 23. Januar 2018
    Zuletzt bearbeitet: 23. Januar 2018
    Ich habe noch ein bisschen wegen dem Verpackungsinhalt rumprobiert. Ich möchte gerne den Verpackungsinhalt (z.B. 2 Stück) mit anzeigen lassen.

    loktest.PNG

    Dazu habe ich folgende änderungen vorgenommen:

    PHP:
    //Additional info in $t_data_array
             
    $t_data_array['PRODUCTS_MODEL']=$array['products_model'];
    wurde erweitert

    PHP:
     //Additional info in $t_data_array
             
    $t_data_array['PRODUCTS_MODEL']=$array['products_model'];
             
    $t_data_array['PRODUCTS_VPE_VALUE']=$array['products_vpe_value'];
             
    $t_data_array['PRODUCTS_UNIT_NAME']=$array['unit_name'];
    Dann habe ich weiter unten die SQL Abfrage noch angepasst, um den Namen der Verpackungseinheit rauszukriegen.

    Von vorher

    Code:
         $t_query = "SELECT
                 p.products_fsk18,
                 p.products_id,
                 p.products_price,
                 p.products_tax_class_id,
                 p.products_image,
                 p.products_model,
                 pd.gm_alt_text,
                 pd.products_name,
                 pd.products_meta_description,
                 p.products_vpe,
                 p.products_vpe_status,
                 p.products_vpe_value,
                 pd.products_short_description
               FROM
                 " . TABLE_ORDERS_PRODUCTS . " opa,
                 " . TABLE_ORDERS_PRODUCTS . " opb,
                 " . TABLE_ORDERS . " o,
                 " . TABLE_PRODUCTS . " p,
                 " . TABLE_PRODUCTS_DESCRIPTION . " pd,
               WHERE
                 opa.products_id = '" . $this->pID . "'
                 AND opa.orders_id = opb.orders_id
                 AND opb.products_id != '" . $this->pID . "'
                 AND opb.products_id = p.products_id
                 AND opb.orders_id = o.orders_id
                 AND p.products_status = '1'
                 AND pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
                 AND opb.products_id = pd.products_id
                 AND o.date_purchased > DATE_SUB(NOW(),INTERVAL " . MAX_DISPLAY_ALSO_PURCHASED_DAYS . " DAY)
                 " . $group_check . "
                 " . $fsk_lock . "
               GROUP BY
                 p.products_id
               ORDER BY
                 o.date_purchased desc
               LIMIT
                 " . MAX_DISPLAY_ALSO_PURCHASED;

    Auf nachher

    Code:
    $t_query = "SELECT
                 p.products_fsk18,
                 p.products_id,
                 p.products_price,
                 p.products_tax_class_id,
                 p.products_image,
                 p.products_model,
                 pd.gm_alt_text,
                 pd.products_name,
                 pd.products_meta_description,
                 p.products_vpe,
                 p.products_vpe_status,
                 p.products_vpe_value,
                 qud.unit_name,
                 pd.products_short_description
               FROM
                 " . TABLE_ORDERS_PRODUCTS . " opa,
                 " . TABLE_ORDERS_PRODUCTS . " opb,
                 " . TABLE_ORDERS . " o,
                 " . TABLE_PRODUCTS . " p,
                 " . TABLE_PRODUCTS_DESCRIPTION . " pd,
                 " . TABLE_QUANTITY_UNIT_DESCRIPTION . " qud
               WHERE
                 opa.products_id = '" . $this->pID . "'
                 AND opa.orders_id = opb.orders_id
                 AND opb.products_id != '" . $this->pID . "'
                 AND opb.products_id = p.products_id
                 AND qud.quantity_unit_id = p.products_vpe
                 AND opb.orders_id = o.orders_id
                 AND p.products_status = '1'
                 AND pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
                 AND opb.products_id = pd.products_id
                 AND o.date_purchased > DATE_SUB(NOW(),INTERVAL " . MAX_DISPLAY_ALSO_PURCHASED_DAYS . " DAY)
                 " . $group_check . "
                 " . $fsk_lock . "
               GROUP BY
                 p.products_id
               ORDER BY
                 o.date_purchased desc
               LIMIT
                 " . MAX_DISPLAY_ALSO_PURCHASED;
    Dadurch wird auf der Kategorieseite schon einmal der Verpackungsinhaltswert ausgegeben, aber nicht die Einheit.

    Aber dadurch kann ich nicht mehr auf die Produktdetailseiten zugreifen. Dort gibt es mir einen SQL Error aus.

    Code:
    2018-01-23 11:14:37 (fd181f26fd26767f7dd218db98bf9b0b) WARNING(2): "include_once(): Failed opening '/kunden/169516_14165/webseiten/admin/testumgebungen/jtl/GXUserComponents/overloads/product/model_product.inc.php' for inclusion (include_path='.:/usr/local/lib/php')" in /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/system/core/MainFactory.inc.php(42) : eval()'d code:11
    
    #6    File: /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/system/core/MainFactory.inc.php(42) : eval()'d code:11
    
    
    #5    File: /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/system/core/MainFactory.inc.php(42) : eval()'d code:11
    
        Function: include_once
    
    #4    File: /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/system/core/MainFactory.inc.php:42
    
        Function: eval
        Code:
    │    line 40:         if(array_key_exists($cacheFileName, $mainFactoryCache))
    │    line 41:         {
    ├─    line 42:             eval($mainFactoryCache[$cacheFileName]);
    │    line 43:      
    │    line 44:             return;
    
    #3    File: /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/system/core/MainAutoloader.inc.php:104
    
        Class: MainFactory
        Method: load_origin_class('product', '/kunden/169516_14165/webseiten/admin/testumgebungen/jtl/includes/classes/product.php')
            - $p_class_name: 'product'
            - $p_class_path: '/kunden/169516_14165/webseiten/admin/testumgebungen/jtl/includes/classes/product.php'
    
        Code:
    │    line 102:         {
    │    line 103:             $t_mapped_class_path = $this->v_frontend_classes_array[$p_class];
    ├─    line 104:             MainFactory::load_origin_class($p_class, $t_mapped_class_path);
    │    line 105:         }
    │    line 106:         else
    
    #2
    
        Class: MainAutoloader
        Method: load('product')
            - $p_class: 'product'
    
    
    #1    File: /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/includes/application_top.php:1218
    
        Function: spl_autoload_call('product')
            - $class_name: ### indeterminate value ###
    
        Code:
    │    line 1216: elseif (isset($_GET['products_id'])) {
    │    line 1217:     $actual_products_id = (int) $_GET['products_id'];
    ├─    line 1218:     $product = new product($actual_products_id, $t_language_id);
    │    line 1219:
    │    line 1220: }
    
    #0    File: /kunden/169516_14165/webseiten/admin/testumgebungen/jtl/product_info.php:28
    
        Function: require_once('/kunden/169516_14165/webseiten/admin/testumgebungen/jtl/includes/application_top.php')
        Code:
    │    line 26:   --------------------------------------------------------------------------------------- */
    │    line 27:
    ├─    line 28: require_once('includes/application_top.php');
    │    line 29:
    │    line 30: if($_GET['action'] == 'get_download')
    
    Request: GET /LGB-SOEG-Dampflok-Ik.html
        - duration: ~613ms
        - server: Apache/2.4.27
        - server address: 134.119.145.25
        - user agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
        - remote address: fd181f26fd26767f7dd218db98bf9b0b
    
    Session:
        - tpl: Honeygrid
        - MOBILE_ACTIVE: false
        - language: german
        - languages_id: 2
        - language_charset: utf-8
        - language_code: de
        - currency: EUR
        - customers_status: Array
            (
                [customers_status_id] => 0
                [customers_status_name] => Admin
                [customers_status_image] => admin_status.gif
                [customers_status_public] => 0
                [customers_status_min_order] => 0
                [customers_status_max_order] => 0
                [customers_status_discount] => 100.00
                [customers_status_ot_discount_flag] => 0
                [customers_status_ot_discount] => 0.00
                [customers_status_graduated_prices] => 1
                [customers_status_show_price] => 1
                [customers_status_show_price_tax] => 1
                [customers_status_add_tax_ot] => 1
                [customers_status_payment_unallowed] =>
                [customers_status_shipping_unallowed] =>
                [customers_status_discount_attributes] => 1
                [customers_fsk18] => 1
                [customers_fsk18_display] => 1
                [customers_status_write_reviews] => 1
                [customers_status_read_reviews] => 1
            )
     
        - cart: shoppingCart Object
            (
                [contents] => Array
                    (
                        [562] => Array
                            (
                                [qty] => 1.0000
                            )
     
                    )
     
                [total] => 2.99
                [weight] => 0
                [cartID] => 24910
                [content_type] =>
                [tax] => Array
                    (
                        [1] => Array
                            (
                                [value] => 0.47739495798319
                                [desc] => inkl. 19% MwSt.
                            )
     
                    )
     
            )
     
        - wishList: wishList Object
            (
                [contents] => Array
                    (
                    )
     
                [total] => 0
                [weight] => 0
                [cartID] =>
                [content_type] =>
            )
     
        - customer_id: 2
        - payment: ### Session entry not present ###
        - shipping: ### Session entry not present ###
        - cartID: ### Session entry not present ###
        - sendto: ### Session entry not present ###
        - billto: ### Session entry not present ###
    
    Get:
        - gm_boosted_product: LGB-SOEG-Dampflok-Ik
        - products_id: 3550
    
    Aus dem Log werde ich leider auch nicht schlauer :/

    Hat jemand da noch eine Idee?

    Vielen vielen Dank
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Hallo Barbara,
    vielen Dank für deine mühe. Das habe ich mir schon anhand deiner Datei selber zusammengedacht. Den Post über mir hatte ich aus versehen in ein falsches Thema eingestellt und jetzt hierher verschoben.

    Leider funktioniert die Erweiterung der SQL Abfrage in der Datei nicht zufriedenstellend. Das Ergebnis ist dann zwar eine halbwegs funktionierende Kategorieansicht, aber eine kaputte Produktdetailseite (SQL Error)

    Habe extra alle Codes gepostet, vielleicht erkennt ja wer was dazu.
     
  7. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    VPE = Grundpreisangabe.
    Die wird automatsich beim Preis angezeigt, wenn man sie einschaltet
     
  8. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Ja das stimmt schon, aber wenn ich z. B. einen Artikel habe der aus 3 Stück besteht kann ich ja in der Artikelverwaltung eingeben (3 Stück).
    Dann berechnet er mir den Einzelpreis. Wenn ich dann noch das Häkchen setze wird das auch vorne angezeigt. Allerdings steht dann da nur xx € pro Stück oder ähnliches.
    Ich möchte dem Kunden gerne anzeigen, das 3 Artikel geliefert werden, wenn er 1 bestellt.
    Und dafür möchte ich das products_vpe_value Feld gerne benutzen, um die Daten nicht doppelt anlegen zu müssen.
     
  9. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    Verstehe....keine schlechte Idee.
    Ich teste mal etwas....
     
  10. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    Für die VPE_Value wäre es kein Problem, aber unit_name ....
    Das ist wieder so ein Ding. Das geht auch über verschiedene Tabellen und IDs....
    Hast Du denn unterschiedliche Mengenangaben dabei?
    Wenn es immer "Stück" ist, könnte man das dazuschreiben
     
  11. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Ja habe verschiedene. Aber in der SQL Abfrage unten habe ich das korrekt ergänzt. Habe die Abfrage einfach so in phpmyadmin eingegeben und einen korrekten Wert bekommen. Vielleicht braucht dieser aber ein bestimmtes Präfix, um zu funktionieren. Also nicht nur unit_name sondern xxx_unit_name
     
  12. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    Der Shop muss wissen, in welcher Tabelle er das findet und wie er das dem Artikel zuordnet.
    Ich probiere noch etwas weiter, vielleicht denke ich gerade auch nur zu kompliziert :D
     
  13. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    Ich bekomme die Anzeige nicht rein :(
    Sehr merkwürdig, da alle anderen Felder kommen....

    Ich werde das morgen noch einmal in einem anderen Testshop probieren.
     
  14. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Ich danke dir wirklich sehr :)
    Habe mir auch noch die Finger wund geschrieben, aber komme zu keinem plausiblen Ergebnis, warum er die unit_name nicht anzeigen mag :/
     
  15. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Ich habe hier die Dateien gefunden, wo der SQL Befehl für die Zusatzfelder schon gut zu sehen ist. Das versuche ich gerade in deine Datei einzufummeln. Funktioniert nur noch nicht so gut

    system/classes/products/AdditionalField.inc.php
    system/classes/products/AdditionalFieldContentView.inc.php
    system/classes/products/AdditionalFieldControl.inc.php
    system/classes/products/AdditionalFieldValue.inc.php
     
  16. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    33.555
    Danke erhalten:
    10.407
    Danke vergeben:
    1.497
    Ich vermute, dass er nicht weiß wo er die herholen soll.

    In Deinem Error-Log steht was von JTL, Bist Du in einer jtl-Testumgebung oder so?
     
  17. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Jaein, also das ist ein Testshop von mir, der für die JTl Wawi herhalten soll. Diese hat aber nicht mehr damit zu tun.

    Mir ist nebenbei etwas aufgefallen:
    In der Datei von dir steht in der Datei unten folgender Block:
    Code:
    opa.products_id = '" . $this->pID . "'
     AND opb.products_id != '" . $this->pID . "'
    Das heißt doch, dass es gar kein Ergebnis geben kann, wenn opa.products_ID ungleich opb.products_is sein soll oder sehe ich das falsch?

    Wenn ich das ändere bekomme ich zumindest bei phpmyadmin ein Ergebnis

    sqlabfrage.PNG
     
  18. JCC_User

    JCC_User Mitglied

    Registriert seit:
    19. November 2018
    Beiträge:
    16
    Danke erhalten:
    0
    Hey, Pascal

    mal aus Interesse, hast du es geschafft die Zusatzfelder in der Artikelübersicht darzustellen? Ich benötige diese Option ebenfalls und kann nicht wirklich etwas dazu finden
     
  19. Koll

    Koll Erfahrener Benutzer

    Registriert seit:
    8. Dezember 2018
    Beiträge:
    53
    Danke erhalten:
    2
    Danke vergeben:
    23
    Nach oben schieb...
     
  20. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    248
    Danke erhalten:
    31
    Danke vergeben:
    127
    Oh, das habe ich total übersehen, danke fürs erinnern.
    Meint Ihr das so wie hier?
    (Link nur für registrierte Nutzer sichtbar.)

    Ich habe ehrlich gesagt ganz vergessen, wenn ich das manuell eingefügt habe. Aber vielleicht habe ich da noch Dateien zu.

    So sieht das im Admin Bereich aus:
     

    Anhänge: