thibaut33 Posted October 6, 2021 Share Posted October 6, 2021 Bonjour, alors je tiens à prévenir que je suis débutant dans le codage en général. Je suis sous prestashop 1.7 je souhaite récupérer dans mon fichier breadcrumb.tpl un tableau qui contient toutes les catégories de mon produit. J’ai actuellement : public static function getcatforbred(){ if ($product!= NULL ){ global $catebredcrum; $id_search=$product->id_product; $this->query = 'SELECT id_category FROM prstshp_category_product WHERE id_product ='.$idsearch.''; $result = Db::getInstance()->ExecuteS($this->query); $catebredcrum->assign('catearray', $result); }} dans mon fichier tools.php (je ne sais même pas s’il est bien à sa place) et : {$catearray} dans mon fichier breadcrumb.tpl mais le site ce met en erreur 500. Quelqu'un pourrait m'aider ? Link to comment Share on other sites More sharing options...
JulienPct Posted October 6, 2021 Share Posted October 6, 2021 Bonjour, Est-ce tu fais une surcharge de la classe Tools ? Pour vérifier le chemin, peux-tu le fournir ? Pourrais-tu activer le mode Debug afin de récupérer la cause de l'erreur 500 ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 7, 2021 Author Share Posted October 7, 2021 (edited) Bonjour, Non je n'ai pas créé d'override je modifie le fichier au chemin : httpdocs>classes>tools.php L'erreur qui s'affiche est : Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/Tools.php on line 4413 Edited October 7, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 7, 2021 Share Posted October 7, 2021 Bonjour, Tout d'abord, je conseille la création d'une surcharge, c'est plus sécurisé. Après une modification de classe, on doit généralement effacer le ou les dossiers situés dans le répertoire : /var/cache/ Dans ta condition, tu n'as pas besoin du "!= NULL" je pense, s'il n'y a pas de produit, alors ce sera false et ta condition ne sera pas confirmé. $id_search reçoit-il un entier ou un string ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 7, 2021 Author Share Posted October 7, 2021 (edited) D'accord, il suffit de créer un tools.php dans override>classes ? Merci beaucoup pou vos conseils, et il reçoit plusieurs entiers. Edited October 7, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 7, 2021 Share Posted October 7, 2021 C'est ça pour la classe. Remplacer le nom de la classe par : "class Tools extends ToolsCore" et bien vider le cache, voir réinitialiser certains module en fonction du besoin. Pour l'erreur, tout d'abord il faut vérifier que la requête soit bonne avec un entier en paramètre sur un logiciel de gestion de BDD. Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Je vais créer la classe, pour la requête, j’avais déjà effectué la vérification. Dois-je laisser la fonction en "public static function" ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) J'ai créé la surcharge ça supprime bien l'erreur 500, mais aucuns retours de données Je pense que la condition du if ne doit pas être vérifié. J'ai bien vidé les caches avant de faire mes tests. Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 (edited) Est-ce que t'as fonction est bien appelée ? Ne faudrait-il pas que tu passes le produit en paramètre ? Je ne pense pas que le static soit nécessaire. Edited October 8, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Comment puis-je vérifier ? Et comment je dois procéder pour le passer en paramètre ? Désolé je t'avoue que je n'y connais pas grand-chose. Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Essaye de "var_dump($product);die;" au début de ta fonction avant la condition. Si rien ne ce passe sur le site alors que tu as effectué l'action qui est sensé appeler ta fonction, alors elle n'est juste pas bien appelée. Dans le cas où cela marche, si tu obtiens un produit NULL, il faut surement le passer en paramètre de la fonction. Si tu reçois bien le produit, alors on vera. Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) Rien ne ce passe du côté front aucunes différences Ma fiche produit s'affiche toujours. Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Dans ce cas, où as-tu appelé cette fonction ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 j'ai juste mis un "{$catearray}" dans mon breadcrumb.tpl au chemin thème>template>_partials pour essayer de récupérer le contenu de ma variable Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Si tu n'appelles pas ta fonction alors elle ne sera jamais exécutée. Il faut que tu réfléchisses à quand est-ce que tu veux exécuter cette fonction (Génération de page, au clic d'un bouton, ...) et que tu trouves le controller / hook qui effectue cette action. Une fois ce dernier trouvé, tu auras une surcharge à faire de ce dernier et, dans la fonction DEJA EXISTANTE souhaitée, tu ajouteras une ligne comme : "getcatforbred();" Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 D’accord merci beaucoup pour vos explications, j'aimerais qu'elle soit exécutée sur toutes les pages au chargement. Vous savez quel hook je dois surcharger ? Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Je ne sais pas si c'est considéré comme une bonne pratique mais je mettrais mon appel dans la surcharge du constructeur du controller "FrontController.php" Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Je ne parviens pas à trouver FrontController.php dans controller>front et pour cette surcharge il suffit aussi de recréer un fichier FrontController.php dans override>controller>front ? Il n'y à pas de class à étendre dans ce cas précis ? J’ai juste à appeler la fonction si je suis bien Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Il est dans classes/controller/FrontController.php, en fonction de ton IDE tu peux utiliser le raccourci : double shift pour rechercher un fichier. Pour ce qui est de la surcharge tu auras quelques de ce type : "class FrontController extends FrontControllerCore" Le chemin pour la surcharge sera override/classes/controller/FrontController.php Tu ajoutes juste l'appel de ta fonction à la fin du constructeur. Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 J'ai ducoup rentrer ça dans : override/classes/controller/FrontController.php Et j'obtiens ceci en vidant le cache : Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Tu dois laisser le controller déjà existant et lui ajouter ton appel. Tu auras un fonction de ce style dans ton controller. public function __construct() { $this->controller_type = 'front'; global $useSSL; parent::__construct(); if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) { $this->ssl = true; } if (isset($useSSL)) { $this->ssl = $useSSL; } else { $useSSL = $this->ssl; } $this->objectPresenter = new ObjectPresenter(); $this->cart_presenter = new CartPresenter(); $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl'); $this->stylesheetManager = new StylesheetManager( [_PS_THEME_URI_, _PS_PARENT_THEME_URI_, __PS_BASE_URI__], new ConfigurationAdapter() ); $this->javascriptManager = new JavascriptManager( [_PS_THEME_URI_, _PS_PARENT_THEME_URI_, __PS_BASE_URI__], new ConfigurationAdapter() ); $this->cccReducer = new CccReducer( _PS_THEME_DIR_ . 'assets/cache/', new ConfigurationAdapter(), new Filesystem() ); getcatforbred(); } Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Ok je viens de copier l'intégralité du controlleur et j'ai rajouté ma fonction à l'emplacement excat montré ci-dessus, j'ai une erreur 500 coté front , en activant le mode debug j'obtiens : Fatal error: Uncaught Error: Call to undefined function getcatforbred() in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php:216 Stack trace: #0 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/controller/Controller.php(233): FrontControllerCore->__construct(false, false) #1 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/Dispatcher.php(510): ControllerCore::getController('ProductControll...') #2 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/index.php(28): DispatcherCore->dispatch() #3 {main} thrown in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php on line 216 Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 (edited) Si tu ajoutes au dessus de ta classes "include_once _PS_OVERRIDE_DIR_ . "classes/Tools.php", il aime bien ? Oublie pas de vider tes caches à chaques surcharges au cas où Edited October 8, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) Comme ceci ? Dans la surcharge je suppose ? L'erreur me retourne : Parse error: syntax error, unexpected 'class' (T_CLASS) in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php on line 35 enfaite j'avais oublié un ';' derrière la ligne l'erreur qu'on me retourne est : atal error: Uncaught Error: Call to undefined function getcatforbred() in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php:217 Stack trace: #0 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/controller/Controller.php(233): FrontControllerCore->__construct(false, false) #1 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/Dispatcher.php(510): ControllerCore::getController('ProductControll...') #2 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/index.php(28): DispatcherCore->dispatch() #3 {main} thrown in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php on line 217 Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Effectivement c'est de ma faute, tu peux enlever le include_once. Un appel sur ce genre de classe ce fait de cette façon : "Tools::getcarforbred();" Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) J'ai mis : Dans ma surcharge , l'erreur qui me revient est : Fatal error: Uncaught Error: Call to undefined method Tools::getcarforbred() in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php:217 Stack trace: #0 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/controller/Controller.php(233): FrontControllerCore->__construct(false, false) #1 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/Dispatcher.php(510): ControllerCore::getController('ProductControll...') #2 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/index.php(28): DispatcherCore->dispatch() #3 {main} thrown in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php on line 217 Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 (edited) Tu as supprimé tes fichiers de cache ? Edited October 8, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 oui je viens de le refaire l'erreur est toujours : Fatal error: Uncaught Error: Call to undefined method Tools::getcarforbred() in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php:217 Stack trace: #0 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/controller/Controller.php(233): FrontControllerCore->__construct(false, false) #1 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/Dispatcher.php(510): ControllerCore::getController('ProductControll...') #2 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/index.php(28): DispatcherCore->dispatch() #3 {main} thrown in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php on line 217 Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Personnellement ça marche pour moi, j'ai : class Tools extends ToolsCore { public function getcatforbred(){ var_dump('1');die; if($product){ global $catebredcrum; $id_search = $product->id_product; $this->query = "SELECT id_category FROM ps_category_product WHERE id_product = ' . $id_search . '"; $result = Db::getInstance()->executeS($this->query); $catebredcrum->assign('catearray', $result); } } } class FrontController extends FrontControllerCore { public function __construct() { $this->controller_type = 'front'; global $useSSL; parent::__construct(); if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) { $this->ssl = true; } if (isset($useSSL)) { $this->ssl = $useSSL; } else { $useSSL = $this->ssl; } $this->objectPresenter = new ObjectPresenter(); $this->cart_presenter = new CartPresenter(); $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl'); $this->stylesheetManager = new StylesheetManager( [_PS_THEME_URI_, _PS_PARENT_THEME_URI_, __PS_BASE_URI__], new ConfigurationAdapter() ); $this->javascriptManager = new JavascriptManager( [_PS_THEME_URI_, _PS_PARENT_THEME_URI_, __PS_BASE_URI__], new ConfigurationAdapter() ); $this->cccReducer = new CccReducer( _PS_THEME_DIR_ . 'assets/cache/', new ConfigurationAdapter(), new Filesystem() ); Tools::getcatforbred(); } } Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) J'ai copié coller tout ton premier dans override>classes>tools.php et tout ton deuxième override>classes>controller>Frontcontroller.php j'ai vidé les caches, et j'obtiens : Fatal error: Uncaught Error: Class 'ObjectPresenter' not found in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php:22 Stack trace: #0 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/controller/Controller.php(233): FrontController->__construct(false, false) #1 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/classes/Dispatcher.php(510): ControllerCore::getController('ProductControll...') #2 /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/index.php(28): DispatcherCore->dispatch() #3 {main} thrown in /var/www/vhosts/investir-loi-ferrand-2018.com/httpdocs/override/classes/controller/FrontController.php on line 22 j'ai surement mal fait quelque chose .... une fois le 'var_dump('1');die;" retiré en front j'ai : Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 (edited) Es-tu encore en mode debug ? Si oui, en l'enlevant, cela règle-t-il le problème ? Edited October 8, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Oui en l'enlevant ma fiche produit apparaît, mais les valeurs de {$catearray} n'apparaissent toujours pas Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Donc on sait qu'il n'y a pas d'erreur sur le code, ou tout du moins, pas sur celui là. Maintenant var_dump ta variable $product au début de ta fonction. Si elle est vide, alors passe la en paramètre. Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 j'ai rajouté le "var_dump($product);" avant mon if sur la surchage, ou suis-je censé voir le résultat du var dump ? Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Tout en haut de ta page. Ajoute "die;" après Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 c'est fait, je n'ai rien en haut de ma fiche produit : j'ai bien vidé les caches et mon fichier override>classes> tools.php contient <?php class Tools extends ToolsCore { public function getcatforbred(){ var_dump($product);die; if($product){ global $catebredcrum; $id_search = $product->id_product; $this->query = "SELECT id_category FROM ps_category_product WHERE id_product = ' . $id_search . '"; $result = Db::getInstance()->executeS($this->query); $catebredcrum->assign('catearray', $result); } } } ?> Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Le var_dump('1'); que tu as retiré était pris en compte ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 non je viens de le remettre rien ne s'affiche en front sur ma page produit Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Peux-tu mettre un die('1'); dans le constructeur de FrontController.php avant ton appel de fonction ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Comme ca ? je l'ai mis dans la surcharge aucunes différences sur le front Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Dernier test, si tu mets ce die dans la classe Tools mais l'originale, au même endroit, si rien ne ce passe, alors tu as un gros problème de cache, sinon c'est ta surcharge qui n'est pas prise en compte Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) Quand je mets le die dans la classe tools ça m'affiche une page blanche avec marqué 1 en haut Je l'ai mis en dehors de la fonction, et quand je le mets dans l'overide de la class tools en dehors de la fonction aussi ça me donne le même résultat ça prouve que l'overide est bien prise en compte Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Ok donc c'est la surcharge. Est-elle bien dans le dossier au chemin : override/classes/Tools.php ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 oui oui tout à fait Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Les fichiers "/var/cache/prod" et "/var/cache/dev" ont été supprimé ? Le cache du navigateur "Ctrl + Maj + Supr" vidé ? Voir même le cache Smarty via l'administration dans les paramètres du site vidé ? Mode debug désactivé ? Même si je penses que oui sinon il y aurait une erreur Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 oui oui pour les deux dossiers je n'ai pas vidé mon cache de navigateur par contre je l'ai désactivé pour les essaies et mon mode debug est bien désactivé Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Et avec ces code rien ne marche 🤔 <?php class Tools extends ToolsCore { public function getcatforbred(){ var_dump($product);die; if($product){ global $catebredcrum; $id_search = $product->id_product; $this->query = "SELECT id_category FROM ps_category_product WHERE id_product = ' . $id_search . '"; $result = Db::getInstance()->executeS($this->query); $catebredcrum->assign('catearray', $result); } } } <?php use PrestaShop\PrestaShop\Adapter\Configuration as ConfigurationAdapter; use PrestaShop\PrestaShop\Adapter\ContainerBuilder; use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever; use PrestaShop\PrestaShop\Adapter\Presenter\Cart\CartPresenter; use PrestaShop\PrestaShop\Adapter\Presenter\Object\ObjectPresenter; use Symfony\Component\Debug\Debug; use Symfony\Component\Filesystem\Filesystem; class FrontController extends FrontControllerCore { public function __construct() { $this->controller_type = 'front'; global $useSSL; parent::__construct(); if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) { $this->ssl = true; } if (isset($useSSL)) { $this->ssl = $useSSL; } else { $useSSL = $this->ssl; } $this->objectPresenter = new ObjectPresenter(); $this->cart_presenter = new CartPresenter(); $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl'); $this->stylesheetManager = new StylesheetManager( [_PS_THEME_URI_, _PS_PARENT_THEME_URI_, __PS_BASE_URI__], new ConfigurationAdapter() ); $this->javascriptManager = new JavascriptManager( [_PS_THEME_URI_, _PS_PARENT_THEME_URI_, __PS_BASE_URI__], new ConfigurationAdapter() ); $this->cccReducer = new CccReducer( _PS_THEME_DIR_ . 'assets/cache/', new ConfigurationAdapter(), new Filesystem() ); Tools::getcatforbred(); } } Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 je viens de copié coller, maintenant j'ai une page blanche en front avec la valeur NULL qui m'ai retourné Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Ah heureusement sinon j'y comprenait plus rien 😅. Où as-tu besoin des catégories ? car une fonction qui récupère les catégories existes déjà, cependant il faut qu'un produit soit présent dans le contexte. Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 j'en ai besoin dans le breadcrumb il ne se génère pas bien seul j'aimerais le construire moi même. Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Ok, je penses que ce serait mieux de le réparer mais je vais te dire où ajouter tes catégories. Dans la plupart des cas, la fonction "getProducts()" située dans le fichier "src/Core/Product/Search/ProductSearchResult.php". Tout d'abord, est-ce que si, tu ajoute directement dans cette fonction un "die('1');" au début de la fonction, as-tu une page blanche là où tu le souhaite sur le site ? Ne pas oublier de vider le cache Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Le problème et que le breadcrumb marchait bien, jusqu'a que je décide de faire passer les marques à la place des catégories dans l'URL c'est sa qui à tout mis en l'air maintenant le breadcrumb de toutes les fiches produits affiches : ACCUEIL > PRODUIT et je voudrais remettre en place le Accueil>catégorie>sous-catégorie>produit sans rechanger les URLS .... Je fais le test dessuite pour la fonction, et encore merci pour ton implication dans mon problème Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 2 minutes ago, thibaut33 said: Le problème et que le breadcrumb marchait bien, jusqu'a que je décide de faire passer les marques à la place des catégories dans l'URL c'est sa qui à tout mis en l'air maintenant le breadcrumb de toutes les fiches produits affiches : ACCUEIL > PRODUIT et je voudrais remettre en place le Accueil>catégorie>sous-catégorie>produit sans rechanger les URLS .... Je fais le test dessuite pour la fonction, et encore merci pour ton implication dans mon problème J'ai pas trop compris le problème des marques etc ? Quand tu es dans la fiche d'un produit ton url est : ACCUEIL / Categorie / Produit ? Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 Pour le die il n'apparaît pas sur ma fiche produit. Avant de changer le fonctionnement des URLS elles étaient constituées comme ceci : maboutique.com/catégorie/produit et le breadcrumb était nickel, J'ai ensuite fait en sorte qu'elle soit : maboutique.com/marque/produit et depuis ça le breadcrumb de mes fiches produits n'affiche plus les catégories/sous-catégories Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 Pourquoi ne pas avoir mis les marques en catégories ? Je t'avoue que ce serait vraiment plus simple. Link to comment Share on other sites More sharing options...
thibaut33 Posted October 8, 2021 Author Share Posted October 8, 2021 (edited) Je le sais, mais c'est une refonte d'un site déjà existant pour lequel on refait toute l'architecture des catégories, et pour garder les URLS déjà existantes sans devoir faire un livre de redirection et ne pas perdre tout le SEO j'ai mis les anciens chemins URLS grâce aux marques.... C'est pour cela que je voulais refaire tout le fonctionnement du breadcrumb Edited October 8, 2021 by thibaut33 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 (edited) Je pense que le mieux serait quand même de mettre les catégorie. Sinon le code que tu as mis devrait marcher si tu retourne sur la page d'accueil. Cependant, dans mon cas je n'ai pas besoin de mes catégories sur ma fiche produit donc je n'ai pas trouvé où est-ce que le produit est récupéré, je ne peux que te donner des pistes. Tout d'abord il faut trouver le controller / hook / ... qui assigne ton produit, il faut donc mettre des "die;" un peu partout (dans des controllers cohérents) et voir quand est-ce qu'ils sont pris en compte. Après il faut faire le chemin des données jusqu'à ce que tu arrives à un "getProducts()" normalement. Si dans ce "getProducts()" ton "die;" fonctionne alors, si ton fichier est surchargeable, on le surcharge sinon on modifie directement cette fonction ou une suivante en notant les modifications en cas de mise à jour. Dans tout les cas tu y ajouteras un code de ce style : foreach ($this->products as &$product){ $categoriesList = \Product::getProductCategories($product['id_product']); $product['categories'] = ( \Category::getCategoryInformation($categoriesList)); } return $this->products; Pour les autres pages, comme dis précédemment, le fichier ProductSearchResult.php devrait marcher sur quelques-unes minnimum. Ne pas oublier de faire un "$product->update();" au besoin Edited October 8, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 8, 2021 Share Posted October 8, 2021 (edited) Contrairement à ce que j'ai dis, je dois actuellement avoir mes catégories dans ma fiche produit 🤣. Je commence à chercher, si jamais tu as du nouveau, je suis preneur. Après j'en ai besoin dans un module donc ce sera plus simple normalement Edited October 8, 2021 by JulienPct (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