Jump to content
  • 0
krismb

multiboutique et cronsearch

Question

Contexte : deux boutiques

Il y a des produits dans les 2 boutiques, des produits présent dans le boutique 1 uniquement mais aussi des produits présent dans la boutique 2 mais absent de la boutique 1.

 

Le searchcron ne prend pas en compte les produits absent dans la boutique 1.

 

conséquence j'ai une tonne de produits non trouvable et le searchcron n'index pas.

 

Que faut il faire ? un bug de searchcron ? Faut il que je créé mes produits dans la boutique 1 lance le searchcron pour ensuite les rendre invisibles ?

 

Les articles invisibles dans ma boutique 1 ne sont pas non plus indexés Bon c'est normal

Share this post


Link to post
Share on other sites

17 answers to this question

Recommended Posts

  • 0

non je prenais le searcron.php d'origine qui se trouve dans admin

 

J'ai ajouter deux lignes

 

if (Tools::getValue('shop')) Shop::setContext(Shop::CONTEXT_SHOP, Tools::getValue('shop'));
if (Tools::getValue('shop')) Context::getContext()->shop->id = Tools::getValue('shop');

 

Et je peux lancer le searcron pour un seul shop et ca marche si je laisse rien il me prend que le shop 1.

Share this post


Link to post
Share on other sites
  • 0

Rebonjour,

 

Je ne reproduis pas. Pouvez vous verifier que dans la table ps_product_shop il y a bien un id_shop pour chaque produit ? Cette fonction normalement retourne les produits avec leur id_shop

 

https://github.com/PrestaShop/PrestaShop/blob/1.6/classes/Search.php#L440

 

Comment appelez vous votre tache cron ?

 

Cordialement

Share this post


Link to post
Share on other sites
  • 0

Re,

 

Vous pouvez aussi mettre

d($sql);

avant cette ligne en appelant la cron avant cette ligne https://github.com/PrestaShop/PrestaShop/blob/master/classes/shop/Shop.php#L953

 

ce qui devrait donner

 INNER JOIN ps_product_shop product_shop
		ON (product_shop.id_product = a.id_product AND product_shop.id_shop IN (1, 2))

Cordialement

Share this post


Link to post
Share on other sites
  • 0

Bonjour

 

sans rapport mais quand même

 

 

vous dites

Pouvez vous verifier que dans la table ps_product_shop il y a bien un id_shop pour chaque produit ?

 

 

en effet car lors de la création de la "sous boutique"  tous les produits sont dupliqués un par id_shop
même ceux qui sont dans des catégories non sélectionnés lors du choix

est ce normal ??

je pensais importer que les produits des catégories sélectionnés et non la totalité

ce comportement m'étonne

 

Cette fonction normalement retourne les produits avec leur id_shop

 

 

 

du coup oui mais les produits sont dans les 2 shops et la fonction Shop::addSqlAssociation revois tous les résultats quelque soit l' id_shop

 

merci d'avance pour votre aide

Natacha

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Cocher les catégories, partagera les catégories, mais ne constitue pas un filtre pour leur produits. Si les produits sont partagés à mon avis ils sont tous dupliqués, par contre ceux crées après la création ,dans le shop2 ne seront associés qu'au shop 2.

 

Cordialement

Share this post


Link to post
Share on other sites
  • 0

Bonjour et merci de m'avoir répondu

 

sur 2 versions proches mais différente 1.5.6.1 et .2

 

oui tous les produits sont dupliqués d’où mon problème et ma question

car dans : mots clés, recherche, nouveauté et d'autres sans doute comme produits phares quelque soit la boutique on a des résultats de l'autre
car la requête cherche bien par id_shop mais comme le produit est dupliqué il y a réponse

 

en toute logique Spockienne (la mienne) il faudrait dupliquer que les produits des rubriques sélectionnées et destinés à shop2

sinon quel intérêt d'avoir des produits inutiles car pas sensés apparaitre dans shop2

 

j'ai lu qu'il en a qui les ont carrement supprimé en mysql

 

ou alors j'ai rien compris

et ....qu'elle est la bonne méthode

 

Bien cordialement

Natacha

Share this post


Link to post
Share on other sites
  • 0

c'est dans product_shop -> supprimer les produits qui ne doivent pas être dans shop 2

 

mais vous répondez à mes questions par une autre

 

qu'en est il ?

est ce normal que tous les produits soit dupliqués dans product_shop en shop2

si oui  comment faire fonctionner les modules qui trouvent une réponse dans product_shop quelque soit l'id_shop et affichent des résultats d'une autre boutique

 

j'ai manqué quelque chose ??

Edited by natachaC

Share this post


Link to post
Share on other sites
  • 0

