also die Template Abfrage mit der Sprache funktioniert, habe es mit unabhängigem Code in der HTML-Datei ausprobiert. Wie muss ich die Datei extrafeld_ProductInfoContentView.inc.php anpassen, dass diese mit einem zusätzlichen Feld funktioniert ?
klar wenn das Interesse da ist Inhalt der standard-USERMOD.html in templates/EyeCandy/module/product_info PHP: {load_language_text section="product_info"}{load_language_text section="buttons" name="button"}{if $PRODUCT_NAVIGATOR} {$PRODUCT_NAVIGATOR}{/if}{if $smarty.session.language=='german'}<div class="details clearfix" id="product_info"> <form name="{$FORM_NAME}" id="{$FORM_NAME}" action="{$FORM_ACTION_URL}" method="{$FORM_METHOD}"> <div> <div class="gallery clearfix"> <div class="inside"> <div class="stage button_lightbox_gallery"> {gm_gmotion} {if $images.0.IMAGE} <div class="info_image_box" style="margin: 0 auto 0 auto; width: {$images.0.WIDTH}px;"> <a href="{$images.0.ZOOM_IMAGE}" title=""> {if $GMOTION == '0'} <img id="gallery_inside_main_1" src="{$images.0.IMAGE}" alt="{$images.0.IMAGE_ALT|default:$images.0.PRODUCTS_NAME}" title="{$images.0.IMAGE_ALT|default:$images.0.PRODUCTS_NAME}" /> {/if} </a> </div> {/if} </div> {if $thumbnails|@count > 1} <div class="thumbnails"> {foreach name=thumbnails item=thumbnails_data from=$thumbnails} <div class="thumbnail"><a href="{$thumbnails_data.INFO_IMAGE}" rel="{$thumbnails_data.ZOOM_IMAGE}" class="button_product_images button_lightbox_gallery {if $smarty.foreach.thumbnails.first} active_thumbnail{/if}" id="gallery_inside_thumbnail_{$smarty.foreach.thumbnails.iteration}" title="{$thumbnails_data.IMAGE_ALT|default:$thumbnails_data.PRODUCTS_NAME}"><img style="padding-left: {$thumbnails_data.PADDING_LEFT}px; padding-top: {$thumbnails_data.PADDING_TOP}px;" src="{$thumbnails_data.IMAGE}" alt="{$thumbnails_data.IMAGE_ALT|default:$thumbnails_data.PRODUCTS_NAME}" title="{$thumbnails_data.IMAGE_ALT|default:$thumbnails_data.PRODUCTS_NAME}" /></a></div> {/foreach} </div> {/if} </div> {if $MODULE_products_media != ''} {$MODULE_products_media} {/if} </div> <div class="info clearfix"> <div class="inside"> <h1>{$PRODUCTS_NAME}</h1> <dl> {if $PRODUCTS_MODEL!='' || $SHOW_PRODUCTS_MODEL} <dt>{$txt.text_model}</dt> <dd class="products_model">{$PRODUCTS_MODEL}</dd> {/if} {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} <!-- products_extrafield--> {if $PRODUCTS_GARANTIE || $SHOW_PRODUCTS_GARANTIE} <dt>{$txt.text_products_garantie}</dt> <dd class="products_garantie">{$PRODUCTS_GARANTIE}</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> {/if} --> {if $PRODUCTS_QUANTITY_UNIT} <dt>{$txt.text_products_quantity_unit}</dt> // noch in sprachdatei definieren <dd class="products_quantity"><span class="products_quantity_value">{$PRODUCTS_QUANTIT Y_UNIT}</span></dd> {/if} </dl> {$properties_selection_form} {$MODULE_product_options} <div id="gm_attribute_images"></div> {if $PRODUCTS_FSK18=='true'} <div id="fsk18_image"><img src="{$tpl_path}img/fsk18.gif" alt="" /></div> {/if} {gm_gprint position=1 margin_left=0} {gm_gprint position=2 margin_left=0} {gm_gprint position=3 margin_left=0} {if $MODULE_graduated_price != ''} {$MODULE_graduated_price} {/if} <div class="price-container"> <div class="inside"> <span class="price" id="gm_attr_calc_price">{$PRODUCTS_PRICE}{if $PRODUCTS_VPE}<br /><span class="tax-shipping-text gm_products_vpe">{$PRODUCTS_VPE}</span><br />{/if}</span>{if !$PRODUCTS_VPE}<br />{/if} {if $ADD_CART_BUTTON} <span class="tax-shipping-text">{$PRODUCTS_TAX_INFO}{$PRODUCTS_SHIPPING_LINK}</span><br /> <br /> <div id="details_cart_part" style="{if $GM_GPRINT} display: none;{/if}"> <a href="{page_url}#" id="cart_button" class="button_green_big button_set_big button_details_add_cart"><span class="button-outer"><span class="button-inner"><img class="png-fix" src="{$tpl_path}img/icons/icon-white-shoppingcart.png" alt="" style="margin-right:10px; float:left" />{$txt.add_to_cart}</span></span></a> {if $QUANTITY} <span class="quantity_container"> {if $PRODUCTS_QUANTITY_UNIT}<label for="gm_attr_calc_qty" class="products_quantity_unit" id="gm_attr_calc_qty_unit">{$PRODUCTS_QUANTITY_UNIT}</label>{/if} <input type="text" id="gm_attr_calc_qty" class="products_quantity" name="products_qty" value="{$QUANTITY}"{if $DISABLED_QUANTITY} disabled="disabled"{/if} /> </span> {/if} {if $ADD_WISHLIST_BUTTON}<div class="leaflet"><a href="{page_url}#" id="gm_wishlist_link" class="button_details_add_wishlist">{$button.add_to_wishlist}</a></div>{/if} <input type="hidden" name="products_id" id="gm_products_id" value="{$PRODUCTS_ID}" /> <input type="hidden" name="submit_target" value="cart" /> <div id="details_qty_advice"> <div id="gm_checker_error_{$PRODUCTS_ID}"> {if $GM_MIN_ORDER} {$txt.text_min_order}<span class="details_qty_advice_bold">{$GM_MIN_ORDER}</span><br /> {/if} {if $GM_GRADUATED_QTY} {$txt.text_graduated_qty_1}<span class="details_qty_advice_bold">{$GM_GRADUATED_QTY}</span>{$txt.text_graduated_qty_2} {/if} </div> </div> {if $SHOW_PRODUCTS_WEIGHT} <div id="details_products_weight"> {$txt.text_weight} <span id="gm_calc_weight">{$PRODUCTS_WEIGHT}</span> {$txt.text_weight_unit} </div> {/if} </div> {else} <input type="hidden" name="products_id" id="gm_products_id" value="{$PRODUCTS_ID}" /> {/if} </div> </div> </div> </div> <div style="clear: both"> <!-- --> </div> </div> {if $SHOW_BOOKMARKING || $SHOW_PRINT || $GM_PRICE_OFFER!='' || $GM_TELL_A_FRIEND || $SHOW_FACEBOOK || $SHOW_TWITTER || $SHOW_GOOGLEPLUS || $SHOW_PINTEREST} <div class="actions"> {if $SHOW_BOOKMARKING} <a class="addthis_button" href="http://www.addthis.com/bookmark.php" rel="nofollow"><img class="png-fix" src="{$tpl_path}img/icons/icon-bookmark.png" alt="" /> {$txt.text_bookmarking}</a> {/if} {if $SHOW_PRINT} <a href="{page_url}#" class="button_print" rel="nofollow"><img class="png-fix" src="{$tpl_path}img/icons/icon-print.png" alt="" /> {$txt.text_print}</a> {/if} {if $GM_PRICE_OFFER!=''} <a href="{page_url}#" id="gm_price_offer" class="button_price_offer" rel="nofollow"><img class="png-fix" src="{$tpl_path}img/icons/price_offer.png" alt="" /> {$txt.text_price_offer}</a> {/if} {if $GM_TELL_A_FRIEND} <a href="{page_url}#" id="gm_tell_a_friend" class="button_tell_a_friend" rel="nofollow"><img class="png-fix" src="{$tpl_path}img/icons/tell_a_friend.png" alt="" /> {$txt.text_tell_a_friend}</a> {/if} {if $SHOW_FACEBOOK || $SHOW_TWITTER || $SHOW_GOOGLEPLUS || $SHOW_PINTEREST} <div class="social_share_wrapper"> {if $SHOW_FACEBOOK} <div class="social_share_box" id="facebook_share_box"> <div class="social_share_image"></div> <div class="social_share_content"><img src="templates/EyeCandy/img/social_share_dummy_facebook.png" title="Facebook" /></div> <div style="clear: both"> <!-- --> </div> </div> {/if} {if $SHOW_TWITTER} <div class="social_share_box" id="twitter_share_box"> <div class="social_share_image"></div> <div class="social_share_content"><img src="templates/EyeCandy/img/social_share_dummy_twitter.png" title="Twitter" /></div> <div style="clear: both"> <!-- --> </div> </div> {/if} {if $SHOW_GOOGLEPLUS} <div class="social_share_box" id="googleplus_share_box"> <div class="social_share_image"></div> <div class="social_share_content"><img src="templates/EyeCandy/img/social_share_dummy_googleplus.png" title="Google +1" /></div> <div style="clear: both"> <!-- --> </div> </div> {/if} {if $SHOW_PINTEREST} <div class="social_share_box" id="pinterest_share_box"> <div class="social_share_image"></div> <div class="social_share_content"><img src="templates/EyeCandy/img/social_share_dummy_pinterest.png" title="Pinterest" /></div> <div style="clear: both"> <!-- --> </div> </div> {/if} <div style="clear: both"> <!-- --> </div> </div> {/if} {if $SHOW_BOOKMARKING} <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js"></script> {/if} </div> {/if} {$SHOPGATE_QR_BOX} <div class="description tabs"> <div id="description-1"> {if $PRODUCTS_DESCRIPTION !=''}{$PRODUCTS_DESCRIPTION}{/if} </div> </div> </form> {if $MODULE_products_reviews != ''} {$MODULE_products_reviews} {/if}</div>{if $MODULE_cross_selling != ''} {$MODULE_cross_selling}{/if}{if $MODULE_reverse_cross_selling != ''} {$MODULE_reverse_cross_selling}{/if}{if $MODULE_also_purchased != ''} {$MODULE_also_purchased}{/if}{if $PRODUCTS_ADDED != ''} <div id="products_added">{$PRODUCTS_ADDED}</div>{/if}{if $PRODUCTS_URL != ''} <div class="details_products_url">{$PRODUCTS_URL}</div>{/if}{if $PRODUCTS_DATE_AVIABLE != ''} <div class="details_products_date_avaiable">{$PRODUCTS_DATE_AVIABLE}</div>{/if}{/if}<!-- Ende Deutsch --><!-- Komplett English -->{if $smarty.session.language=='english'}<div class="details clearfix" id="product_info"> <form name="{$FORM_NAME}" id="{$FORM_NAME}" action="{$FORM_ACTION_URL}" method="{$FORM_METHOD}"> <div> <div class="gallery clearfix"> <div class="inside"> <div class="stage button_lightbox_gallery"> {gm_gmotion} {if $images.0.IMAGE} <div class="info_image_box" style="margin: 0 auto 0 auto; width: {$images.0.WIDTH}px;"> <a href="{$images.0.ZOOM_IMAGE}" title=""> {if $GMOTION == '0'} <img id="gallery_inside_main_1" src="{$images.0.IMAGE}" alt="{$images.0.IMAGE_ALT|default:$images.0.PRODUCTS_NAME}" title="{$images.0.IMAGE_ALT|default:$images.0.PRODUCTS_NAME}" /> {/if} </a> </div> {/if} </div> {if $thumbnails|@count > 1} <div class="thumbnails"> {foreach name=thumbnails item=thumbnails_data from=$thumbnails} <div class="thumbnail"><a href="{$thumbnails_data.INFO_IMAGE}" rel="{$thumbnails_data.ZOOM_IMAGE}" class="button_product_images button_lightbox_gallery {if $smarty.foreach.thumbnails.first} active_thumbnail{/if}" id="gallery_inside_thumbnail_{$smarty.foreach.thumbnails.iteration}" title="{$thumbnails_data.IMAGE_ALT|default:$thumbnails_data.PRODUCTS_NAME}"><img style="padding-left: {$thumbnails_data.PADDING_LEFT}px; padding-top: {$thumbnails_data.PADDING_TOP}px;" src="{$thumbnails_data.IMAGE}" alt="{$thumbnails_data.IMAGE_ALT|default:$thumbnails_data.PRODUCTS_NAME}" title="{$thumbnails_data.IMAGE_ALT|default:$thumbnails_data.PRODUCTS_NAME}" /></a></div> {/foreach} </div> {/if} </div> {if $MODULE_products_media != ''} {$MODULE_products_media} {/if} </div> <div class="info clearfix"> <div class="inside"> <h1>{$PRODUCTS_NAME}</h1> <dl> {if $PRODUCTS_MODEL!='' || $SHOW_PRODUCTS_MODEL} <dt>{$txt.text_model}</dt> <dd class="products_model">{$PRODUCTS_MODEL}</dd> {/if} {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} <!-- products_extrafield--> {if $PRODUCTS_WARRANTY || $SHOW_PRODUCTS_WARRANTY} <dt>{$txt.text_products_warranty}</dt> <dd class="products_warranty">{$PRODUCTS_WARRANTY}</dd> {/if} ...{/if}<!-- Ende English -->
Extra-Felder Für Artikeldetailseite v. GX 2.1.x.x Planen Sie im Voraus die Extra-Felder, die Sie für Ihre Produkte benötigen. 1: Machen Sie eine Sicherung der Shop-Datenbank. 2: Machen Sie eine Sicherung des Shop-Ordners. Anleitung: 1: Die Tabelle „Produkte“ in der Datenbank um die Zahl der benötigten Felder erweitern. z.B. Sie brauchen 2 Extra-Felder, die jeweils durch maximal 30 Zeichen beschrieben sind. In phpMyAdmin Ihrer Server oder im Shop unter Toolbox à SQL folgende Anweisung ausführen: Code: Code: [FONT="] [COLOR=#00B050][FONT="]ALTER TABLE `products`[/FONT][/COLOR] [COLOR=#00B050][FONT="] ADD `products_inhalt`VARCHAR( 30 ) NOT NULL, [/FONT][/COLOR] [COLOR=#00B050][FONT="] ADD `products_herkunft` VARCHAR( 30 ) NOT NULL;[/FONT][/COLOR][/FONT] ACHTUNG: Der letzte „ADD“ Anweisung endet mit ( ; ). Sprachdateien ändern:- 2:Nun wird die Feldbezeichnung in lang/german/sections/_samples/lang__german__admin__categories___php.lang.inc.php angelegt. Anschließend wird die geänderte Datei in Ordner lang/german/sections (also eine Ordnerebene höher) gespeichert! In lang/german/sections/_samples/lang__german__admin__categories___php.lang.inc.php Code: PHP: // BOF products_extrafield 'TEXT_PRODUCTS_INHALT' => 'Inhalt:', 'TEXT_PRODUCTS_HERKUNFT' => 'Herkunft:', // EOF products_extrafield einfügen ABER IN DEN FOLGENDEN ORDNER lang/german/sections (also auch eine Ordnerebene höher) hochladen. (Diese Datei dürfte Updatesicher sein, da an das Original nichts geändert wird?) 3: Nun wird die Datei lang/german/sections/_samples/product_info.lang.inc.php herunterladen und geändert. Den Code: PHP: // BOF products_extrafield 'text_products_inhalt' => 'Inhalt:', 'text_products_herkunft' => 'Herkunft:', // EOF products_extrafield einfügen ABER IN DEN FOLGENDEN ORDNER lang/german/sections hochladen. (Diese Datei dürfte auch Updatesicher sein, da an das Original nichts geändert wird?) 4: Am Ende der Datei lang/german/lang_german.conf Den Code: Code: [FONT="] [FONT="]/* BOF products_extrafield */[/FONT] [FONT="]text_products_inhalt = 'Inhalt:'[/FONT] [FONT="]text_products_herkunft = 'Herkunft:'[/FONT] [FONT="]/* EOF products_extrafield */[/FONT] [/FONT] einfügen und die Datei sichern. (Diese Datei ist nicht Updatessicher daher muss bei Updates eventuell nachgearbeitet werden. Am Bestens eine Liste von geänderten Dateien stellen). 5: Für alle anderen Sprachen die Schritte entsprechend wiederholen. Damit sind die Änderungen für die Sprachdateien fertig. 6: Die Artikelbearbeitung im Adminbereich um die benötigten Felder erweitern: Da ich min. 15 Extra-Felder benötige, habe ich für die Extra-Felder eine eigene Tabelle unterhalb der ersten Tabelle programmiert. Falls Sie nur ein Paar Extra-Felder benötigen, können Sie Ihren Code beliebig woanders in der Datei eingeben. Bei mir ist die Tabelle für Extra-Felder unter der Zeile Verfügbarkeit und vor der Tabelle Zusatzfelder. Dafür in der admin/includes/modules/new_product.php nach (ca. Zeile 921) PHP-Code: PHP: <tr> <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> </table> </td> </tr> </table> suchen und folgendes anführen: PHP-Code: PHP: <!-- 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="33%" 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: 130px"') ; ?></td> </tr> <tr> <td><?php echo TEXT_PRODUCTS_HERKUNFT; ?></td> <td><?php echo xtc_draw_input_field('products_herkunft', $pInfo->products_herkunft,'style="width: 130px"') ; ?></td> </tr> </table> </td> </tr> </table> <!-- products_extrafield end --> Bei mir sieht es so aus: Jetzt sollte es so aussehen. Diese Datei ist auch leider nicht Updatessicher (also auf die Liste von geänderten Dateien). Falls jemanden weiß wie man diese Datei Updatessicher ändern kann, wäre ich auch dankbar es zu erfahren. 7: Damit die Daten auch gespeichert werden in der admin/includes/classes/categories.php nach (bei mir ca. Zeile 912) PHP-Code: PHP: 'nc_ultra_shipping_costs' => xtc_db_prepare_input($products_data['nc_ultra_shipping_costs'] )); suchen und nach ['nc_ultra_shipping_costs'] die neun Felder einsetzen. BITTE ACHTEN SIE AUCH AUF DIE ÄNDERUNG AN DIESE ZEILE. „ ); “ muss durch eine Komma „ , ” ersetzt werden. Und „ ); “ muss am Ende von Ihrem Code stehen. PHP-Code: PHP: 'nc_ultra_shipping_costs' => xtc_db_prepare_input($products_data['nc_ultra_shipping_costs']), // BOF products_extrafields 'products_inhalt' => xtc_db_prepare_input($products_data['products_inhalt']), 'products_herkunft' => xtc_db_prepare_input($products_data['products_herkunft'])); // EOF products_extrafields Anschließend zu (ca. Zeile 1658) PHP-Code: PHP: 'gm_show_qty_info' => $product['gm_show_qty_info'], 'gm_sitemap_entry' => $product['gm_sitemap_entry'], gehen und nach dieser Zeile den Code einfügen PHP-Code: PHP: // BOF products_extrafield 'products_inhalt' => $product['products_inhalt'], 'products_herkunft' => $product['products_herkunft'], // EOF products_extrafield 8: Damit die Felder auf der Artikeldetailseite angezeigt werden und diese auch Updatessicher ist müssen wir unter /shop/user_classes/overloads einen neuen Ordner mit dem Namen „ProductInfoContentView“ anlegen (bitte auf die genaue Schreibweise achten). Dann den folgenden PHP-Code eingeben und als „extrafield_ProductInfoContentView.inc.php“ in diesem Ordnerspeichern. 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); } } ?> Damit sind die Extrafelder auf der Detailseite. Damit die Extrafelder auch auf Produkt-Detailseite sichtbar werden:- 9: Die Datei templates/EyeCandy/module/product_info/standart.html kopieren und auf standard-USERMOD.html umbenennen. (Diese Datei ist Updatessicher) In diese Datei nach HTML-Code suchen: HTML: {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> {/if} etwa in Zeile 52 dieses Einfügen HTML-Code: HTML: <!-- BOF products_extrafield --> {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 products_extrafield --> Damit sind alle notwendigen Änderungen für die Extra-Felder schon fertig. Im AdminbereichàToolboxàCache leerenàCache für Modulinformationen leeren betätigen. Nun, wenn man in diese Felder Daten eingibt werden die unterhalb „Lieferzeit“ erscheinen. An diese Stelle möchte ich mich bei allen bedanken, die dieses Thema soweit gebracht haben. Mit besonderen Dank an Barbara für die viele Mühe. Entschuldigt mich, falls ich irgenwas vergessen haben sollte.
Ich hatte auch das Problem, dass ich die VPE beim Artikel darstellen wollte/musste. Mein Ansatz war jedoch ein ganz anderer: Ich habe einfach die Artikelkurzbeschreibung dafür genutzt (die wird bei gekachelter Artikelauflistung sowieso nicht benötigt) und diese entsprechend über den Artikelpreis verlinkt. So kann man auch gleich noch einen Kurztext hinzufügen, der dem Kunden beim Aufruf des Artikels gleich mit in die Augen springt, ohne dass die komplette Artikelbeschreibung gelesen werden muss. Weiterer Vorteil: Die Pflege kann weiterhin zentral über eine Wawi erfolgen, am Shop selbst müssen hierfür keine händischen Artikelanpassungen gemacht werden.
Mit Hilfe von Marco(Gambio) haben wir den Punkt 7: auch updatessicher gestalltet. Dafür muss man unter "/shop/user_classes/overloads" einen Ordner Namens "categories" anlegen. dann eine PHP-Datei mit dem Namen: "xxx_categories.inc.php" anlegen. (xxx steht für euer Funktionsname). Bei mir heißt es "extrafield_categories.inc.php". Der Inhalt der Datei soll so aussehen: PHP: <?phpclass 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); $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; }} Außerdem die Datei /shop/admin/includes/classes/categories.php muss auch erweitert werden. siehe Thread: http://www.gambio-forum.de/threads/17429-Overloading-von-Produktinfos Diese wird von Gambio nachher erweitert.
Hallo Cyrus, super Anleitung für extra Felder - hat toll funktioniert. Ich hab nur ein Feld benötigt und zwar "Artikelname2" gleich unterm Artikelnamen. Ich versuch nun schon seit 2 Tagen dieses Extrafeld auf die Rechnung und den Lieferschein zu bekommen und zwar genau so wie z.B. ein Artikelattribut - leider ohne Erfolg. Gibt es dazu vielleicht einen Lösungsanatz? Ein Stupser in die richtige Richtung würde mir schon sehr helfen. Viele Grüße Hans
Hallo Cyrus, vielen Dank für Deine Antwort. Also, ich habe versucht: in admin/gm_pdf_order.php bei: PHP: /* * -> order data*/danach (Zeile ca. 72:SELECTop.products_id,op.orders_products_id,op.products_model,op.products_name,op.products_name2, // Atikelname2 eingefügt... und bei: PHP: // BOF GM_MOD GX-Customizer:...Zeile ca. 142$order_data[] = array('PRODUCTS_MODEL' => $order_data_values['products_model'],'PRODUCTS_NAME' => $order_data_values['products_name'],'PRODUCTS_NAME2' => $order_data_values['products_name2'], // Atikelname2 eingefügt... funktioniert nicht in admin/gm/classes/gmOrderPDF.php bei: PHP: /* * -> order data*/ danach Zeile ca. 471 original: PHP: $y = $this->getCells($product['PRODUCTS_MODEL'], $product['PRODUCTS_NAME'], $product['PRODUCTS_QTY'] . ' ' . $product['PRODUCTS_UNIT'], $product['PRODUCTS_TAX'], $product['PRODUCTS_PRICE_SINGLE'], $product['PRODUCTS_PRICE'], '', $this->pdf_fonts_size, '0', $y); durch: PHP: $y = $this->getCells($product['PRODUCTS_MODEL'], $product['PRODUCTS_NAME'], $product['PRODUCTS_NAME2'], $product['PRODUCTS_QTY'] . ' ' . $product['PRODUCTS_UNIT'], $product['PRODUCTS_TAX'], $product['PRODUCTS_PRICE_SINGLE'], $product['PRODUCTS_PRICE'], '', $this->pdf_fonts_size, '0', $y); zu ergänzen mit "PRODUCTS_NAME2" - ist natürlich Blödsinn - kam ein DB Error. und natürlich mal alles angesehn wo ich meinte dass man was ändern könnte, aber wie gesagt leider ohne Erfolg. Das hatte ich bei der 1. Antwort vergessen: Shop-Version ursprünglich: 2.1.3.3 upgedatet auf 2.2.0.0 (habs aber erst mit der neuen Version versucht). Ich hätte auch noch eine andere Idee und zwar wenn man den z.B. "Artikelnamen2" nicht in der Tabelle "products" sondern in der Tabelle "products_description" dazugibt (denn da ist ja auch der "Standard-Artikelname" drinnen) - ob das klappen würde? Und zwar so nach Deiner Anleitung mit den Sprachdateien usw. nur eben die andere Tabelle - ich werde das heute mal versuchen und dann von meinem "Mißerfolg" oder gar "Erfolg" berichten. Jedoch wäre es trotzdem Interessant wie man Deine Lösung auch auf die Rechnung und den Lieferschein bekommt. Viele Grüße Hans
Hallo, ich bin´s nochmal. Also die Idee mit der "products_description" hab ich nicht hinbekommen. Bin also wieder am Anfang. Viele Grüße Hans
Das ist nicht so einfach. Da muß man 8 Dateien ergänzen. Außerdem muss man in der Tabelle "orders_products" eine neue Spalte mit dem Namen "Products_name_2" einfügen. Die 8 dateien wären: shop-Ordner/admin/gm_pdf_order.php Shop-Ordner/admin/mobile.php Shop-Ordner/admin/orders_iloxx.php Shop-Ordner/admin/includes/classes/order.php Shop-Ordner/admin/includes/classes/sales_eport.php Shop-Ordner/includes/classes/order.php Shop-Ordner/system/classes/accounts/AccountContentView.inc.php Shop-Ordner/system/classes/downloads/DownloadsContentView.inc.php Ob es wirklich notwendig ist alle 8 Dateien zu ergänzen weiß ich es ohne nähere Untersuchung der Dateien nicht. Aber kann ich es mir nicht vorstellen, dass es ohne eine neue Spalte in der Datenbank-Tabelle "orders_products" funktionieren würde. BITTE BEACHTE, DIESE INFORMATIONEN SIND OHNE GEWÄHR. Viel Erfolg Teste das nur in einer Testumgebung. Falls du das testest,
Hallo Cyrus, vielen Dank für Deine Antwort. Bitte entschuldige, dass ich erst jetzt Antworte - habe so nebenbei eine Baustelle zu Hause... Das es nicht so einfach wird, dachte ich mir... . In der Datenbanktabelle "order_products" hatte ich auch schon eine Spalte hinzugefügt, nur wusste ich nicht genau welche Dateien hier "zuständig" sind. Ich werde Deinen Ansatz natürlich testen und dann berichten ob´s geklappt hat. Herzlichen Dank nochmal. Viele Grüße, Hans
Hallo, so ich habs jetzt nach Deiner Anleitung versucht - leider funktioniert da was nicht - ich mach da irgendwo grobe Fehler. Ich bekomm immer einen "User Error". Ich blicke da einfach nicht durch . Ich hab auch ein Ticket erstellt, aber die traurige Nachricht von Gambio ist, dass sie mir hier nicht weiterhelfen können... - na ja... Aber vielen, vielen Dank für Deine Mühe. Viele Grüße, Hans
hätte auch eine Frage zum Bestand ... Artikel ist angelegt jetzt brauch ich Eigenschaften über die funktion Kombination Automatisch ermitteln trägt er mir immer Bestand 0 ein wie ändere ich das, dass der bestand immer eine gewisse menge das problem ist ..... es sind ca 500 eigenschaften die da ermittelt werden und da überall den bestand ein zu tragen da sitz ich morgen noch oder länger hoffe mir kann da wer weiter helfen
Kann man in so ein Extrafeld eigentlich auch einen Link einfügen? Habe das mit <a href....> versucht, aber da wird was mit "file:///mein link///" aufgerufen, was natürlich nicht funktioniert. Abgesehen davon ist der Text im Textfeld der Artikelbeschreibung dann auch weg.
Ist es ein fester Link oder einer, der sich zum Produkt verändert? Falls ersteres, könntest du es ja über die product_info.lang.inc.php und lang_german.conf probieren, die URL zu setzen und via textvariable dann in der standard-USERMOD aufzurufen.
Es ist möglich links innerhalb des Shops leicht einzugeben. Beispiel standard.html in USERMOD HTML: {if $PRODUCTS_BIGBAG_LINK || $SHOW_PRODUCTS_BIGBAG_LINK} <dt>{$txt.text_products_bigbag_link}</dt> <dd class="products_bigbag_link"><a href="{$PRODUCTS_BIGBAG_LINK}">{$PRODUCTS_BIGBAG_LINK}</a></dd> Dann muss man aber in Extra-Feld nur das was nach "www.Deinshop.de/" kommt eingeben.
Hallo SOPRAO, ein fester Link wäre kein Problem. Es ist aber bei jedem Artikel ein anderer, deshalb wollte ich das über ein Extra-Feld steuern. Hallo Cyrus, vielen Dank, das werde ich gleich mal testen Nachtrag: da wird bei mir gar nichts angezeigt Alles zurück, es funktioniert - man muss es nur richtig machen