Jump to content

CMS et multiboutique


Recommended Posts

Bonjour à tous.

 

Je suis en multiboutique

Tout les boutique contiennet l'url:

www.example.tld/content/category/1-home

 

Le problème est que sur cette page sont listé toutes les pages CMS qu'elle soient attibué à la boutique en question ou non.

Du coup liste des pages qui n'existe pas et pointe sur des 404

 

En clair

Je devrais avois sur la boutique 1 :

www.example1.tld/content/category/1-home

  • www.example1.tld/content/1-paiement
  • www.example1.tld/content/2-boutique1

 

  •  

 

Sur la boutique 1 :

www.example2.tld/content/category/1-home

  • www.example2.tld/content/1-paiement
  • www.example2.tld/content/3-boutique2

 

 

hors sur les deux j'ai:

www.exampleX.tld/content/category/1-home

  • www.exampleX.tld/content/1-paiement
  • www.exampleX.tld/content/2-boutique1
  • www.exampleX.tld/content/3-boutique2

 

 

 

Est ce un pb de config, un bug?

Dois overrider la classe CMS?

Link to comment
Share on other sites

Il fraudrait modifier la fonction en

	public static function getCMSPages($id_lang = null, $id_cms_category = null, $active = true, $id_shop = null)
	{
		$sql = new DbQuery();
		$sql->select('*');
		$sql->from('cms', 'c');
		if ($id_lang)
			$sql->innerJoin('cms_lang', 'l', 'c.id_cms = l.id_cms AND l.id_lang = '.(int)$id_lang);

		if ($id_shop)
			$sql->innerJoin('cms_shop', 'cs', 'c.id_cms = cs.id_cms AND cs.id_shop = '.(int)$id_shop);		

		if ($active)
			$sql->where('c.active = 1');

		if ($id_cms_category)
			$sql->where('c.id_cms_category = '.(int)$id_cms_category);

		$sql->orderBy('position');
		return Db::getInstance()->executeS($sql);
	}

Puis appeller dans le cms controller:

			$this->context->smarty->assign(array(
				'category' => $this->cms_category, //for backward compatibility
				'cms_category' => $this->cms_category,
				'sub_category' => $this->cms_category->getSubCategories($this->context->language->id),
				'cms_pages' => CMS::getCMSPages($this->context->language->id, (int)($this->cms_category->id) , '', (int)($this->context->shop->id)),
				'path' => ($this->cms_category->id !== 1) ? Tools::getPath($this->cms_category->id, $this->cms_category->name, false, 'CMS') : '',
			));

je comprend pas pourquoi (int)($this->context->id_shop) n'est pas définit?

Edited by jd440 (see edit history)
Link to comment
Share on other sites

Désolé si je n'ai pas eu la bonne méthodologie.

 

J'ai d'abord

  1. exposé mon souci ici.
  2. corrigé par moi même puis proposé une amélioration ( http://forge.prestashop.com/browse/PSCFV-10892)
  3. proposé un modif https://github.com/PrestaShop/PrestaShop/pull/938

Comme je le disais ici:

[#PSCFV-10892] get CMS By Id_shop - PrestaShop Issue Tracker

 

Je pense que la correction qui a été ajouter et la mienne n'est pas la même chose. Puisque vous corriger le modules BlockCMS ,et je modifiie la classe.

 

Du coup avec votre correction, mon problème n'est pas corrigé puisque sur la page

www.example.tld/content/category/1-home

 

La liste des pages cms n est pas constitué par le module.

Link to comment
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
×
×
  • Create New...