Rebonjour,

 

Oui c’est normal que les produits soient dupliqués.

 

- Installez une boutique de test.

- Supprimez tous les produits.

- Créez deux produits,

- Activez le multiboutique, créez le shop2

- Les produits sont dupliqués

- Allez dans le catalogue, sélectionnez le shop2 dans le sélecteur de shop, supprimez le produit.

- Dans la table il n'y a plus que 3 lignes, le produit 1 sur les deux shops, le produit 2 sur le shop 1.

 

Cordialement

Share this post


Link to post
Share on other sites
  • 0

re bonjour

cela veux dire qu'à la création de shop2 il faut sélectionner toutes les rubriques (sinon on a plus accès au produits dans shop2),
importer tous les produits pour ensuite supprimer dans shop2 tous les articles qui ne devraient pas y être pour que les modules nouveautés, recherche, mots clés puissent donner les bons résultats 

 

vous confirmez ??

 

car supprimer des centaines voir milliers de produits dans les différentes shop après avoir été obligée de les importer ça me parait bizarre

 

d’où ma question pourquoi ne pas inverser le processus ?

importer que les produits des rubriques que l'on sélectionne (je pense ne pas être la seule à comprendre que ça fonctionne comme ça)

 

merci et bonne soirée

Natacha

Share this post


Link to post
Share on other sites
  • 0

Re,

 

Désolé je ne comprends pas tout de votre réponse.

 

Avez vous réussi a avoir une table correcte ou devez vous toujours passer par la table ?

 

En sélectionnant catégories associées, vous choisissez de partager les catégories de produits entre les différentes boutiques. Pas les produits qui sont des entités différentes. Les produits sont en dessous.

 

Si cela vous fait trop de produits a supprimer après leurs copies, ne faites pas copier les produits et dans ce cas il faudrait plutôt passer par l'import en sélectionnant le shop2.

 

Cordialement

Share this post


Link to post
Share on other sites
  • 0

re bonjour

cela veux dire qu'à la création de shop2 il faut sélectionner toutes les rubriques (sinon on a plus accès au produits dans shop2),

 

Re,

 

Sur mon test sur une 1.6.0.3 je n'ai besoin que d'une catégorie racine pour dupliquer les produits dans shop2, décocher les catégories n'a pas d'influence sur leur copie vers le shop2.

 

Cordialement

Share this post


Link to post
Share on other sites
  • 0

re

 

 

ma question est pourquoi importer tous les produits de shop1 pour ensuite supprimer dans shop2 tous les articles qui ne devraient pas y être afin que les modules nouveautés, recherche, mots clés, etc.. puissent donner les bons résultats (dans shop2 on a des liens vers des produits de shop1 puisque les produits sont tous importés)

 

ce que je veux dire c'est que par défaut si on ne fait pas la suppression de TOUS les produits qui ne doivent pas être présent dans shop2 les modules nouveautés, recherche, mots clés affichent des liens vers des produits de shop1

et ça c'est pas normal par défaut

 

 

et quand est il de home featured qui pour fonctionner optimal devrait faire référence à l'id shop

si je met sur home un produit qui est dans shop1 et shop2 dans l'admin il passe sur home pour les 2 sans prendre en compte la shop -> il est en produits phares de chaque shop : il faut le mettre hors ligne sur une des 2 boutiques

 

c'est intéressant de plonger dans le process 

j'adore ça

 

je continue de penser qu'en toute logique il faudrait importer que les produits des rubriques sélectionnées
et donner la possibilité d'importer des produits manquants après coup

je vais chercher une solution perso dans ce sens du coté de copyShopData

 

bonne soirée

Natacha

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Je rencontre le même problème. Les produits non visibles sur la boutique 1, ne sont pas indexé sur les autres boutiques.

 

Pourriez vous m'indiquer où ajouter ces deux lignes dans le searchcron.php (faut il supprimer des lignes?)?

 

if (Tools::getValue('shop')) Shop::setContext(Shop::CONTEXT_SHOP, Tools::getValue('shop'));
if (Tools::getValue('shop')) Context::getContext()->shop->id = Tools::getValue('shop');

 

Ensuite, si j'ai bien compris, je lance le cron à travers chaque boutique.

 

Je vous remercie par avance

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

 

Dans le fichier searchcron.php, pouvez vous essayer de remplacer

	Search::indexation(Tools::getValue('full'));

par

$shop_ids = Shop::getCompleteListOfShopsID();
foreach($shop_ids as $shop_id)
{
	Shop::setContext(Shop::CONTEXT_SHOP, (int)$shop_id);
	Search::indexation(Tools::getValue('full'));
}

Merci. Cordialement

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More