lawis Posted January 29, 2013 Share Posted January 29, 2013 (edited) Hi, I'm trying to override adminproductcontroller to add fields that i need for my products. For now, I just copied the renderform into the override controller, and a blank page is the only result I can have. Here is the code : <?php class AdminProductsController extends AdminProductsControllerCore { public function renderForm() { // This nice code (irony) is here to store the product name, because the row after will erase product name in multishop conte$ $this->product_name = $this->object->name[$this->context->language->id]; if (!method_exists($this, 'initForm'.$this->tab_display)) return; $product = $this->object; $this->product_exists_in_shop = true; if ($this->display == 'edit' && Validate::isLoadedObject($product) && Shop::isFeatureActive() && Shop::getContext() == Shop::$ { $this->product_exists_in_shop = false; if ($this->tab_display == 'Informations') $this->displayWarning($this->l('Warning: this product does not exist in this shop.')); $default_product = new Product(); $fields_to_copy = array('minimal_quantity', 'price', 'additional_shipping_cost', 'wholesale_price', 'on_sale', 'online_only', 'unity', 'unit_price_ratio', 'ecotax', 'active', 'available_for_order', 'available_date', 'show_price', 'indexed', 'id_tax_rules_group', 'advanced_stock_management', // personnal fields 'auteur', 'editeur', 'collection'); foreach ($fields_to_copy as $field) $product->$field = $default_product->$field; } // Product for multishop $this->context->smarty->assign('bullet_common_field', ''); if (Shop::isFeatureActive() && $this->display == 'edit') { if (Shop::getContext() != Shop::CONTEXT_SHOP) { $this->context->smarty->assign(array( 'display_multishop_checkboxes' => true, 'multishop_check' => Tools::getValue('multishop_check'), )); } if (Shop::getContext() != Shop::CONTEXT_ALL) { $this->context->smarty->assign('bullet_common_field', '<img src="themes/'.$this->context->employee->bo_theme.$ $this->context->smarty->assign('display_common_field', true); } } $this->tpl_form_vars['tabs_preloaded'] = $this->available_tabs; $this->tpl_form_vars['product_type'] = (int)Tools::getValue('type_product', $product->getType()); $this->getLanguages(); $this->tpl_form_vars['id_lang_default'] = Configuration::get('PS_LANG_DEFAULT'); $this->tpl_form_vars['currentIndex'] = self::$currentIndex; $this->tpl_form_vars['display_multishop_checkboxes'] = (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP &$ $this->fields_form = array(''); $this->display = 'edit'; $this->tpl_form_vars['token'] = $this->token; $this->tpl_form_vars['combinationImagesJs'] = $this->getCombinationImagesJs(); $this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int)Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'); $this->tpl_form_vars['post_data'] = Tools::jsonEncode($_POST); $this->tpl_form_vars['save_error'] = !empty($this->errors); // autoload rich text editor (tiny mce) $this->tpl_form_vars['tinymce'] = true; $iso = $this->context->language->iso_code; $this->tpl_form_vars['iso'] = file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en'; $this->tpl_form_vars['ad'] = dirname($_SERVER['PHP_SELF']); if (Validate::isLoadedObject(($this->object))) $id_product = (int)$this->object->id; else $id_product = (int)Tools::getvalue('id_product'); $this->tpl_form_vars['form_action'] = $this->context->link->getAdminLink('AdminProducts').'&'.($id_product ? 'id_product=$ $this->tpl_form_vars['id_product'] = $id_product; // Transform configuration option 'upload_max_filesize' in octets $upload_max_filesize = Tools::getOctets(ini_get('upload_max_filesize')); // Transform configuration option 'upload_max_filesize' in MegaOctets $upload_max_filesize = ($upload_max_filesize / 1024) / 1024; $this->tpl_form_vars['upload_max_filesize'] = $upload_max_filesize; $this->tpl_form_vars['country_display_tax_label'] = $this->context->country->display_tax_label; $this->tpl_form_vars['has_combinations'] = $this->object->hasAttributes(); // let's calculate this once for all if (!Validate::isLoadedObject($this->object) && Tools::getValue('id_product')) $this->errors[] = 'Unable to load object'; else { $this->_displayDraftWarning($this->object->active); // if there was an error while saving, we don't want to lose posted data if (!empty($this->errors)) $this->copyFromPost($this->object, $this->table); $this->initPack($this->object); $this->{'initForm'.$this->tab_display}($this->object); $this->tpl_form_vars['product'] = $this->object; if ($this->ajax) if (!isset($this->tpl_form_vars['custom_form'])) throw new PrestaShopException('custom_form empty for action '.$this->tab_display); else return $this->tpl_form_vars['custom_form']; } $parent = AdminController::renderForm(); $this->addJqueryPlugin(array('autocomplete', 'fancybox', 'typewatch')); return $parent; } } Edited January 30, 2013 by lawis (see edit history) Link to comment Share on other sites More sharing options...
Terragg Posted January 29, 2013 Share Posted January 29, 2013 Looking at what you've posted, there are syntax errors that may be due to the forum cutting off lines or a copy-paste that didn't work. That being said, adding fields to a product should be done in the Product class and then spend some serious time with your BO product template overrides in [yourstore]/override/controllers/admin/templates/products/ Unlike the Class and Controller overrides, the template override files/folder structure are not created automatically, so you'll have to do it manually. I've added several fields in my install (1.5.2) and didn't have to touch the AdminProductsController::renderForm(). Link to comment Share on other sites More sharing options...
lawis Posted January 29, 2013 Author Share Posted January 29, 2013 Thanks for your answer, my copy paste didn't worked well 'cause using nano, I just saw that. I've modified the product template (information.tpl) and I've got my fields showing off, but there's no data on them beside I added some directly in my sql base. Here is my information.tpl : {* * 2007-2012 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2012 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {if $check_product_association_ajax} {assign var=class_input_ajax value='check_product_name '} {else} {assign var=class_input_ajax value=''} {/if} <input type="hidden" name="submitted_tabs[]" value="Informations" /> <div id="step1"> <h4 class="tab">1. {l s='Info.'}</h4> <h4>{l s='Product global information'}</h4> <script type="text/javascript"> {if isset($PS_ALLOW_ACCENTED_CHARS_URL) && $PS_ALLOW_ACCENTED_CHARS_URL} var PS_ALLOW_ACCENTED_CHARS_URL = 1; {else} var PS_ALLOW_ACCENTED_CHARS_URL = 0; {/if} {$combinationImagesJs} {if $check_product_association_ajax} var search_term = ''; $('document').ready( function() { $(".check_product_name") .autocomplete( '{$link->getAdminLink('AdminProducts', true)}', { minChars: 3, max: 10, width: $(".check_product_name").width(), selectFirst: false, scroll: false, dataType: "json", formatItem: function(data, i, max, value, term) { search_term = term; // adding the little if ($('.ac_results').find('.separation').length == 0) $('.ac_results').css('background-color', '#EFEFEF') .prepend('<div style="color:#585A69; padding:2px 5px">{l s='Use a product from the list'}<div class="separation"></div></div>'); return value; }, parse: function(data) { var mytab = new Array(); for (var i = 0; i < data.length; i++) mytab[mytab.length] = { data: data[i], value: data[i].name }; return mytab; }, extraParams: { ajax: 1, action: 'checkProductName', id_lang: {$id_lang} } } ) .result(function(event, data, formatted) { // keep the searched term in the input $('#name_{$id_lang}').val(search_term); jConfirm('{l s='Do you want to use this product?'} <strong>'+data.name+'</strong>', '{l s='Confirmation'}', function(confirm){ if (confirm == true) document.location.href = '{$link->getAdminLink('AdminProducts', true)}&updateproduct&id_product='+data.id_product; else return false; }); }); }); {/if} </script> {if isset($display_common_field) && $display_common_field} <div class="warn" style="display: block">{l s='Warning, if you change the value of fields with an orange bullet %s, the value will be changed for all other shops for this product' sprintf=$bullet_common_field}</div> {/if} {include file="controllers/products/multishop/check_fields.tpl" product_tab="Informations"} <div class="separation"></div> <div id="warn_virtual_combinations" class="warn" style="display:none">{l s='You cannot use combinations with a virtual product.'}</div> <div> <label class="text">{$bullet_common_field} {l s='Type:'}</label> <input type="radio" name="type_product" id="simple_product" value="{Product::PTYPE_SIMPLE}" {if $product_type == Product::PTYPE_SIMPLE}checked="checked"{/if} /> <label class="radioCheck" for="simple_product">{l s='Product'}</label> <input type="radio" name="type_product" id="pack_product" value="{Product::PTYPE_PACK}" {if $product_type == Product::PTYPE_PACK}checked="checked"{/if} /> <label class="radioCheck" for="pack_product">{l s='Pack'}</label> <input type="radio" name="type_product" id="virtual_product" value="{Product::PTYPE_VIRTUAL}" {if $product_type == Product::PTYPE_VIRTUAL}checked="checked"{/if} /> <label class="radioCheck" for="virtual_product">{l s='Virtual Product (services, booking and downloadable products)'}</label> </div> <div class="separation"></div> <br /> <table cellpadding="5" style="width: 50%; float: left; margin-right: 20px; border-right: 1px solid #CCCCCC;"> {* global information *} <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="name" type="default" multilang="true"} <label>{l s='Name:'}</label> </td> <td style="padding-bottom:5px;" class="translatable"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if} float: left;"> <input class="{$class_input_ajax}{if !$product->id}copy2friendlyUrl{/if} updateCurrentText" size="43" type="text" {if !$product->id}disabled="disabled"{/if} id="name_{$language.id_lang}" name="name_{$language.id_lang}" value="{$product->name[$language.id_lang]|htmlentitiesUTF8|default:''}"/><sup> *</sup> <span class="hint" name="help_box">{l s='Invalid characters:'} <>;=#{}<span class="hint-pointer"> </span> </span> </div> {/foreach} </td> </tr> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="auteur" type="default" multilang="true"} <label>{l s='Auteur:'}</label> </td> <td style="padding-bottom:5px;"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if} float: left;"> <input class="{$class_input_ajax}{if !$product->id}copy2friendlyUrl{/if} updateCurrentText" size="43" type="$ id="auteur_{$language.id_lang}" name="auteur_{$language.id_lang}" value="{$product->auteur[$language.id_lang]|htmlentitiesUTF8|default:''}"/> </div> {/foreach} </td> </tr> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="editeur" type="default" multilang="true"} <label>{l s='Editeur:'}</label> </td> <td style="padding-bottom:5px;"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if} float: left;"> <input class="{$class_input_ajax}{if !$product->id}copy2friendlyUrl{/if} updateCurrentText" size="43" type="$ id="editeur_{$language.id_lang}" name="editeur_{$language.id_lang}" value="{$product->editeur[$language.id_lang]|htmlentitiesUTF8|default:''}"/> </div> {/foreach} </td> </tr> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="collection" type="default" multilang="true"} <label>{l s='Collection:'}</label> </td> <td style="padding-bottom:5px;"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if} float: left;"> <input class="{$class_input_ajax}{if !$product->id}copy2friendlyUrl{/if} updateCurrentText" size="43" type="$ id="collection_{$language.id_lang}" name="collection_{$language.id_lang}" value="{$product->collection[$language.id_lang]|htmlentitiesUTF8|default:''}"/> </div> {/foreach} </td> </tr> <tr> <td class="col-left"><label>{$bullet_common_field} {l s='Reference:'}</label></td> <td style="padding-bottom:5px;"> <input size="55" type="text" name="reference" value="{$product->reference|htmlentitiesUTF8}" style="width: 130px; margin-right: 44px;" /> <span class="hint" name="help_box">{l s='Special characters allowed:'}.-_#\<span class="hint-pointer"> </span></span> </td> </tr> <tr> <td class="col-left"><label>{$bullet_common_field} {l s='EAN13 or JAN:'}</label></td> <td style="padding-bottom:5px;"> <input size="55" maxlength="13" type="text" name="ean13" value="{$product->ean13|htmlentitiesUTF8}" style="width: 130px; margin-right: 5px;" /> <span class="small">{l s='(Europe, Japan)'}</span> </td> </tr> <tr> <td class="col-left"><label>{$bullet_common_field} {l s='UPC:'}</label></td> <td style="padding-bottom:5px;"> <input size="55" maxlength="12" type="text" name="upc" value="{$product->upc|escape:html:'UTF-8'}" style="width: 130px; margin-right: 5px;" /> <span class="small">{l s='(US, Canada)'}</span> </td> </tr> </table> {* status informations *} <table cellpadding="5" style="width: 40%; float: left; margin-left: 10px;"> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="active" type="radio" onclick=""} <label class="text">{l s='Status:'}</label> </td> <td style="padding-bottom:5px;"> <ul class="listForm"> <li> <input onclick="toggleDraftWarning(false);showOptions(true);showRedirectProductOptions(false);" type="radio" name="active" id="active_on" value="1" {if $product->active || !$product->isAssociatedToShop()}checked="checked" {/if} /> <label for="active_on" class="radioCheck">{l s='Enabled'}</label> </li> <li> <input onclick="toggleDraftWarning(true);showOptions(false);showRedirectProductOptions(true);" type="radio" name="active" id="active_off" value="0" {if !$product->active && $product->isAssociatedToShop()}checked="checked"{/if} /> <label for="active_off" class="radioCheck">{l s='Disabled'}</label> </li> </ul> </td> </tr> <tr class="redirect_product_options" style="display:none"> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="active" type="radio" onclick=""} <label class="text">{l s='Redirect:'}</label> </td> <td style="padding-bottom:5px;"> <select name="redirect_type" id="redirect_type"> <option value="404" {if $product->redirect_type == '404'} selected="selected" {/if}>{l s='No redirect (404)'}</option> <option value="301" {if $product->redirect_type == '301'} selected="selected" {/if}>{l s='Redirect permanently (301)'}</option> <option value="302" {if $product->redirect_type == '302'} selected="selected" {/if}>{l s='Redirect temporarily (302)'}</option> </select> <span class="hint" name="help_box"> {l s='404 : Not Found = Product does not exist and no redirect'}<br/> {l s='301 : Moved Permanently = Product Moved Permanently'}<br/> {l s='302 : Moved Temporarily = Product moved temporarily'} </span> </td> </tr> <tr class="redirect_product_options redirect_product_options_product_choise" style="display:none"> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="active" type="radio" onclick=""} <label class="text">{l s='Related product:'}</label> </td> <td style="padding-bottom:5px;"> <input type="hidden" value="" name="id_product_redirected" /> <input value="" id="related_product_autocomplete_input" autocomplete="off" class="ac_input" /> <p> <script> var no_related_product = '{l s='No related product'}'; var id_product_redirected = {$product->id_product_redirected|escape:html:'UTF-8'}; var product_name_redirected = '{$product_name_redirected|escape:html:'UTF-8'}'; </script> <span id="related_product_name">{l s='No related product'}</span> <span id="related_product_remove" style="display:none"> <a hre="#" onclick="removeRelatedProduct(); return false" id="related_product_remove_link"> <img src="../img/admin/delete.gif" class="middle" alt="" /> </a> </span> </p> </td> </tr> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="visibility" type="default"} <label>{l s='Visibility:'}</label> </td> <td style="padding-bottom:5px;"> <select name="visibility" id="visibility"> <option value="both" {if $product->visibility == 'both'}selected="selected"{/if} >{l s='Everywhere'}</option> <option value="catalog" {if $product->visibility == 'catalog'}selected="selected"{/if} >{l s='Catalog only'}</option> <option value="search" {if $product->visibility == 'search'}selected="selected"{/if} >{l s='Search only'}</option> <option value="none" {if $product->visibility == 'none'}selected="selected"{/if}>{l s='Nowhere'}</option> </select> </td> </tr> <tr id="product_options" {if !$product->active}style="display:none"{/if} > <td class="col-left"> {if isset($display_multishop_checkboxes) && $display_multishop_checkboxes} <div class="multishop_product_checkbox"> <ul class="listForm"> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="available_for_order" type="default"}</li> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="show_price" type="show_price"}</li> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="online_only" type="default"}</li> </ul> </div> {/if} <label>{l s='Options:'}</label> </td> <td style="padding-bottom:5px;"> <ul class="listForm"> <li> <input type="checkbox" name="available_for_order" id="available_for_order" value="1" {if $product->available_for_order}checked="checked"{/if} /> <label for="available_for_order" class="t">{l s='available for order'}</label> </li> <li> <input type="checkbox" name="show_price" id="show_price" value="1" {if $product->show_price}checked="checked"{/if} {if $product->available_for_order}disabled="disabled"{/if}/> <label for="show_price" class="t">{l s='show price'}</label> </li> <li> <input type="checkbox" name="online_only" id="online_only" value="1" {if $product->online_only}checked="checked"{/if} /> <label for="online_only" class="t">{l s='online only (not sold in store)'}</label> </li> </ul> </td> </tr> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="condition" type="default"} <label>{l s='Condition:'}</label> </td> <td style="padding-bottom:5px;"> <select name="condition" id="condition"> <option value="new" {if $product->condition == 'new'}selected="selected"{/if} >{l s='New'}</option> <option value="used" {if $product->condition == 'used'}selected="selected"{/if} >{l s='Used'}</option> <option value="refurbished" {if $product->condition == 'refurbished'}selected="selected"{/if}>{l s='Refurbished'}</option> </select> </td> </tr> </table> <table cellpadding="5" cellspacing="0" border="0" style="width: 100%;"><tr><td><div class="separation"></div></td></tr></table> <table cellspacing="0" cellpadding="5" border="0"> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="description_short" type="tinymce" multilang="true"} <label>{l s='Short description:'}<br /></label> <p class="product_description">({l s='appears in the product lists and on the top of the product page'})</p> </td> <td style="padding-bottom:5px;"> {include file="controllers/products/textarea_lang.tpl" languages=$languages input_name='description_short' input_value=$product->description_short max=$PS_PRODUCT_SHORT_DESC_LIMIT} <p class="clear"></p> </td> </tr> <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="description" type="tinymce" multilang="true"} <label>{l s='Description:'}<br /></label> <p class="product_description">({l s='appears in the body of the product page'})</p> </td> <td style="padding-bottom:5px;"> {include file="controllers/products/textarea_lang.tpl" languages=$languages input_name='description' input_value=$product->description } <p class="clear"></p> </td> </tr> {if $images} <tr> <td class="col-left"><label></label></td> <td style="padding-bottom:5px;"> <div style="display:block;width:620px;" class="hint clear"> {l s='Do you want an image associated with the product in your description?'} <span class="addImageDescription" style="cursor:pointer">{l s='Click here'}</span>. </div> <p class="clear"></p> </td> </tr> </table> <table id="createImageDescription" style="display:none;width:100%"> <tr> <td colspan="2" height="10"></td> </tr> <tr> <td class="col-left"><label>{l s='Select your image:'}</label></td> <td style="padding-bottom:5px;"> <ul class="smallImage"> {foreach from=$images item=image key=key} <li> <input type="radio" name="smallImage" id="smallImage_{$key}" value="{$image.id_image}" {if $key == 0}checked="checked"{/if} > <label for="smallImage_{$key}" class="t"> <img src="{$image.src}" alt="{$image.legend}" /> </label> </li> {/foreach} </ul> <p class="clear"></p> </td> </tr> <tr> <td class="col-left"><label>{l s='Position:'}</label></td> <td style="padding-bottom:5px;"> <ul class="listForm"> <li><input type="radio" name="leftRight" id="leftRight_1" value="left" checked> <label for="leftRight_1" class="t">{l s='left'}</label> </li> <li> <input type="radio" name="leftRight" id="leftRight_2" value="right"> <label for="leftRight_2" class="t">{l s='right'}</label> </li> </ul> </td> </tr> <tr> <td class="col-left"><label>{l s='Select the type of picture:'}</label></td> <td style="padding-bottom:5px;"> <ul class="listForm"> {foreach from=$imagesTypes key=key item=type} <li><input type="radio" name="imageTypes" id="imageTypes_{$key}" value="{$type.name}" {if $key == 0}checked="checked"{/if}> <label for="imageTypes_{$key}" class="t">{$type.name} <span>({$type.width}px {l s='by'} {$type.height}px)</span></label> </li> {/foreach} </ul> <p class="clear"></p> </td> </tr> <tr> <td class="col-left"><label>{l s='Image tag to insert:'}</label></td> <td style="padding-bottom:5px;"> <input type="text" id="resultImage" name="resultImage" /> <p class="preference_description">{l s='The tag to copy/paste into the description.'}</p> </td> </tr> <tr> <td colspan="2"> <div class="separation"></div> </td> </tr> </table> {/if} <table> <tr> <td class="col-left"><label>{l s='Tags:'}</label></td> <td style="padding-bottom:5px;" class="translatable"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if}float: left;"> <input size="55" type="text" id="tags_{$language.id_lang}" name="tags_{$language.id_lang}" value="{$product->getTags($language.id_lang, true)|htmlentitiesUTF8}" /> <span class="hint" name="help_box">{l s='Forbidden characters:'} !<;>;?=+#"°{}_$%<span class="hint-pointer"> </span></span> </div> {/foreach} <p class="preference_description clear">{l s='Tags separated by commas (e.g. dvd, dvd player, hifi)'}</p> </td> </tr> </table> </table> <br /> </div> new fields are : auteur, editeur and collection. I've declared these on override/classes/Product.php like this : <?php class Product extends ProductCore { public $auteur; public $editeur; public $collection; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['auteur'] = array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isString'); Product::$definition['fields']['editeur'] = array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isString'); Product::$definition['fields']['collection'] = array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } Link to comment Share on other sites More sharing options...
Terragg Posted January 29, 2013 Share Posted January 29, 2013 Have you set up the exact same column names in the ps_product_lang table for the new fields? By using 'lang' => true, you're suggesting that PrestShop should store and fetch from the associated *_lang table. I'm not sure about your install, but my bog-standard fresh 1.5.2 install looks for the 'informations.tpl' file instead of the 'information.tpl' for displaying product information. HTH, Link to comment Share on other sites More sharing options...
lawis Posted January 30, 2013 Author Share Posted January 30, 2013 (edited) Yes my new fields are defined in ps_product_lang table and it is informations.tpl that i have modified. I can see field on my admin tab, but they still are blank. I tried to call the {$product->auteur[$language.id_lang]|htmlentitiesUTF8|default:''} into product.tpl having filled into my mysql database but nothing appears neither. Thanks for your time spent trying helping me. Edited January 30, 2013 by lawis (see edit history) Link to comment Share on other sites More sharing options...
lawis Posted January 30, 2013 Author Share Posted January 30, 2013 (edited) I tried to go from beginning I just added my variables into prestashop/classes with the other variables, and miracle : the data appears. What the f**k with the override ? I added too into $definition my fields and now everything's working. But still if somebody has an idea for the override 'cause I don't really like modifying the base files... Edited January 30, 2013 by lawis (see edit history) Link to comment Share on other sites More sharing options...
Terragg Posted January 30, 2013 Share Posted January 30, 2013 Definitely sounds like an inheritance issue - I keep thinking that the Product object isn't being fully constructed in your overrides. I'm still learning the framework, so all I can suggest is to check objects at each step to see where the override isn't overriding as expected. Link to comment Share on other sites More sharing options...
lawis Posted January 30, 2013 Author Share Posted January 30, 2013 Thanks again for your time, I'm learning too the framework but can't find good documentation on this point. I think the constructor isn't good enough, for now I've lot of other things to do, and will let you know if I find good solution. 1 Link to comment Share on other sites More sharing options...
tgv Posted February 4, 2013 Share Posted February 4, 2013 Found it. Once you've created your override controller/class and trying to figure out why doesn't it kick in, go and delete the /cache/class_index.php file. Good luck 2 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now