aumweb Posted January 16, 2015 Share Posted January 16, 2015 Bonjour à tous, suite à une Erreur 500 dû à la duplication de produit mal supporter par prestashop j'avais l'erreur suivante: Invalid product vars at line 104 in file classes/Link.phpJ'ai appliqué la solution suivante: Open that file and find the function called public function getProductLink( replace -- $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($product)) { if (is_array($product) && isset($product['id_product'])) $product = new Product($product['id_product'], false, $id_lang, $id_shop); elseif ((int)$product) $product = new Product((int)$product, false, $id_lang, $id_shop); else throw new PrestaShopException('Invalid product vars'); } with if (!$id_shop) $shop = Context::getContext()->shop; else $shop = new Shop($id_shop); if (!is_object($product)) { if (is_array($product) && isset($product['id_product'])) $product = new Product($product['id_product'], false, $id_lang); else if (is_numeric($product) || !$product) $product = new Product($product, false, $id_lang); else throw new PrestaShopException('Invalid product vars'); } Ce qui m'a permis de voir à nouveau mon front office. Mon problème est que maintenant je reçois l'erreur suivante: Notice: Undefined variable: url in /home/www/mercuriusfrance/classes/Link.php on line 151 ce qui empêche d'aller au pages produits.... merci d'avance pour votre aide Link to comment Share on other sites More sharing options...
ChDUP Posted January 16, 2015 Share Posted January 16, 2015 sur la première ligne de ce que vous avez remplacé on définit $url qui doit bien sur être utilisé plus loin (ligne 151) mais dans ce que vous avez mis à la place on ne définit pas $url d'où votre erreur Je ne vois pas pourquoi avoir touché au coeur de Presta suite à une mauvaise importation de produit ? Link to comment Share on other sites More sharing options...
aumweb Posted January 16, 2015 Author Share Posted January 16, 2015 Bonjour, merci de votre retour. Mon client a eu une erreur 500 suite à des duplicata de produit (et non des imports). J'ai donc eu l'erreur précité et j'ai corrigé celle-ci en suivant ce qui est indiqué soit le remplacement du code incriminé. Je n'ai donc plus maintenant d'erreur 500 mais bien un problème puisque je ne peux plus afficher les produits.... Je n'ai pas bien compris ce que vous me conseiller de faire? Pouvez vous s'il vous plait être plus explicite? Link to comment Share on other sites More sharing options...
ChDUP Posted January 16, 2015 Share Posted January 16, 2015 J'ai donc eu l'erreur précité et j'ai corrigé celle-ci en suivant ce qui est indiqué soit le remplacement du code incriminé. Ce qui est indiqué où ? Je vous conseille surtout de remettre le code d'origine et de rechercher la cause veritable du problème ! Comme je vois venir votre réponse, remplacez votre première condition par ceci if (!$id_shop) { $shop = Context::getContext()->shop; $url = $this->getBaseLink($shop->id).$this->getLangLink($id_lang, null, $shop->id); } else { $shop = new Shop($id_shop); $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); } Mais que c'est moche. Vous allez au dela de multiples problèmes. Link to comment Share on other sites More sharing options...
aumweb Posted January 16, 2015 Author Share Posted January 16, 2015 merci pour le conseil. J'ai donc remis le fichier d'origine link.php. Je me retrouve donc avec l'erreur suivante: [PrestaShopException]Invalid product varsat line 104 in file classes/Link.php 98. if (is_array($product) && isset($product['id_product']))99. $product = new Product($product['id_product'], false, $id_lang, $id_shop);100. elseif ((int)$product)101. $product = new Product((int)$product, false, $id_lang, $id_shop);102. else103. throw new PrestaShopException('Invalid product vars');104. }105. 106. // Set available keywords107. $params = array();108. $params['id'] = $product->id; LinkCore->getProductLink - [line 190 - tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code] - [3 Arguments]Warning: file(/home/www/mercuriusfrance/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code): failed to open stream: No such file or directory in /home/www/mercuriusfrance/classes/exception/PrestaShopException.php on line 102Warning: array_slice() expects parameter 1 to be array, boolean given in /home/www/mercuriusfrance/classes/exception/PrestaShopException.php on line 110 content_54b9339f5a0163_41197963 - [line 188 - tools/smarty/sysplugins/smarty_internal_templatebase.php] - [1 Arguments] Link to comment Share on other sites More sharing options...
ChDUP Posted January 16, 2015 Share Posted January 16, 2015 Ce qui est indiqué où ? Une duplication de produit ne pose pas de souci normalement. Qu'est-ce qui a été fait exactement ? Quelle version utilisez-vous ? Pourquoi ne pas remettre une copie de la base d'avant cette duplication ? Link to comment Share on other sites More sharing options...
aumweb Posted January 16, 2015 Author Share Posted January 16, 2015 Oui je sais que normalement c'est pas censé crashé le site... j'utilise la version 1.6.0.9 je n'ai pas de copie de la base avant ce crash (oui je sais c'est un oublie qui arrive toujours au mauvais moment)... Link to comment Share on other sites More sharing options...
ChDUP Posted January 19, 2015 Share Posted January 19, 2015 et si vous supprimez le produit dupliqué, vous n'avez plus cette erreur ? Link to comment Share on other sites More sharing options...
Eolia Posted January 19, 2015 Share Posted January 19, 2015 (edited) En fait la modif n'était pas mal mais vous avez oublié de remettre $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); Après la redéfinition de l'$id_shop. Donc remplacez: $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($product)) { if (is_array($product) && isset($product['id_product'])) $product = new Product($product['id_product'], false, $id_lang, $id_shop); elseif ((int)$product) $product = new Product((int)$product, false, $id_lang, $id_shop); else throw new PrestaShopException('Invalid product vars'); } par: if (!$id_shop) { Context::getContext()->shop = Shop::initialize(); $id_shop = Context::getContext()->shop->id; } $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($product)) { if (is_array($product) && isset($product['id_product'])) $product = new Product($product['id_product'], false, $id_lang); else if (is_numeric($product) || !$product) $product = new Product($product, false, $id_lang); else throw new PrestaShopException('Invalid product vars'); } Edited January 19, 2015 by Eolia (see edit history) 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