Du könntest auch über die Unicodes der Sternenzeichen gehen und diese dann in deinem Overload so verarbeiten, dass bei der im Backend angegeben Zahl (1-5) entsprechend so viele Sterne in Unicode U+2605 (9733) und der Rest in U+2606 (9734). Der richtige Zeichensatz deiner PHP und HTML Dateien ist dabei sehr wichtig. Vorteil: Bessere Ladezeiten und weniger Aufwand bei der Bearbeitung.
Danke. Die Sterne war nur ein Beispiel. Mein Grafiker ist noch an der Endversion dran. Ich denke dann klappt das nicht über Unicode zumal ich von php keinen Plan habe. Gruß Mitsch
Wäre schön wenn dieses Modul wieder frisch gemacht wird denn in lng/german liegt keine datei wie in der ersten beschreibung
Die kommt jetzt in lang/ german/ user_sections/ Das steht aber auch in der Anleitung in #3, da werden alle Änderungen ab Version 2.3 beschreiben.
Die Grundanleitung ist im 1. und 2. Beitrag, das was ab Version 2.3 geändert werden muss steht in Beitrag 3.
Extra Felder für Gambio GX_2 V. 2.5.x: Schritt 1: Die extra Felder in der Datenbank einfügen: Im Adminbereich --> Toolbox --> SQL in folgendem Format eure benötigten Felder hochladen. In dem ZIP-Ordner heißt diese Datei „sql.txt“. Den Inhalt entsprechend anpassen und in dem SQL-Eingabemaske einfügen und ausführen. Code: ALTER TABLE `products` ADD `products_content`VARCHAR(30) NOT NULL, ADD `products_origin` VARCHAR(30) NOT NULL, ADD `products_type` VARCHAR(30) NOT NULL, ADD `products_protein` VARCHAR(30) NOT NULL, ADD `products_prime_cost` VARCHAR(30) NOT NULL; Schritt 2: Als erstes, muss man eine neue Datei mit dem Namen "extrafields_configuration.inc.php" erstellen. Diese Datei ist Updatessicher und muss nur dann geändert werden, falls die Strukturen durch Gambio geändert wird. Hier fügt diese Datei 6 extra Felder an. In meinem Beispiel die folgenden Felder werden hinzugefügt: 1: Produkts-Einkaufspreis 2: Produkts-Herkunft 3: Produkts-Inhalt 4: Leeres Feld (Erstmal für die Schönheit und evtl. falls man es irgendwann braucht) 5: Produkts-Typ 6: Produkts-Eiweißgehalt Diese Datei wird in folgendem Ordner gespeichert: „admin/html/compatibility/product“ PHP: <?php /* -------------------------------------------------------------- extrafields_configuration.inc.php 2015.10.02 Micronix tct - Cyrus Based on: advanced_configuration.php 2015-08-28 Gambio GmbH http://www.gambio.de Copyright (c) 2015 Gambio GmbH Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- */ /** * Most of logic values are set in the product_master_data.php */ $coo_cat_slider = MainFactory::create_object('SliderControl'); $product_slider_array = $coo_cat_slider->get_slider_set_array(); ?> <!-- LEFT COLUMN OF ARTICLE EXTRA FIELDS --> <div class="span6"> <div class="grid control-group"> <div class="span6"> <!-- we begin with defining 5 common fields. Change the names of the fields as necessary. --> <!-- This field adds the possibility to note the product's prime cost (E.K. Preis Eingabe)--> <label><?php echo TEXT_PRODUCTS_PRIME_COST; ?></label> </div> <?php // calculate brutto price for display if (PRICE_IS_BRUTTO == 'true') { $products_prime_cost = xtc_round($pInfo->products_prime_cost * ((100 + xtc_get_tax_rate($pInfo->products_tax_class_id)) / 100), PRICE_PRECISION); } else { $products_prime_cost = xtc_round($pInfo->products_prime_cost, PRICE_PRECISION); } ?> <div class="span6"> <?php echo xtc_draw_input_field('products_prime_cost', $products_prime_cost,'style="width: 125px"') ; ?> <?php if (PRICE_IS_BRUTTO == 'true') { // BOF GM_MOD: echo ' '.TEXT_NETTO.'<b>'.$currencies->format($pInfo->products_prime_cost).'</b> '; } ?> </div> </div> <div class="grid control-group"> <div class="span6"> <!-- This field adds the possibility to note the product's content (Inhalt der PRODUKS-VPE)--> <label><?php echo TEXT_PRODUCTS_CONTENT; ?></label> </div> <div class="span6"> <?php echo xtc_draw_input_field('products_content', $pInfo->products_content) ; ?> </div> </div> <div class="grid control-group"> <div class="span6"> <!-- This field adds the possibility to note the product's origin (Herkunft des PRODUKS)--> <label><?php echo TEXT_PRODUCTS_ORIGIN; ?></label> </div> </div> <!-- EOF LEFT COLUMN --> <!-- RIGHT COLUMN OF ARTICLE EXTRA FIELDS --> <div class="span6"> <div class="grid control-group"> <div class="span6"> <!-- This field adds the possibility to note another extra field if necessary (Freies Feld für evtl. Erweiterung)--> <label>----</label> </div> <div class="span6"> </div> </div> <div class="grid control-group"> <div class="span6"> <!-- This field adds the possibility to note the product's type (Produkttyp Eingabe)--> <label><?php echo TEXT_PRODUCTS_TYPE; ?></label> </div> <div class="span6"> <?php echo xtc_draw_input_field('products_type', $pInfo->products_type) ; ?> </div> </div> <div class="grid control-group"> <div class="span6"> <!-- This field adds the possibility to note the product's protein content (Eiweiß Inhalt des Produkts)--> <label><?php echo TEXT_PRODUCTS_PROTEIN; ?></label> </div> <div class="span6"> <?php echo xtc_draw_input_field('products_protein', $pInfo->products_protein) ; ?> </div> </div> </div> <!-- EOF RIGHT COLUMN --> Schritt 3: Jetzt wird die Datei “admin/html/compatibility/product/new_product.inc.php“ erweitert. Diese Erweiterung fügt unsere extra Felder in die Artikelbearbeitungsmaske hinzu. Also die Datei „extrafields_configuratio.inc.php“ aus dem zweiten Schritt. In meinem Beispiel, habe ich die Erweiterung zwischen „erweiterte Konfiguration“ und „Zusatzfelder“ eingefügt. Suche nach: HTML: <!-- ADVANCED ARTICLE CONFIGURATION --> <div class="frame-wrapper default"> <div class="frame-head" data-gx-widget="collapser" data-collapser-target_selector=".frame-content" data-collapser-user_id="<?php echo $userId; ?>" data-collapser-section="product_advanced_configuration" data-collapser-collapsed="<?php echo $userConfigurationService->getUserConfiguration($userId, 'product_advanced_configuration_collapse'); ?>"> <label><?php echo HEADING_ADVANCED_CONFIGURATION; ?></label> </div> <div class="frame-content grid"> <?php include DIR_FS_ADMIN . 'html/compatibility/product/advanced_configuration.inc.php'; ?> </div> </div> Und füge danach diesen Code ein: HTML: <!-- EXTRAFIELDS CONFIGURATION --> <div class="frame-wrapper default"> <div class="frame-head" data-gx-widget="collapser" data-collapser-target_selector=".frame-content" data-collapser-user_id="<?php echo $userId; ?>" data-collapser-section="product_advanced_configuration" data-collapser-collapsed="<?php echo $userConfigurationService->getUserConfiguration($userId, 'product_extrafields_configuration_collapse'); ?>"> <label><?php echo HEADING_EXTRAFIELDS_CONFIGURATION; ?></label> </div> <div class="frame-content grid"> <?php include DIR_FS_ADMIN . 'html/compatibility/product/extrafields_configuration.inc.php'; ?> </div> </div> Shritt 4: Jetzt werden die Sprachdateien erweitert: Die Datei „lang/german/original_sections/admin/product/categories.lang.inc.php“ in den Ordner „lang/german/user_sections/admin/product/“ kopieren und wie folgt erweitern: Nach: Code: [B]$t_language_text_section_content_array = array[/B] [B]([/B] Folgenden Code einfügen: Code: [B]// BOF products_extrafield[/B] [B] 'HEADING_EXTRAFIELDS_CONFIGURATION' => 'Extra Felder Konfigurieren',[/B] [B] 'TEXT_PRODUCTS_CONTENT' => 'Inhalt:',[/B] [B] 'TEXT_PRODUCTS_ORIGIN' => 'Herkunft:', [/B] [B] 'TEXT_PRODUCTS_TYPE' => 'Milch-Sorte:', [/B] [B] 'TEXT_PRODUCTS_PROTEIN' => 'Eiweiß:', [/B] [B] 'TEXT_PRODUCTS_PRIME_COST' => 'EK-Price:',[/B] [B]//EOF products_extrafield[/B] Jetzt, wenn man die Caches für Texte, Seitenausgabe und Modulinformationen leeren würde, würde man das Ergebnis schon in der Artikelbearbeitung sehen müssen. In dieser Stufe werden zwar die Felder sichtbar aber noch nicht speicherbar. Schritt 5: Nun wird die Datei „categories.php“ überladen. Zuerst öffnen wir den Ordner „user_classes/overloads/“. In diesem Ordner erstellen wir einen Ordner mit dem Namen „categories“.Nun erstellen wir eine neue Datei mit dem Namen „extrafield_categories.inc.php“. Diese Datei überlädt die Datei „categories.php“ und damit werden unsere Eingaben in Extra-Felder gespeichert. Der Code sieht wie folgt aus: PHP: <?php /* ****************************************************** extrafields_categories.inc.php Cyrus 2015.10.02 Special Thanks an: Avenger@powertemplates and Marco (Gambio) for very important hints and their help ****************************************************** */ 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_content' => xtc_db_input($products_data['products_content']), 'products_origin' => xtc_db_input($products_data['products_origin']), 'products_type' => xtc_db_input($products_data['products_type']), 'products_protein' => xtc_db_input($products_data['products_protein']), 'products_prime_cost' => xtc_db_input($products_data['products_prime_cost'])); // 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); $copy_extra_data_query = 'UPDATE `products` p LEFT JOIN `products` psrc ON psrc.products_id = \':src_products_id\' SET `p`.`products_content`= `psrc`.`products_content`, `p`.`products_origin`=`psrc`.`products_origin`, `p`.`products_type`=`psrc`.`products_type`, `p`.`products_protein`=`psrc`.`products_protein`, `p`.`products_prime_cost`=`psrc`.`products_prime_cost` 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; } } Nun werden die eingegebenen Daten auch gespeichert, aber noch nicht im Frontend dargestellt. DARSTELLUNG IM FRONTEND: Schritt 6: Nun wird die Datei „ProductInfoContentView.inc.php“ überladen. Den Ordner „user_classes/overloads“ öffnen. In diesem Ordner einen Ordner mit dem Namen „ProductInfoContentView“ einfügen (Bitte Groß und Klein Schreibung beibehalten). In diesem Ordner erstellen wir eine Datei mit dem Namen „extrafields_ProductInfoContentView.inc.php“ und der Inhalt: 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() { // assign properties and set $this->hasProperties flag //$this->_setPropertiesData(); $this->_assignExtrafields(); //$this->_assignOrigin(); return parent::_assignProductData(); } // assign new fields to the products content view public function _assignExtrafields() { $this->set_content_data('PRODUCTS_CONTENT', $this->product->data['products_content']); $this->set_content_data('PRODUCTS_ORIGIN', $this->product->data['products_origin']); $this->set_content_data('PRODUCTS_TYPE', $this->product->data['products_type']); $this->set_content_data('PRODUCTS_PROTEIN', $this->product->data['products_protein']); $this->set_content_data('PRODUCTS_PRIME_COST', $this->product->data['products_prime_cost']); } } ?> Nun stehen die Daten von Extra-Felder für die Datei „standard-USERMOD.html“ zur Verfügung. Schritt 7: Die Sprachdatei anpassen: Damit die Namen der Extra-Felder im Frontend angezeigt werden, müssen diese Bezeichnungen in einer Sprachdatei eingegeben werden. Wir öffnen den Ordner „lang/german/original_sections/product/“ und kopieren die Datei „product_info.lang.inc.php“ in den Ordner „lang/german/user_sections/product/“. Nun fügen wir unseren Bezeichnungen ein: Suche nach: PHP: $t_language_text_section_content_array = array ( und fügen danach: PHP: // BOF products_extrafield 'text_products_content' => 'Inhalt:', 'text_products_origin' => 'Herkunft:', 'text_products_type' => 'Milch-Sorte:', 'text_products_protein' => 'Eiweiß:', // EOF products_extrafield ein und speichere die Datei. Schritt 8: Die Darstellung der Informationen auf der Artikeldetailseite: Die Datei „templates/EyeCandy/module/product_info/standard.html“ kopieren und als „standard-USERMOD.html“ speichern. In dieser Datei nach: HTML: {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} suchen und folgender Code einfügen: HTML: <!-- BOF products_extrafield --> {if $PRODUCTS_CONTENT || $SHOW_PRODUCTS_CONTENT} <dt>{$txt.text_products_content}</dt> <dd class="products_content">{$PRODUCTS_CONTENT}</dd> {/if} {if $PRODUCTS_ORIGIN || $SHOW_PRODUCTS_ORIGIN} <dt>{$txt.text_products_origin}</dt> <dd class="products_origin">{$PRODUCTS_ORIGIN}</dd> {/if} {if $PRODUCTS_TYPE || $SHOW_PRODUCTS_TYPE} <dt>{$txt.text_products_type}</dt> <dd class="products_type">{$PRODUCTS_TYPE}</dd> {/if} {if $PRODUCTS_PROTEIN || $SHOW_PRODUCTS_PROTEIN} <dt>{$txt.text_products_protein}</dt> <dd class="products_protein">{$PRODUCTS_PROTEIN}</dd> {/if} <!-- EOF products_extrafield --> Nun müssen die Caches für Texte, Seitenausgabe und Modulinformationen geleert werden. Nach dem wir unter die Artikelbearbeitung unsere Felder auch mit Informationen gefüllt haben, werden diese Informationen auch im Frontend sichtbar.
Einen kleinen Fehler in EK-Preis-Berechnung habe ich noch entdeckt. Hier die korrigierte ZIP-Dateien:
Hallo, ich bin etwas verwirrt und bitte um kurze Aufklärung. Im Handbuch habe ich dazu nichts finden können. Mein Shop ist eine komplette Neuinstallation in der Version 2.5.3.1. Die Datenbank ist noch jungfräulich. Die Bezeichnung dieses Threads lautet "... Extra Felder (Zusatz Felder ...)". Im Bereich der Artikelbearbeitung gibt es die Möglichkeit, Zusatzfelder anzulegen. Handelt es sich bei diesen Zusatzfeldern um die Felder, die hier auch mit Extra Feld bezeichnet werden? Bitte ggfs. kurz den Unterschied erläutern. Die Gestaltung des Bereichs Zusatzfelder in der Artikelbezeichnung macht mir den Eindruck, dass die Anlage der Felder in der SQL-Datenbank auf dem Server völlig automatisch erfolgt. Liege ich da falsch?
Hier geht es um eigene Extra-Felder. Früher, als Gambio noch keine Zusatzfelder integriert hatte, hat man eigene Erweiterung "Zusatzfelder" benannt. Nachher kamm die Bezeichnung "Extra-Felder" damit man sie nicht mit den "Zusatzfelder" von Gambio nicht verwechselt. Ob die Zusatzfelder von Gambio auch das liefern können wie die Extrafelder, kann ich dir nicht sagen. da ich immer noch meine eigene Extra-Felder verwende. Bei Extra-Felder muss man die einzelne Felder selbst in der Datenbank anlegen. Bei den Zusatzfelder von Gambio das geschieht automatisch. Aber ob man sie auch zum Darstellung im Frontend nutzen kann, weiss ich nicht. Eventuell ja.
Hallo Cyrus, vielen lieben Dank für die Info. Dann werde ich es zunächst mal mit den in Gambio integrierten Zusatzfeldern probieren.
Hi, seit der Shopversion 2.5.2.x werden die Zusatzfelder, die im Artikel definiert werden können, auch auf der Artikeldetailseite ausgegeben. Die Felder werden auch zu den Preisportalen exportiert vorzugsweise für Google Shopping.(Link nur für registrierte Nutzer sichtbar.)
Hallo, im Handbuch zur Version 2.5.x.x habe ich nichts Verwertbares über die Zusatzfelder gefunden. Auch die Suchmaschine meines Vertrauens gibt keine weiteren Infos preis. Daher wende ich mich in der Sache nochmal mit der Bitte um Hilfe an euch. Im Artikel habe ich ein Feld angelegt. Dieses wird auch in der SQL-Datenbank in den Tabellen, die mit additional... beginnen, angezeigt. Aber was jetzt? Wie kann ich dieses Feld in mein Template in die Artikeldetailseite einbinden? Nach Möglichkeit möchte ich dieses Feld auch in die Artikellisten sowie auf der Startseite in den Angeboten, Empfehlungen etc. einbinden.
Ach ja, der Cache. Nachdem ich den Cache geleert habe, wird das Feld jetzt auch entsprechend angezeigt. Wenn ich es richtig verstehe, würden jetzt alle Zusatzfelder untereinander weg angezeigt werden. Nun möchte ich aber mehrere Zusatzfelder anlegen, die an verschiedenen Stellen im Template angezeigt werden sollen. Dieses wird wohl nur über den Umweg des Einbaus von EXTRAFELDERN gehen. Ist das so korrekt?
Hallo Andreas, die Zusatzfelder von Gambio können nur im Ganzen im Frontend platziert werden. Das heißt, wenn du z.B. 5 Zusatzfelder für einen Artikel definierst, dann kannst du zwar die Plazierung für den Frontend ändern aber für alle fünf. und nicht einzeln.
Hallo, das Wochenende möchte ich nutzen, insgesamt 26 Extra-Felder in die Version 2.6.0.0 einzubauen. Dazu werde ich die Anleitung für die Version 2.5.x.x verwenden, die im Beitrag 67 zu finden ist. Da steht allerdings nichts davon, wie ich die Extrafelder in die Artikellistensansicht bekomme. Ich werde es mal mit der Anleitung aus dem Beitrag #4 (eigentlich gültig für Version 2.3.x.x) probieren.