Semaphore Posted July 2, 2012 Share Posted July 2, 2012 (edited) Bonjour, PS1.5 ne semble pas m'indexer les références des déclinaisons ce qui limite considérablement l'inrêt de ces derniers ^^ option à activer ? Bug ? Override à faire qque part ? Je ne cache pas que c'est LA fonction qui me manque pour la mise en ligne de mon client... Cordialement, Edited July 2, 2012 by Semaphore (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted July 2, 2012 Share Posted July 2, 2012 quand tu dits indexé, tu parles de référencement dans le sitemap, ou dans la page category, ou autre... Link to comment Share on other sites More sharing options...
Semaphore Posted July 2, 2012 Author Share Posted July 2, 2012 En fait je parle de l indexation pour la recherche. Dans l état actuel les référence des déclinaisons ne sont pas searchable ! Link to comment Share on other sites More sharing options...
coeos.pro Posted July 2, 2012 Share Posted July 2, 2012 ok, pour la recherche alors, à mon avis ça rejoint la fonction find dans search : http://www.prestashop.com/forums/topic/175379-resolu-modification-fonction-recherche-sur-le-champs-reference/ déjà upgradée. à mon avis dans : $whereArray[] = ' p.id_product '.($word[0] == '-' ? 'NOT' : '').' IN ( SELECT id_product FROM '._DB_PREFIX_.'search_word sw LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word WHERE sw.id_lang = '.(int)$id_lang.'.... il faut rajouter la table ps_product_attribute (champ reference) Link to comment Share on other sites More sharing options...
Semaphore Posted July 2, 2012 Author Share Posted July 2, 2012 Je sens que cela risque d être un peu chaud pour moi à voir. Mais je trouve étrange que je soit le premier à qui cela pose problème . Un seb sur le sujet ? Link to comment Share on other sites More sharing options...
coeos.pro Posted July 2, 2012 Share Posted July 2, 2012 Mais je trouve étrange que je soit le premier à qui cela pose problème c'est comme la fonction de recherche, bizarrement ça intéresse une poignée de personnes alors que le nombre de téléchargement de prestashop est à 1.6 millions... soit ça n'intéresse vraiment personne, soit tous le monde pense que ça marche parfaitement bien et personne ne fait de test Link to comment Share on other sites More sharing options...
Semaphore Posted July 3, 2012 Author Share Posted July 3, 2012 (edited) Bon après 1H de lecture passionnante de code j'ai bien compris qu'il fallait surtout qu'ils soient indexés ces champs. Et comme par miracle il y a déjà une fonction getAttributes qui vient interroger la table qui nous interresse pour y indexer les name des attributs mais pas la ref.... On intervient alors pour juste ajouté la ref dans le SELECT et dans la boucle de sortie pour compléter la variable qui alimentera l'index ce qui nous donne ceci à mettre dans l'override du find : public static function getAttributes($db, $id_product, $id_lang) { if (!Combination::isFeatureActive()) return ''; $attributes = ''; $attributesArray = $db->executeS(' SELECT al.name, pa.reference FROM'._DB_PREFIX_.'product_attribute pa INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.id_product_attribute = pac.id_product_attribute INNER JOIN '._DB_PREFIX_.'attribute_lang al ON (pac.id_attribute = al.id_attribute AND al.id_lang = '.(int)$id_lang.') '.Shop::addSqlAssociation('product_attribute', 'pa').' WHERE pa.id_product = '.(int)$id_product); foreach ($attributesArray as $attribute) $attributes .= $attribute['name'].' '.($attribute['reference'] != "" ? $attribute['reference'].' ' : ''); return $attributes; } N'étant pas codeur de métier je vous invite à me corriger en cas d'erreur. Edited July 3, 2012 by Semaphore (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted July 3, 2012 Share Posted July 3, 2012 à mon avis c'est plutot: SELECT al.name, pa.reference FROM '._DB_PREFIX_.'product_attribute pa quand tu mets un ? met des () c'est plus lisible et ça évite aussi des erreurs, d'ailleurs il y a une ) sans ( à cette ligne De plus dans la fonction indexation il y a ça: $product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']); $product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']); $product['features'] = Search::getFeatures($db, (int)$product['id_product'], (int)$product['id_lang']); Donc à mon avis il faudrait plutôt rajouter une nouvelle fonction (similaire à getAttributes : getReferences qui ne donnerais que les références, de manière à avoir ensuite dans la fonction indexation : $product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']); $product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']); $product['reference'] = Search::getReferences ($db, (int)$product['id_product']); $product['features'] = Search::getFeatures($db, (int)$product['id_product'], (int)$product['id_lang']); 1 Link to comment Share on other sites More sharing options...
Semaphore Posted July 3, 2012 Author Share Posted July 3, 2012 Ouch faute de frappe tout ca corrigée depuis sur mon site ^^ Faut pas faire des choses à 3H ^^ Why not ajouter une fonction mais comme il y a déjà une requête qui attaque cette table pourquoi en rajouter une ? IJe n'ai pass traité içi non plus la gestion du poids de cette valeur dans les tris etc... Dans tout les cas cette solution fonctionne pour les amateurs. Link to comment Share on other sites More sharing options...
coeos.pro Posted July 3, 2012 Share Posted July 3, 2012 il y a déjà une requête qui attaque cette table pourquoi en rajouter une ? dans la fonction indexation tu as $product['attributes'] (comme je l'ai mis plus haut) qui contient les attributs, si tu modifies la fonction getAttributes alors $product['attributes'] contiendra les attributs et les références, sans compter que les références peuvent être dupliquées. (c'est mon avis après 5 min de réflexion, ensuite il faut voir ça dans sa globalité et surtout comment retrouver les références...) Link to comment Share on other sites More sharing options...
Semaphore Posted July 3, 2012 Author Share Posted July 3, 2012 Oui ce serai plus "clean". Si j'ai le temps (jamais !!!) je recoderai un override spécifique aux refs (pfff le truc que personne ne revient dessus^^) Je peut passer en résolut malgré que ce soit un peu cracra ? Link to comment Share on other sites More sharing options...
coeos.pro Posted July 3, 2012 Share Posted July 3, 2012 tout dépend de ta définition de cracra... si la solution n'est pas apportée de manière clair et précise (avec le code correspondant) je dirais non Link to comment Share on other sites More sharing options...
Semaphore Posted July 3, 2012 Author Share Posted July 3, 2012 Heu pas compris là. Ce que je veux dire c'est est-ce que passe le sujet comme résolut sachant qu'il y a mieux à faire comme code mais que la solution fonctionne dans l'éat ? Link to comment Share on other sites More sharing options...
coeos.pro Posted July 3, 2012 Share Posted July 3, 2012 oups, si ça fonctionne, oui pas de soucis, ceux qui passent par ici sauront qu'il faut passer la fonction getAttributes en override pour éviter les soucis lors de mises à jour. Link to comment Share on other sites More sharing options...
MathieuB Posted September 27, 2012 Share Posted September 27, 2012 (edited) Hello, Un override pour ps 1.4 avait été donné dans un autre poste pour corriger le problème de recherche sur la désignation de produit mal écrite lorsqu'on recherché un GPS et tape GSP par exemple, on ne trouvait pas le produit GPS. J'ai donc ajouté ta fonction proprement codé mais pas proprement construite comme l'indiqué coeos.pro n'étant pas une nouvelle fonction getReferences mais une modification de la fonction getAttributes pour y concaténer l'indexation de l'attribut et de sa référence à savoir : public static function getAttributes($db, $id_product, $id_lang) { $attributes = ''; $attributesArray = $db->ExecuteS(' SELECT al.name, pa.reference FROM '._DB_PREFIX_.'product_attribute pa INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.id_product_attribute = pac.id_product_attribute INNER JOIN '._DB_PREFIX_.'attribute_lang al ON (pac.id_attribute = al.id_attribute AND al.id_lang = '.(int)$id_lang.') WHERE pa.id_product = '.(int)$id_product); foreach ($attributesArray AS $attribute) $attributes .= $attribute['name'].' '.($attribute['reference'] != "" ? $attribute['reference'].' ' : ''); return $attributes; } l'override à placer dans le dossier /override/classes est en pièce jointe de ce poste Merci. Search.php Edited September 27, 2012 by MathieuB (see edit history) Link to comment Share on other sites More sharing options...
julien1256 Posted October 8, 2012 Share Posted October 8, 2012 Parfait ! Le seul soucis , si je puis dire, c'est que quand on recherche sur la référence d'un attribut et qu'on ouvre donc la page produit : on ne tombe pas directement sur l'attribut en question mais sur l'attribut par défaut. Mais c'est un détail Merci! Link to comment Share on other sites More sharing options...
coeos.pro Posted October 8, 2012 Share Posted October 8, 2012 (edited) Parfait ! Le seul soucis , si je puis dire, c'est que quand on recherche sur la référence d'un attribut et qu'on ouvre donc la page produit : on ne tombe pas directement sur l'attribut en question mais sur l'attribut par défaut. Mais c'est un détail Merci! sauf erreur de ma part ce n'est pas possible en 1.4, mais possible en 1.5, je l'utilise (le lien direct vers la déclinaison) pour ce module : http://www.coeos.pro...clinaisons.html Edited October 8, 2012 by coeos.pro (see edit history) Link to comment Share on other sites More sharing options...
yentcheou Posted June 30, 2013 Share Posted June 30, 2013 Help !! Je suis sur PS 1.5.3 et j'ai bien placé search.php dans l'override/classes Malheureusement l'indexation sur les références ne se fait pas. J'ai bien forcé l'indexation à nouveau. Pouvez vous m'aider ?? Link to comment Share on other sites More sharing options...
kimzey Posted September 26, 2013 Share Posted September 26, 2013 (edited) Même problème sur un prestashop 1.5.4.1 une idée pour adapter cet override ? Merci. Edited September 26, 2013 by kimzey (see edit history) Link to comment Share on other sites More sharing options...
kimzey Posted September 26, 2013 Share Posted September 26, 2013 Trouvé ! https://github.com/PrestaShop/PrestaShop/commit/df418a80db67253832582343f17cef927f93c0ba Link to comment Share on other sites More sharing options...
Squadra Unica Posted February 27, 2014 Share Posted February 27, 2014 Trouvé ! https://github.com/PrestaShop/PrestaShop/commit/df418a80db67253832582343f17cef927f93c0ba Super merci Link to comment Share on other sites More sharing options...
Tatort Posted May 15, 2017 Share Posted May 15, 2017 Je déterre le topic mais as-tu trouvé une solution... Je recherche exactement la même chose ! Je voudrais afficher en recherche rapide directement la variation déclinaison souhaité et idem au clic... Merci Parfait ! Le seul soucis , si je puis dire, c'est que quand on recherche sur la référence d'un attribut et qu'on ouvre donc la page produit : on ne tombe pas directement sur l'attribut en question mais sur l'attribut par défaut.Mais c'est un détail Merci! 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