[4.2.1] Refonte complète module PrestaShop de blocage et redirection par pays
Lorsque l'on développe des modules, l'important c'est le retour des utilisateurs et cela n'est pas toujours facile de les avoir.
Dernièrement, j'ai eu un client très compliqué à gérer avec mon module permettant de bloquer les pays ou de les rediriger vers une autre URL.
Mais, malgré l'expérience relationnelle désagréable, il a mis en évidence des points d'échauffements important qu'en à l'usage réel de mon module et m'a donc amené à retravailler intégralement l'interface et les procédures de gestion des pays.
Le problème
Au départ, mon module listait l'intégralité des pays et affichait les redirections enregistrées directement sur une page avec un simple champ texte pour limiter l'affichage à certains pays.
Le souci apparaissait lorsque l'on désactivait beaucoup de pays, un ralentissement important de l'affichage se faisait ressentir au point de rendre désagréable son utilisation.
Je suis étonné de ne pas avoir eu de retour plus récent sur ce problème que je n'avais pas su identifier lors de mes tests de développement.
Donc je me suis attelé à modifier intégralement l'interface de gestion de ce module pour le rendre plus agréable et pratique.
Pour les puristes, je m'amusais à manipuler la création de tableaux en SMARTY pour limiter l'affichage d'un FOREACH en fonction du résultat de ce premier tableau, un carnage au regard des performances.
La mise en oeuvre corrective
J'ai donc pris 2 décisions importantes :
- Utiliser le script d'affichage et de gestion de tableaux bien connu : https://datatables.net/
- Séparer la gestion des redirections dans une autre vue individuelle par pays
DataTables
La mise en oeuvre de DataTables est assez simple mais vous verrez que cela apporte son lot de contraintes.
En une ligne de code on a alors l'affichage d'un tableau avec une limitation et donc un Paging automatique.
On peut aussi effectuer facilement une recherche sur l'intégralité du tableau, comme on peut classer les colonnes dans l'ordre que l'on souhaite mais cela ne se fait pas tout seul lorsque l'on veut intégrer des champs de formulaire dans ce tableau afin de faciliter la gestion.
Dans mon cas le souci venait des éléments Switch pour activer ou non un pays, car aucune information ne remonte réellement avec ces éléments, j'ai donc dû mettre en oeuvre le retour de l'état des switchs sous forme de texte et ensuite demander à DataTables de le prendre en compte lors d'un changement d'état puisqu'un changement de contenu javascript n'impacte pas réellement les données prises en compte par le script DataTables.
En n'affichant plus la personnalisation des redirections j'ai pu améliorer de manière efficace les performances d'affichage de la page.
Mais là n'était pas terminé mon souci d'utiliser DataTables, car il faut savoir que si vous validez les données d'un formulaire présent dans ce tableau traité par DataTables, alors seul les données visibles sont transmises au formulaire alors que l'utilisateur peut avoir changé l'état d'activation de pays qui ne sont pas visibles au moment de la validation.
J'ai dû, encore une fois, ruser, ce qui fait que la pagination est désactivée le temps d'envoyer le formulaire, souci léger d'affichage, je verrais bien le ressenti des utilisateurs sur ce point, n'hésitez pas à m'en faire part dans les commentaires si vous êtes utilisateur du module ou si vous l'avez testé sur sa démonstration.
Séparation de la personnalisation des redirections
J'ai donc créé une nouvelle vue pour personnaliser les redirection simplement en ajoutant un bouton en fin de ligne de tableau et que ce bouton soit assujetti à l'état d'activation du pays pour éviter de s'amuser à configurer des données inutiles sur un pays qu'on autorise.
On arrive sur cette nouvelle vue permettant d'activer ou non le pays, c'est un rappel qui me semblait intéressant de proposer même si tout peut être configuré dans la liste des pays.
Ici encore, l'affichage des champs de personnalisation par langue des redirections disparait si l'on décide de ne plus bloquer le pays en question.
Depuis pas mal de temps, sur mes modules j'accompagne tous les champs et les vues d'assistance pour bien comprendre son fonctionnement, ce point réduit de manière importante le support sur mes modules même si cela me demande beaucoup de temps en écriture et en traduction.
Conclusion
En effectuant toutes ces modifications, j'ai pu améliorer les performances ainsi que l'UX du module pour apporter une meilleure expérience d'utilisation.
L'importance des retours clients permet de s'améliorer et de répondre aux réels usages faits de mes modules alors n'hésitez pas, tous mes modules ont un bouton de mise en relation directe pour me contacter.
Démonstration
En reprenant intégralement ce module j'ai aussi mis en place une nouvelle démonstration qui permet de tester le module sur les versions 1.6 et 1.7 de PrestaShop.
- Accès à la démonstration : https://medcountryaccess.carrd.co/
Téléchargement du module
- Sur PrestaToolBox : https://www.prestatoolbox.fr/securite/142-autoriser-ou-limiter-l-acces-a-certains-pays.html
- Sur Addons PrestaShop : https://addons.prestashop.com/fr/securite-access/2698-autoriser-ou-non-l-acces-par-pays.html
Discussions