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
Hallo Pascal, für die Artikelnummer gibt es eine Anleitung: (Link nur für registrierte Nutzer sichtbar.) Für die Gambio-Eigenen Zusatzfelder habe ich noch keine Anleitung gesehen, das wurde aber auch noch nicht gefragt.
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?
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 ) 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
Ich habe noch ein bisschen wegen dem Verpackungsinhalt rumprobiert. Ich möchte gerne den Verpackungsinhalt (z.B. 2 Stück) mit anzeigen lassen. 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
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.
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.
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
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
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
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.
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 :/
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
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?
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
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
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: