Bug Prestashop, la liste des magasins n'apparait pas

Cette article est sponsorisé par odience.net¦works

En plein developpement

En plein développement de plusieurs modules PrestaShop, j’ai rencontrer plusieurs souci dans les code du package PrestaShop. Ce qui m’étonne, c’est qu’il y a beaucoup de gens qui utilise PrestaShop, même si c’est du gros n’importe quoi en terme de codage et programmation.

 

Alors pourquoi je créer des module?

Tout simplement parcequ’il y a de la demande.

(Restez connecté pour avoir des nouvelles de mes modules:

Ces modules sont créer pour odience.net et seront sont disponible sur odience.net)

Retour à nos moutons

Je vous explique un bug que j’ai trouver aujourd’hui et la solution.

Le problème est ceci:

La variable SMARTY qu’utilise PrestaShop pour stocker les informations des magasin est nomée “$stores”. On peut y acceder et donc afficher les details de nos magasin un peu partout dans les pages et les modules sans diriger le visiteur sur la page de “nos-magasin”.Module Contact PrestaShop avec formulaire de contact et carte google maps

Quand vous changez la configuration de l’affichage simplifié dans le Back Office, la variable $stores devient VIDE partout sur votre boutique. Donc vous ne pouvez plus afficher les details comme un numéro téléphone ou une photo tiré directement de la variable $stores.

Ceci est du au faite que une fois la configuration dans le Back Office modifié, PrestaShop relance une requete vers la base de donnée pour recréer $stores, mais cette fois il relance la requete en cherchant a calculer un distance! Donc la variable $stores reste vide.

Essayez d’ouvrir votre boutique en ligne en ajoutant “?all=1” à la fin de votre URL et vous verrez que la variable $stores fonctionne correctement et affiche bien les infos de vos magasins.

Remède, Solution

Le remède a ceci est de modifier le fichier

PSdir ->controllers -> StoresController.php

qui gère la variable $stores.

 

Au environs de la ligne 73, on ajoute une nouvelle requete SQL qui remplit la variable $stores avec la liste de tous nos magasins, et une deuxième requete SQL qui servira a calculer la distance en cas de recherche.

$stores = Db::getInstance()->ExecuteS(' SELECT s.*, cl.name country, st.iso_code state FROM '._DB_PREFIX_.'store s LEFT JOIN '._DB_PREFIX_.'country_lang cl ON (cl.id_country = s.id_country) LEFT JOIN '._DB_PREFIX_.'state st ON (st.id_state = s.id_state) WHERE s.active = 1 AND cl.id_lang = '.(int)($cookie->id_lang)); $results = Db::getInstance()->ExecuteS(' SELECT s.*, cl.name country, st.iso_code state, ('.(int)($multiplicator).' * acos(cos(radians('.(float)(Tools::getValue('latitude')).')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.(float)(Tools::getValue('longitude')).')) + sin(radians('.(float)(Tools::getValue('latitude')).')) * sin(radians(latitude)))) distance, cl.id_country id_country FROM '._DB_PREFIX_.'store s LEFT JOIN '._DB_PREFIX_.'country_lang cl ON (cl.id_country = s.id_country) LEFT JOIN '._DB_PREFIX_.'state st ON (st.id_state = s.id_state) WHERE s.active = 1 AND cl.id_lang = '.(int)($cookie->id_lang).' HAVING distance < '.(int)($distance).' ORDER BY distance ASC LIMIT 0,20');

A savoir que la variable $results sera vide si il n’y a pas de demande de recherche de distance et donc StoresController.php ne genèrera pas de fichier XML servant a la mise en place d’une carte Google Maps dans le Store Locator. Pour assurer que le fichier XML sera créer seulement si $results contient quelque chose, je fait une verification avec:

if (!empty($results))

Téléchargez, tout simplement

Vous pouvez télécharger la version corrigée de ce fichier dans la page téléchargement de Gibni.com (nom du fichier: StoresController-1.4.Amir.zip)

 

Pour l’utiliser,

1- Allez dans:

DossierPrestaShop/controllers/

2- Renommez votre present fichier StoresController.php en StoresController.php.bak,

3- Placez le fichier php que vous avez télécharger et décompresser dans le même dossier.

 

Maintenant la variable $stores est de nouveau accessible, quelconque la configuration dans le Back Office de PrestaShop.

Je souhaite un grand succès à la communauté PrestaShop et j’espère qu’un jour ils auront du code concrete, correcte, scientifiquement étudié et structuré.


Cette article est sponsorisé par odience.net¦works

3 Replies to “Bug Prestashop, la liste des magasins n'apparait pas”

  1. Bonjour,

    I think that PrestaShop is very badly done! lot of problems are in the package.

    Can you check the Mail sending process? It’s not working for me.

Comments are closed.