houin Posted July 26, 2014 Share Posted July 26, 2014 Bonjour j'ai surchargé la classe qui modélise les produits. En l’occurrence la classe ProductCore.Tout se passe dans le dossier ./override/classes/. Créez-y le fichier Product.php et insérez le code suivant : <?php {class Product extends ProductCore public $rrp; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { self::$definition['fields']['rrp'] = array('type' => self::TYPE_FLOAT, 'validate' => 'isCleanHtml'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } ?> Tout fonctionne trés bien .Par contre j'ai besoin de nouveau à surchargé cette classe avec le même fichier :Product.php et y coller : <?php class Product extends ProductCore { public $pointsforts; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } ?> Donc j'ai essayé cela : <?php class Product extends ProductCore { public $rrp; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { self::$definition['fields']['rrp'] = array('type' => self::TYPE_FLOAT, 'validate' => 'isCleanHtml'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } class Product extends ProductCore { public $pointsforts; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } ?> Résultat une page blanche . Quelqu'un à t'il une idée pour utilisé le même fichier pour surcharger deux fois la classe ? Merci Link to comment Share on other sites More sharing options...
roillion Posted July 27, 2014 Share Posted July 27, 2014 Salut, Tu sais comment ca marche une classe ? class Product extends ProductCore //définition de ta classe ici { //contenu } La tu l'a défini 2 fois... En vrai ca donne : class Product extends ProductCore { public $pointsforts; public $rrp; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isString'); Product::$definition['fields']['rrp'] = array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } Enjoy Link to comment Share on other sites More sharing options...
houin Posted July 27, 2014 Author Share Posted July 27, 2014 Salut, Tu sais comment ca marche une classe ? class Product extends ProductCore //définition de ta classe ici { //contenu } La tu l'a défini 2 fois... En vrai ca donne : class Product extends ProductCore { public $pointsforts; public $rrp; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isString'); Product::$definition['fields']['rrp'] = array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } Enjoy Merci pour ton aide cela fonctionne à merveille. Et je suis tout nouveau en programmation. Je voudrais aussi rajouté ceci: <?php class Product extends ProductCore { /** * Get prices drop * * @param integer $id_lang Language id * @param integer $pageNumber Start from (optional) * @param integer $nbProducts Number of products to return (optional) * @param boolean $count Only in order to get total number (optional) * @return array Prices drop */ public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { parent::__construct($id_product, $id_lang, $id_shop); if (!$context) $context = Context::getContext(); if ($full && $this->id) { $this->isFullyLoaded = $full; $this->tax_name = 'deprecated'; // The applicable tax may be BOTH the product one AND the state one (moreover this variable is some deadcode) $this->manufacturer_name = Manufacturer::getNameById((int)$this->id_manufacturer); $this->supplier_name = Supplier::getNameById((int)$this->id_supplier); $this->defcat_name = Product::defCat((int)$this->id_category_default); // Ajout pour afficher le nom de la catégorie par defaut du produit $address = null; if (is_object($context->cart) && $context->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')} != null) $address = $context->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; $this->tax_rate = $this->getTaxesRate(new Address($address)); $this->new = $this->isNew(); // keep base price $this->base_price = $this->price; $this->price = Product::getPriceStatic((int)$this->id, false, null, 6, null, false, true, 1, false, null, null, null, $this->specificPrice); $this->unit_price = ($this->unit_price_ratio != 0 ? $this->price / $this->unit_price_ratio : 0); if ($this->id) $this->tags = Tag::getProductTags((int)$this->id); $this->loadStockData(); } if ($this->id_category_default) $this->category = Category::getLinkRewrite((int)$this->id_category_default, (int)$id_lang); } public function defCat($id_category_default) { $category = new Category($id_category_default); $defcat_name = $category->getName(); return $defcat_name; } } ?> Peut tu m'aider .Merci beaucoup Link to comment Share on other sites More sharing options...
roillion Posted July 29, 2014 Share Posted July 29, 2014 Et ? je vois pas quel est le problème ? Tu modifie la fonction __construc comme selon mon exemple. Tu rajoute au dessus (en attribut) les 2 paramètres (comme selon mon exemple) Link to comment Share on other sites More sharing options...
houin Posted July 30, 2014 Author Share Posted July 30, 2014 Et ? je vois pas quel est le problème ? Tu modifie la fonction __construc comme selon mon exemple. Tu rajoute au dessus (en attribut) les 2 paramètres (comme selon mon exemple) Merci j'ai trouvé.Par contre depuis que j'ai créé ce fichier product.php j'ai un problème quand je vais dans le back office et que je veux changer les quantités du produit. Avant quand je changé la quantité j'avais une tooplit vert marqué : "données enregistrée" Maintenant j'ai un tooplit de couleur rouge. Peut tu m'aidé stp.Merci Link to comment Share on other sites More sharing options...
roillion Posted July 30, 2014 Share Posted July 30, 2014 Elle servent à quoi les fonctions que tu as rajoutées ?Ca marche si tu les enlèves ? Link to comment Share on other sites More sharing options...
houin Posted July 30, 2014 Author Share Posted July 30, 2014 Elle servent à quoi les fonctions que tu as rajoutées ? Ca marche si tu les enlèves ? Oui si je supprime le fichier product.php dans override cela fonctionne. J'ai suivi ce tuto http://www.prestashop.com/forums/topic/343411-r%C3%A9solu-ajouter-un-champs-dans-ladministration-presta-16/?do=findComment&comment=1744190 Link to comment Share on other sites More sharing options...
roillion Posted July 30, 2014 Share Posted July 30, 2014 Regarde celui là il récapitule ta discusion http://www.geraudlacheny.fr/ajouter-champ-personnalise-produit-prestashop/ Tu veux faire quoi au final ? Tu as réussi à ajouté ton champ tu voulais quoi d'autre ? Link to comment Share on other sites More sharing options...
houin Posted July 30, 2014 Author Share Posted July 30, 2014 Regarde celui là il récapitule ta discusion http://www.geraudlacheny.fr/ajouter-champ-personnalise-produit-prestashop/ Tu veux faire quoi au final ? Tu as réussi à ajouté ton champ tu voulais quoi d'autre ? Notice à la ligne 226 du fichier C:\wamp\www\se\cache\smarty\compile\f6\e4\60\f6e4603d8cb8374ea6cd0fde2aa2458846de8d1e.file.prices.tpl.php [8] Undefined index: id_lang Notice à la ligne 226 du fichier C:\wamp\www\se\cache\smarty\compile\f6\e4\60\f6e4603d8cb8374ea6cd0fde2aa2458846de8d1e.file.prices.tpl.php [8] Trying to get property of non-object J ai ces deux erreurs mais l je ne comprends pas Link to comment Share on other sites More sharing options...
roillion Posted July 30, 2014 Share Posted July 30, 2014 Dans ton price.tpl tu as la variable id_lang line 226 qui est inconnu. Tu veux faire quoi au final ? Tu as réussi à ajouté ton champ tu voulais quoi d'autre ? Link to comment Share on other sites More sharing options...
houin Posted July 30, 2014 Author Share Posted July 30, 2014 Dans ton price.tpl tu as la variable id_lang line 226 qui est inconnu. <div class="form-group" {if !$ps_use_ecotax} style="display:none;"{/if}> <label class="control-label col-lg-3" for="ecotax"> {include file="controllers/products/multishop/checkbox.tpl" field="ecotax" type="default"} <span class="label-tooltip" data-toggle="tooltip" title="{l s='The ecotax is a local set of taxes intended to "promote ecologically sustainable activities via economic incentives". It is already included in retail price: the higher this ecotax is, the lower your margin will be.'}"> {l s='Ecotax (tax incl.)'} A partir de la ligne 226 j'ai cela.Une idée? Link to comment Share on other sites More sharing options...
roillion Posted July 31, 2014 Share Posted July 31, 2014 Non ! Mais tu n'as toujours pas répondu à ma question. Je la repose une 3ème fois au cas ou : Tu veux faire quoi au final ? Tu as réussi à ajouté ton champ tu voulais quoi d'autre ? Link to comment Share on other sites More sharing options...
houin Posted August 1, 2014 Author Share Posted August 1, 2014 Non ! Mais tu n'as toujours pas répondu à ma question. Je la repose une 3ème fois au cas ou : Tu veux faire quoi au final ? Tu as réussi à ajouté ton champ tu voulais quoi d'autre ? Bonsoir j'installe ce tuto ; http://www.prestasho...6/#entry1744190: Et je n'ai plus que cette erreur: Notice à la ligne 226 du fichier C:\wamp\www\se\cache\smarty\compile\f6\e4\60\f6e4603d8cb8374ea6cd0fde2aa2458846de8d1e.file.prices.tpl.php [8] Undefined index: id_lang Notice à la ligne 226 du fichier C:\wamp\www\se\cache\smarty\compile\f6\e4\60\f6e4603d8cb8374ea6cd0fde2aa2458846de8d1e.file.prices.tpl.php [8] Trying to get property of non-object Alors je suis allé chercher le fichier : compile\f6\e4\60\f6e4603d8cb8374ea6cd0fde2aa2458846de8d1e Et j'ai cela: <!-- Prix par Paquet --> <div class="form-group"> <label class="control-label col-lg-2" for="pointsforts_<?php echo $_smarty_tpl->tpl_vars['id_lang']->value;?> "> <?php echo $_smarty_tpl->getSubTemplate ("controllers/products/multishop/checkbox.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, null, null, array('field'=>"pointsforts",'type'=>"tinymce",'multilang'=>"true"), 0);?> <span class="label-tooltip" data-toggle="tooltip" title="<?php echo smartyTranslate(array('s'=>'Appears in the body of the product page.'),$_smarty_tpl);?> "> <?php echo smartyTranslate(array('s'=>'Par quantité de:'),$_smarty_tpl);?> </span> </label> <div class="col-lg-9"> <input maxlength="5" id="pointsforts" name="pointsforts" type="text" value="<?php echo $_smarty_tpl->tpl_vars['product']->value->pointsforts;?> " /> </div> </div> Alors je ne vois pas l'erreur.Une idée Merci? Link to comment Share on other sites More sharing options...
roillion Posted August 2, 2014 Share Posted August 2, 2014 Non ! C'est ton code php qui va pas je pense. Reprends CE totu => http://www.geraudlacheny.fr/ajouter-champ-personnalise-produit-prestashop/ C'est aussi pour ajouter un champ pointforts pour un produits. Il à était créer et amélioré grâce à la discussion que tu regardais. Recommence tout. C'est fait en moins de 10 min 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