Der Thread zu Extra Felder für Artikel Detailansicht und Artikel Listenansicht ist ziemlich unübersichtlich geworden. Daher hat man mich gefragt diese Themen wieder neu und verständlicher zu erfassen. Zugleich habe ich die Gelegenheit genutzt diese erweiterungen passend für die Versionsreihe 2.3.x.x zu machen. Besonderes Dankeschön an: Barbara, Marco (Gambio) und Avenger, die in der Entwicklung dieser Erweiterung aktiv sehr geholfen haben. Zusatz-Felder Für Artikeldetailseite Vorwort Zusatzfelder sollen den Kunden Informationen zur Verfügung stellen, die über das Standard Gambio nicht vorhanden sind. Zum Beispiel der Inhalt eine Flasche Olivenöl, oder eine Flasche Parfum. Die Zusatzfelder können je nach Gestaltung bildlich, tabellarisch oder anderes dargestellt werden. Hier 2 Darstellungsbeispiele: oder bildlich Darstellung: Ob man die Extra-Felder braucht oder nicht und wie viele Extra-Felder benötigt sind, ist von den angebotenen Produkten abhängig. Daher bevor man diese Felder einsetzt, sollte man sich im Klaren sein ob man sie braucht und wenn ja wie viele Extra-Felder man braucht. Im Laufe der Zeit haben mehrere Personen an die notwendigen Änderungen gearbeitet um das Ganze so effektiv und Updatessicher wie möglich zu ermöglichen. Trotz aller Mühe, da sind Elemente in dem Shopware Gambio, die nicht Updatessicher veränderbar sind. Also, wenn man die Extra-Felder braucht, dann muss man auch bei jedem Update darauf achten, dass diese Änderungen nicht beim Update verloren gehen. Im Laufe der Anleitung werden wir es erwähnen, welche Dateien Updatessicher und welche Dateien NICHT Updatessicher sind. Anleitung für Gambio GX_2.1.x.x und GX_2.2.x.x Versionen: Hier wird Schritt für Schritt die Vorgehensweise beschrieben: 1: Planen Sie im Voraus die Zusatz-Felder, die Sie für Ihre Produkte benötigen. Wenn Sie sich nicht ganz sicher sind, lesen Sie das Ganze einmal durch, das könnte bei der Entscheidung hilfreich sein. 2: Wenn Sie die Möglichkeit haben, machen Sie sich erst eine Testumgebung und testen Sie es da bevor Sie es auf einen Live-Shop ausüben. 3: Legen Sie immer erst eine Sicherung des Shop-Ordners an. 4: Eine Sicherung der Shop-Datenbank ist auch genauso wichtig wie eine Sicherung des Shop-Ordners. Die Dateien im Shop-Ordner funktionieren ohne Shop-Datenbank nicht. Denken Sie daran, dass wir Ihnen kein Erfolg garantieren können und akzeptieren wir keine Haftung. Sie machen alles auf Ihr eigenes Risiko. Falls Sie keine oder wenig Ahnung von Programmieren haben, lassen Sie sich dieser Vorhaben von einem fachlich Kompetenter Person ausführen. Es gibt genug Personen im Forum, die das beruflich machen, und die auch wissen was sie machen. Es kostet nicht viel. 5: Wie immer, Sie führen die Änderungen auf eigene Risiko aus. Jetzt zu dem eigentlichen Vorhaben: Datenbank erweitern: 1: Die Tabelle „Produkte“ in der Datenbank muss um die Zahl der benötigten Felder erweitert werden, z.B. Sie brauchen 2 Extra-Felder, die jeweils durch maximal 30 Zeichen beschrieben sind. In der PHPMyAdmin Ihrer Webserver oder im Shop Adminbereich unter Toolbox à SQL folgende Anweisung ausführen: Code: [FONT="]ALTER TABLE `products`[/FONT] [FONT="]ADD `products_inhalt`VARCHAR(30) NOT NULL, [/FONT] [FONT="]ADD `products_herkunft` VARCHAR(30) NOT NULL;[/FONT] ACHTUNG: Der letzte „ADD“ Anweisung endet mit ( ; ). Die Zahl in Klammern legt die Anzahl der Zeichen fest VARCHAR ( 30 ) = maximal 30 Zeichen. Man kann diese Zahl je nach seinem Bedarf bis 255 Zeichen eingeben. Die Begriffe „inhalt und herkunft“ müssen Sie mit dem Namen Ihrer Felder ersetzen. DIESE ÄNDERUNG IST UPDATESSICHER UND GILT FÜR ALLE GX2 VERSIONEN: Sprachdateien erweitern: 2: Nun werden die Feldbezeichnungen in Sprachdateien eingetragen. Dazu kopieren Sie die Datei lang__german__admin__categories___php.lang.inc.php, die in dem Verzeichnis /Shop-Ordner/lang/german/sections/_samples/ liegt und speichern Sie sie in dem Verzeichnis /Shop-Ordner/lang/german/sections/. Also eine Verzeichnis-Ebene höher. Nun wird die Datei wie unten beschrieben geändert und nochmals gespeichert: Suchen Sie sich eine beliebige Stelle in der Mitte der Datei und fügen Sie den folgenden Code ein. Dabei müssen Sie aufpassen, dass Kommas oder andere PHP-Zeichen richtig eingesetzt werden nur der Code in ROT muss eingefügt werden: PHP: // BOF products_extrafield 'TEXT_PRODUCTS_INHALT' => 'Inhalt:', 'TEXT_PRODUCTS_HERKUNFT' => 'Herkunft:', // EOF products_extrafield Nun wiederholen Sie diesen Schritt für alle anderen Sprachen. DIESE ÄNDERUNG IST UPDATESSICHER 3: Nun wird die Datei: /SHOP-Ordner/lang/german/sections/_samples/product_info.lang.inc.php kopiert und in dem Verzeichnis /SHOP-Ordner/lang/german/sections/ gespeichert. Die gespeicherte Datei wird wie folgt geändert, nur der Code in ROT muss eingefügt werden: PHP: // BOF products_extrafield 'text_products_inhalt' => 'Inhalt:', 'text_products_herkunft' => 'Herkunft:', // EOF products_extrafield Nun wiederholen Sie diesen Schritt für alle anderen Sprachen. DIESE ÄNDERUNG IST UPDATESSICHER Die Artikelbearbeitung im Adminbereich um die benötigten Felder erweitern: 4: Nun wird die Datei /SHOP-ORDNER/ admin/includes/modules/new_product.php geändert. Am Bestens vor der Änderung speichert man die Datei unter ORIGINAL_new_product.php. Durch diese Änderung werden die Eingabe Felder für unsere Extra-Felder in der Maske Artikelbearbeiten eingefügt. In dieser Datei suchen Sie nach: (Bei mir ist es ca. Zeile 920) HTML: <td><?php echo $coo_text_mgr->get_text('label_availability') ?>:</td> <td> <?php echo xtc_draw_pull_down_menu('google_export_availability_id', $t_google_export_availability_array, $pInfo->google_export_availability_id, 'style="width: 130px"'); ?> <small><?php echo $coo_text_mgr->get_text('label_google_export_only') ?></small> </td> </tr> <?php } ?> </table> </td> </tr> </table> und fügen Sie danach: HTML: <!-- products_extrafield beginn --> <table bgcolor="#f3f3f3" style="border:1px solid;border-color:#cccccc;margin-top:10px;" width="100%" border="0"> <tr> <td> <table class="main" border="0" width="100%"> <tr> <td style="font-size:14px;font-weight:bold;">Extra-Felder<br><br></td> </tr> <table class="main" bgcolor="#DEDEDE" border="0" width="100%" align="left"> <tr> <td style="font-size:14px;font-weight:bold;color:#7A7A7A;">Allgemein<br><br></td> </tr> <tr> <td><?php echo TEXT_PRODUCTS_INHALT; ?></td> <td><?php echo xtc_draw_input_field('products_inhalt', $pInfo->products_inhalt,'style="width: 125px"') ; ?></td> </tr> <tr> <td><?php echo TEXT_PRODUCTS_HERKUNFT; ?></td> <td><?php echo xtc_draw_input_field('products_herkunft', $pInfo->products_herkunft,'style="width: 125px"') ; ?></td> </tr> </table> </table> </td> </tr> </table> <!-- products_extrafield end --> Jetzt wenn man die Seiten Cache und Modul Cache leeren würde musste man unter AdminbereichàArtikelàArtikel/KategorienàArtikel bearbeiten seine neue Felder bereits sehen können. DIESE ÄNDERUNG IST LEIDER NICHT UPDATESSICHER UND DAHER DIE BETROFFENE DATEI MUSS BEI JEDER UPDATE NACH EVENTUELLE ÄNDERUNGEN KONTROLLIERT UND ANGEPASST WERDEN. 5: Damit die Daten, die man in Extra-Felder eingibt auch gespeichert werden muss man ein neues Verzeichnis und eine neue Datei erzeugen. (Also die Datei categories.php überladen). Öffnen Sie das Verzeichnis: /Shop-Ordner/user_classes/overloads und fügen Sie ein neues Verzeichnis Namens „categories“ ein. Der Name muss in kleine Buchstaben geschrieben sein. In diesem Verzeichnis fügen Sie eine PHP-Datei mit dem Namen: „extrafield_categories.inc.php ein. In dieser Datei fügen Sie den folgenden Code ein: PHP: <?php class extrafield_categories extends extrafield_categories_parent { public function insert_product($products_data, $dest_category_id, $action = 'insert') { $products_id = parent::insert_product($products_data, $dest_category_id, $action); // BOF products_extrafields $extra_data = array('products_inhalt' => xtc_db_input($products_data['products_inhalt']), 'products_herkunft' => xtc_db_input($products_data['products_herkunft'])); // EOF products_extrafields xtc_db_perform('products', $extra_data, 'update', 'products_id = \''.(int)$products_id.'\''); return $products_id; } function duplicate_product($src_products_id, $dest_categories_id) { $new_products_id = parent::duplicate_product($src_products_id, $dest_categories_id); // BOF products_extrafields $copy_extra_data_query = 'UPDATE `products` p LEFT JOIN `products` psrc ON psrc.products_id = \':src_products_id\' SET `p`.`products_inhalt`= `psrc`.`products_inhalt`, `p`.`products_herkunft`=`psrc`.`products_herkunft` WHERE `p`.`products_id` = \':new_products_id\' '; // EOF products_extrafield $copy_extra_data_query = strtr($copy_extra_data_query, array( ':src_products_id' => (int)$src_products_id, ':new_products_id' => (int)$new_products_id, ) ); xtc_db_query($copy_extra_data_query); return $new_products_id; } } Jetzt werden die Daten auch gespeichert. Diese Datei ist Updatessicher. 6: Damit die Felder auf der Artikeldetailseite angezeigt werden können, muss man ein neues Verzeichnis und eine neue Overload-Datei erzeugen. Öffnen Sie das Verzeichnis: /Shop-Ordner/user_classes/overloads und fügen Sie ein neues Verzeichnis Namens „ProductInfoContentView“ ein. Bitte achten Sie auf die genaue Schreibweise. In diesem Verzeichnis fügen Sie eine PHP-Datei mit dem Namen: „extrafield_ProductInfoContentView.inc.php ein. In dieser Datei fügen Sie den folgenden Code ein: PHP: <?php class extrafield_ProductInfoContentView extends extrafield_ProductInfoContentView_parent { function get_html($p_coo_product, $p_current_category_id = 0) { // BOF products_extrafield $this->set_content_data('PRODUCTS_INHALT', $p_coo_product->data['products_inhalt']); $this->set_content_data('PRODUCTS_HERKUNFT', $p_coo_product->data['products_herkunft']); // EOF products_extrafield return parent::get_html($p_coo_product, $p_current_category_id); } } ?> Jetzt werden die Daten auch für die Artikeldetailseite zur Verfügung stehen. Diese Datei ist bis Ende der Versionsreihe: GX2_v2.2.x.x Updatessicher. 8: Damit die Daten auch im Shop sichtbar werden müssen wir noch die Datei: /Shop-Ordner/templates/EyeCandy/module/product_info/standart.html ergänzen. Kopieren Sie die Datei standard.html und benennen Sie um auf „standard-USERMOD.html“ Nun suchen Sie im umbenannte Datei nach: HTML: {if $SHIPPING_NAME || $SHOW_SHIPPING_TIME} <dt>{$txt.text_shippingtime}</dt> <dd class="shipping_time">{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} <span class="products_shipping_time_value">{$SHIPPING_NAME}</span></dd> {/if} {if $PRODUCTS_QUANTITY > 0 || $SHOW_PRODUCTS_QUANTITY} <dt>{$txt.text_stock}</dt> <dd class="products_quantity"><span class="products_quantity_value">{$PRODUCTS_QUANTITY}</span> {if $PRODUCTS_QUANTITY_UNIT}{$PRODUCTS_QUANTITY_UNIT}{else}{$txt.text_pieces}{/if}</dd> danach fügen Sie den folgenden Code ein: HTML: <!-- BOF Extra-Felder --> {if $PRODUCTS_INHALT || $SHOW_PRODUCTS_INHALT} <dt>{$txt.text_products_inhalt}</dt> <dd class="products_inhalt">{$PRODUCTS_INHALT}</dd> {/if} {if $PRODUCTS_HERKUNFT || $SHOW_PRODUCTS_HERKUNFT} <dt>{$txt.text_products_herkunft}</dt> <dd class="products_herkunft">{$PRODUCTS_HERKUNFT}</dd> {/if} <!-- EOF Extra-Felder --> Damit werden die Extra-Felder wie im Bild 1 dargestellt. Die Darstellung von Extra-Felders nach Bild 2 ist etwas komplizierter da man das Design der Artikeldetailseite ändern muss um Platz für die bildliche Darstellung zu machen. Dazu schreibe ich hier nur den Code für die bildliche Darstellung der Extra-Felder. Die Änderung des Designs lasse ich sein, da es nicht zu diesem Thema gehört. Möchtet man die Extra-Felder wie im Bild 2 darstellen, dann muss man den folgenden Code eingeben: HTML: {if $PRODUCTS_INHALT || $SHOW_PRODUCTS_INHALT} <div class="ext_etik" style="background-image:url(images/extra04.png); background-size:contain; height: 40px; width:180px; line-height: 20px; font-weight: bold; margin-top: 0px"><div class="ext_etik_innen"> <span> {$PRODUCTS_INHALT}</span></div></div> {/if} {if $PRODUCTS_HERKUNFT || $SHOW_PRODUCTS_HERKUNFT} <div class="ext_etik" style="background-image:url(images/extra04.png); background-size:contain; height: 40px; width:180px; line-height: 20px; font-weight: bold; margin-top: 0px"><div class="ext_etik_innen"> <span> {$PRODUCTS_HERKUNFT}</span></div></div> {/if} Damit ist die Anleitung für Extra-Felder für Artikeldetailansicht vollbracht. Viel Erfolg
Nun werden die Extra Felder für den Artikellistenansicht erklärt: Zusatz-Felder Für Artikellistenansicht Für Artikellistenansicht müssen, falls noch nicht geschehen, die Schritte 1: Datenbank erweitern 2: Sprachdateien der Kategorie 4: Artikelbearbeitung 5: Overload für categories.php genommen werden. Nun die restlichen Schritte: 7: In dem Ordner „user_classes/overloads/ einen Ordner Namens „product“ erstellen. (Auf die richtige schreibweise achten). In dem Ordner „product“ eine PHP-Datei mit dem Namen „cp_product.inc.php“ und den Inhalt: PHP: <?phpclass 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_INHALT']=$array['products_inhalt']; $t_data_array['PRODUCTS_HERKUNFT']=$array['products_herkunft']; //Additional info in $t_data_array return $t_data_array; // EOF GM_MOD }} ?> erstellen und speichern. DIESE OVERLOAD IST UPDATESSICHER 8: In dem Ordner “user_classes/overloads/ einen neuen Ordner Namens “ProductListingContentControl“ erstellen. In diesem Ordner eine PHP-Datei mit dem folgenden Inhalt erstellen und als extrafeld_ProductListingContentControl.inc.php“ speichern: PHP: <?phpclass extrafeld_ProductListingContentControl extends extrafeld_ProductListingContentControl_parent{ public function getSelectFields() { $select_fields = array('p.products_inhalt', 'p.products_herkunft'); return $select_fields; } public function extend_proceed($p_action) { $t_sql = $this->sql_query; $select_fields = implode(",",$this->getSelectFields()); $t_sql = str_replace('FROM',','.$select_fields.' FROM',$t_sql); $this->sql_query = $t_sql; parent::extend_proceed($p_action); }} DIESE OVERLOAD IST UPDATESSICHER 9: Nun die Sprachdatei wird angelegt: Die Datei „lang/german/sections/_samples/product_listing.lang.inc.php“ kopieren und in dem Ordner „lang/german/sections/“ (Also eine Verzeichnisebene höher) speichern. In der Mitte Dieser Datei folgenden Code einfügen und speichern: PHP: // products_extrafield 'text_products_inhalt' => 'Inhalt:', 'text_products_herkunft' => 'Herkunft:',//EOF products_extrafield Diesen Schritt für alle anderen Sprachen wiederholen. DIESE DATEI IST UPDATESSICHER 10: Nun werden die Templates-Dateien angepasst: Die Datei „templates/EyeCandy/module/product_listing/product_listing_v1.html” kopieren und in demselben Ordner als product_listing_v1-USERMOD.html speichern. Nun in dieser Datei nach: HTML: {if $module_data.PRODUCTS_FSK18=='true'}<img src="{$tpl_path}img/fsk18.gif" alt="fsk18.gif" title="fsk18.gif" />{/if} </div> <div class="article-list-item-main"> <h2> <a href="{$module_data.PRODUCTS_LINK}" class="product_link"{if $module_data.PRODUCTS_META_DESCRIPTION != ''} title="{$module_data.PRODUCTS_META_DESCRIPTION|truncate:80:"..."|replace:'"':'"'}"{/if}>{$module_data.PRODUCTS_NAME}</a> </h2> <p>{$module_data.PRODUCTS_SHORT_DESCRIPTION}<br /> suchen und danach mit folgendem Code ergänzen: HTML: <!-- BOF products_extrafield --> {if $module_data.PRODUCTS_INHALT || $module_data.SHOW_PRODUCTS_INHALT} {$txt.text_products_inhalt} {$module_data.PRODUCTS_INHALT} {/if}<br /> {if $module_data.PRODUCTS_HERKUNFT || $module_data.SHOW_PRODUCTS_HERKUNFT} {$txt.text_products_herkunft} {$module_data.PRODUCTS_HERKUNFT} {/if}<br /> <!-- EOF products_extrafield --> Das war der „default“ Ansicht. 11: Nun wird die „Tiled“ Ansicht ergänzt: Die Datei „templates/EyeCandy/objects/product_box_list.html” kopieren und in demselben Ordner mit dem Namen “product_box_list-USERMOD.html” speichern. Diese Datei öffnen und nach folgenden Code suchen: HTML: {/if} </div> <div class="article-list-item-text"> <p class="title"><a href="{$module_data.PRODUCTS_LINK}"{if $module_data.PRODUCTS_META_DESCRIPTION != ''} title="{$module_data.PRODUCTS_META_DESCRIPTION|truncate:80:"..."|replace:'"':'"'}"{/if}>{$module_data.PRODUCTS_NAME|truncate:$content_data.TRUNCATE_PRODUCTS_NAME:"..."}</a></p> und mit folgendem Code erweitern: HTML: <!-- BOF products_extrafield --> {if $module_data.PRODUCTS_INHALT || $module_data.SHOW_PRODUCTS_INHALT} {$txt.text_products_inhalt} {$module_data.PRODUCTS_INHALT} {/if}<br /> {if $module_data.PRODUCTS_HERKUNFT || $module_data.SHOW_PRODUCTS_HERKUNFT} {$txt.text_products_herkunft} {$module_data.PRODUCTS_HERKUNFT} {/if}<br /> <!-- EOF products_extrafield --> Den Shop Cache und den Template-Cache leeren. Nun müssen die Extra Felder in Listenansicht sichtbar sein. Viel Erfolg
Nun die Änderungen für die Versionsreihe V2.3.x.x Zusatz-Felder Für Artikeldetailseite für GX2_2.3.x.x Für die Artikeldetailansicht müssen die Schritte 1: Datenbank erweitern 4: Artikelbearbeitung 5: Overload für categories.php wie oben beschrieben genommen werden. Nun die weitere notwendige Änderungen Schritt 2 für v.2.3.x.x Sprachdateien erweitern: Die Datei "lang/german/original_sections/product/product_info.lang.inc.php" kopieren. In dem Ordner "lang/german/user_sections/" einen Ordner Namens "product" erstellen und die Datei "product_info.lang.inc.php" in diesem Ordner speichern. Nun erweitern Sie diese Datei mit folgendem Code, irgendwo in der Mitte: [PHP] // BOF products_extrafield 'text_products_inhalt' => 'Inhalt:', 'text_products_herkunft' => 'Herkunft:', // EOF products_extrafield [/PHP][FONT="][FONT="]Den selben Schritt für die andere Sprachdateien wiederholen. [/FONT][/FONT] Schritt 3 für v.2.3.x.x Sprachdateien der Kategorie erweitern: In dem Ordner "lang/german/user_sections/" einen Ordner Namens "admin" erstellen. In diesem Ordner einen Ordner Namens "product" erstellen. Die Datei "lang/german/original_sections/admin/product/categories.lang.inc.php" kopieren und in dem erstellte "product" Ordner speichern. Diese Datei irgendwo in der Mitte folgendermaßen erweitern: PHP: // BOF products_extrafield 'TEXT_PRODUCTS_INHALT' => 'Inhalt:', 'TEXT_PRODUCTS_HERKUNFT' => 'Herkunft:', // EOF products_extrafield Nun sind die Sprachdateien fertig. [FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][B]Schritt [FONT="]6[/FONT] für v.2.3.x.x ProductInfoContentView [FONT="]überladen:[/FONT][/B][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT] Damit die Felder auf der Artikeldetailseite angezeigt werden können, muss man ein neues Verzeichnis und eine neue Overload-Datei erzeugen. Öffnen Sie das Verzeichnis: /Shop-Ordner/user_classes/overloads und fügen Sie ein neues Verzeichnis Namens „ProductInfoContentView“ ein. Bitte achten Sie auf die genaue Schreibweise. In diesem Verzeichnis fügen Sie eine PHP-Datei mit dem Namen: „extrafield_ProductInfoContentView.inc.php ein. In dieser Datei fügen Sie den folgenden Code ein: PHP: <?php/* -------------------------------------------------------------- extrafields_ProductsInfoContentView.inc.php 2015.06.24 Cyrus Micronix TCT info@micronix.de Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] based on: main.php Gambio OHG http://www.gambio.de Copyright (c) 2008 Gambio OHG Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- based on: (c) 2000-2001 The Exchange Project (earlier name of osCommerce) (c) 2002-2003 osCommerce(Coding Standards); www.oscommerce.com (c) 2005 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: main.php 1286 2005-10-07 10:10:18Z mz $) Released under the GNU General Public License ---------------------------------------------------------------------------------------*/ class extrafield_ProductInfoContentView extends extrafield_ProductInfoContentView_parent { function _assignProductData() { $this->_assignExtrafields(); return parent::_assignProductData(); } // assign new fields called Inhalt and Herkunft public function _assignExtrafields() { $this->set_content_data('PRODUCTS_INHALT', $this->product->data['products_inhalt']); $this->set_content_data('PRODUCTS_HERKUNFT', $this->product->data['products_herkunft']); } } ?> [FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][FONT="][B]Schritt [FONT="]7[/FONT] für v.2.3.x.x standard[FONT="].html[FONT="] als USERMOD überladen[/FONT][/FONT][FONT="]:[/FONT][/B][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT] Die Datei "templates/EyeCandy/module/product_info/standard.html" kopieren und als "standard-USERMOD.html" speicher. In dieser Datei nach folgenden Code suchen: HTML: {if $SHIPPING_NAME || $SHOW_SHIPPING_TIME} <dt>{$txt.text_shippingtime}</dt> <dd class="shipping_time">{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} <span class="products_shipping_time_value">{$SHIPPING_NAME}</span>{if $ABROAD_SHIPPING_INFO_LINK_ACTIVE} <a class="abroad_shipping_info_link lightbox_iframe" href="popup_content.php?coID={$smarty.const.SHIPPING_INFOS}&lightbox_mode=1">({$txt.text_abroad_shipping_info})</a>{/if}</dd> {/if} {if $PRODUCTS_QUANTITY || $SHOW_PRODUCTS_QUANTITY} <dt>{$txt.text_stock}</dt> <dd class="products_quantity"><span class="products_quantity_value">{$PRODUCTS_QUANTITY}</span> {if $PRODUCTS_QUANTITY_UNIT}{$PRODUCTS_QUANTITY_UNIT}{else}{$txt.text_pieces}{/if}</dd> {/if} und danach folgenden Code einfügen: HTML: <!-- BOF products_extrafield --> {if $PRODUCTS_INHALT || $SHOW_PRODUCTS_INHALT} <dt>{$txt.text_products_inhalt}</dt> <dd class="products_quantity">{$PRODUCTS_INHALT}</dd> {/if} {if $PRODUCTS_HERKUNFT || $SHOW_PRODUCTS_HERKUNFT} <dt>{$txt.text_products_herkunft}</dt> <dd class="products_quantity">{$PRODUCTS_HERKUNFT}</dd> {/if} <!-- EOF products_extrafield --> Nun Müssen im Adminbereich die Caches für Texte, seitenausgabe und Modulinformationen geleert werden. das war es. Viel Erfolg
Für den Artikellistenansicht in der Version 2.3.x.x müssen lediglich nur die Sprachdateien angepasst werden. Also in dem Ordner "lang/german/original_sections/product/" befindet sich die Datei "product_listing.lang.inc.php" Diese Datei kopieren und in dem Ordner "lang/german/user_sections/product" anlegen. Dann diese Datei in der Mitte mit folgendem Code ergänzen: PHP: // BOF products_extrafield 'text_products_inhalt' => 'Inhalt:', 'text_products_herkunft' => 'Herkunft:',// EOF products_extrafield Die Caches für Texte, Seitenausgabe und Modulinformation leeren. Das war es. Viel Erfolg
Hallo Cyrus, ich habe mal dieses schicke Modell bei mir Testhalber eingebaut. Alles soweit in Ordnung... bis auf eine Kleinigkeit. PHP: USER ERROR(256): "SQL Error" Fehlerlog: PHP: inc/xtc_db_error.inc.php:24 (Details) Code:│ line 22: $coo_logger = LogControl::get_instance(); │ line 23: $coo_logger->notice($p_error, 'error_handler', 'errors', 'notice', 'SQL ERROR', $p_errno, 'Query:' . "\r\n" . trim($p_query)); ├─ line 24: trigger_error('SQL Error', E_USER_ERROR); │ line 25: }[PHP]inc/xtc_db_query.inc.php:77 (Details) Code:│ line 75: # ALL OTHER RUN MODES │ line 76: # execute query ├─ line 77: $result = mysql_query($p_query, $$link) or xtc_db_error($p_query, mysql_errno(), mysql_error()); │ line 78: } │ line 79: [PHP]inc/xtc_db_perform.inc.php:147 (Details) Code:│ line 145: if(empty($t_sql) == false) │ line 146: { ├─ line 147: $t_result = xtc_db_query($t_sql, $p_link); │ line 148: } │ line 149: [PHP]admin/includes/classes/categories.php:2481 (Details) Code:│ line 2479: function wrapped_db_perform($p_called_from, $p_table, $p_data_array = array(), $p_action = 'insert', $p_parameters = '', $p_link = 'db_link', $p_quoted_values = true) │ line 2480: { ├─ line 2481: return xtc_db_perform($p_table, $p_data_array, $p_action, $p_parameters, $p_link, $p_quoted_values); │ line 2482: } │ line 2483: [PHP]admin/includes/classes/categories.php:1234 (Details) Code:│ line 1232: { │ line 1233: $sql_data_array['products_last_modified'] = 'now()'; ├─ line 1234: $this->wrapped_db_perform(__FUNCTION__, TABLE_PRODUCTS, $sql_data_array, 'update', 'products_id = \'' . (int)$products_id . '\''); │ line 1235: │ line 1236: // manage teaser slider for product[PHP]user_classes/overloads/categories/extrafield_categories.inc.php:7 (Details) Code:│ line 5: public function insert_product($products_data, $dest_category_id, $action = 'insert') │ line 6: { ├─ line 7: $products_id = parent::insert_product($products_data, $dest_category_id, $action); │ line 8: │ line 9: // BOF products_extrafields[PHP]admin/categories.php:181 (Details) Code:│ line 179: if($_SESSION['coo_page_token']->is_valid($_POST['page_token'])) │ line 180: { ├─ line 181: $t_products_id = $catfunc->insert_product($_POST, '', 'update'); │ line 182: } │ line 183: break;Nach mehmaliger Durchsicht habe ich wohl einen Denkfehler oder in der [COLOR=darkred]extrafield_categories.inc.php[/COLOR] fehlt etwas.
Ich benutze diese auch in der Version 2.2.1.3. Ich habe 20 extra Felder. Hier die Dateien. bei mir kommt es zu keiner Fehlermeldung. Vieleicht ist da ein Tippfehler irgendwo eingeschlichen. Probiere mal die beigefügte Dateien.
Danke Dir Cyrus, hattest Recht, habe einen Tippfehler gemacht in der Feldbeschreibung. Etwas langsamer getippelt und es war alles schick. Och...und nun auch das Modul von Dir...
Hallo Cyrus Habe nun zusätzlich noch Zusatz-Felder Für Artikellistenansicht eingebaut, alles soweit ok nur kann ich mich auf der Seite nicht mehr einloggen und auch die Menus gehen nicht mehr auf. Komme also nicht mehr in den Admin Bereich. Es kommt noch schlimmer, man kann auch keinen neuen Account mehr anlegen. Es gibt auch keine Fehlermeldung, einfach nichts. Und noch mehr, auch der Warenkorb funktioniert nicht mehr, kann keine Artikel mehr in den Warenkorb legen. An was kann dies liegen?
Hallo ammann-world, Cyrus hat hier die Anleitungen für 2 Shopversionen gepostet. Welche Shopversion nutzt Du? Hast Du die richtige Anleitung genommen? Cache geleert?
An user_classes/overloads/product/cp_product.inc.php, würde ich sagen, Zeile 22. Da ist eine Ausgabe, die da nicht hingehört, und dadurch geht dein Javascript kaputt.
Hallo Barbara Ich verwende die Gambio Version: v2.1.4.1 und die Extrafelder funktionieren auch, jedoch funktioniert diverses andere nicht mehr. Cache wurde geleert. - Kann mich nicht mehr einloggen, sprich ich komme schon gar nicht mehr in den Adminbereich - Sämtliche Menus klappen beim rüberfahren nicht mehr auf - Beim klicken auf den Warenkorb, keine Reaktion - Artikel können nicht mehr in den Warenkorb gelegt werden Seltsam ist auch das keinerlei Fehlermeldungen angezeigt werden, z.B. beim klicken auf "Anmelden" passiert einfach nichts. Hier mal meine Shop-Adresse www.ammann-world.ch . Das wichtigste wäre mal das ich wieder in den Admin-Bereich komme, bin für jede Hilfe mehr als dankbar. Gruss Marcel
Hallo Marco Bei der user_classes/overloads/product/cp_product.inc.php in der Zeile 22 steht bei mir ?> Was ist daran falsch? Gruss Marcel
@Cyrus standard-USERMOD.html BOF MX QUANTITY Check nachdem diese aus der Usermod entfernt wurde, läuft alles wie es soll. Sollte der BOF MX QUANTITY Check beibehalten werden, verschwindet der Warenkorb Button und es wird Sold angezeigt.
@MP Solution, da könntest du recht haben. Das kommt daher, dass ich dir die dateien geschickt habe, die auch für eine andere Erweiterung geschrieben worden sind. BOF MX QUANTITY Check braucht sonst die folgende Dateien.
@Cyrus Ist das ein wichtiger Bestandteil der Notwendig ist? Überlege gerade ob ich dies noch mit hinein nehmen sollte.
Hallo Marco, welche Ausgabe sollte es dann sein? An Zeile 22 der beschreibung oben steht gar kein Code. Die Datei endet bei Zeile 21. Und an Zeile 22 der Datei als ZIP für MP Solution, da steht: PHP: $t_data_array['PRODUCTS_MATURITY']=$array['products_maturity']; hast du eventuell eine andere Datei gemeint? @ ammann World Was hast du genau ausgeführt? Ich habe diese Dateien schon seit längere Zeit im Live Shops sowohl wie im Test Shops. Komplett ohne Fehlermeldung.
@Cyrus Habe jetzt die Erweiterung für Artikellistenansicht wieder rückgängig gemacht und jetzt funktioniert wieder alles. Also wie bereits Marco erwähnt hat, muss es noch einen Fehler enthalten welcher das Javascript lahm legt, ich finde aber nicht an was dies liegen kann. Es wurde in der Artikelansicht auch alles wie gewünscht angezeigt. Hast Du eine Idee?
Hallo MP Solution, Ich weiß nicht ob du diese Funktion brauchst oder nicht? Das musst du wissen. Wenn man es nicht braucht, dann muss man das Teil für die Funktion Soldout auskommentieren. Eine Beschreibung der Funktion liegt doch in der ZIP-Datei.