Vous l’aurez certainement remarqué, mais le blog vient de faire peau neuve !
L’ancien design design datait de 2013, et j’avais uniquement fait quelques optimisations mobiles en 2015. Il était donc temps de changer cela.
Le design et les technologies front n’étant pas forcément le point qui m’intéressent le plus, je suis parti sur un thème relativement populaire dans la communauté WordPress. Sur lequel j’ai rapidement changé quelques couleurs mais rien de très élaboré. N’hésitez pas à remontez votre avis et à signaler si il y’a des petites coquilles à des endroits.
On pourrait également compléter le titre également par : « Ville / Nom … «
C’est une demande qui revient assez régulièrement et qui est d’autant plus d’actualité avec le confinement actuel. Comment restreindre un transporteur à un certain code postal ?
Ceci permets par exemple de créer un transporteur de clic and collect délimité à certains codes postaux.
C’est très facile à faire dans Prestashop, mais cela nécessite la création ou l’achat d’un module.
Nous allons voir comment procéder techniquement pour faire cela. Ce tutoriel est valide à la fois pour les versions 1.6.x et 1.7.x de prestashop
Principe de fonctionnement général
Dans Prestashop les activations ou prix des transporteurs sont définis par zones géographiques : Celles-ci sont visibles dans l’administration via « International / Zones Géographique »
Zones de livraisons
Il est ensuite possible de voir la corrélation entre les 2 lorsque nous allons éditer un transporteur. Via « Livraison / Transporteur » , éditer un transporteur et dans l’onglet « Destination d’expéditions et coûts » Par exemple le transporteur de la capture ci-dessous est actif uniquement pour les zones « Europe » et « Amérique du Nord »
Zones de livraison sur un transporteur
Comme le nom des zones est très explicite on peut aisément comprendre que les clients habitant en France feront automatiquement partie de la zone Europe , et c’est bien le cas dans la configuration de prestashop
La France est bien en zone Europe
Cependant il existe une possibilité disponible uniquement via le code qui est d’assigner automatiquement une zone à une adresse en fonction de ses paramètres.…
Ces derniers mois ( voir depuis plus longtemps :/ ) les spams se sont attaqués en masse au formulaire d’inscription à la newsletter sur Prestashop.
J’ai déjà fait un module de captcha qui permets de régler le problème des spams sur le formulaire de contact et la création des clients depuis plusieurs années. La demande de pouvoir rajouter un captcha sur la newsletter était déjà récurrente, mais il n’y avais pas de solution simple et rapide pour le mettre en place.
La bonne nouvelle est que depuis la sortie de la version 2.6.0 du module ps_emailsubscription grâce à une pull request de l’inévitable Jean-François Viguier ( https://github.com/PrestaShop/ps_emailsubscription/pull/49/files )
Il est possible via des nouveaux hooks d’implémenter facilement un captcha sur l’inscription newsletter.
Le hook à utiliser est displayNewsletterRegistration et il est implémenté dans le fichier modules/ps_emailsubscription/views/templates/hook/ps_emailsubscription.tpl
En compléments des informations déjà disponible sur la documentation développeur de prestashop sur la gestion globale des images : https://devdocs.prestashop.com/1.7/webservice/tutorials/advanced-use/image-management/ Cet article détaille brièvement la gestion des images des produits via l’api sous Prestashop.
Les tests ont été fait sur une version 1.7.6.x de prestashop mais l’api ayant assez peu bougé cela doit être fonctionnel sans doute sur les versions 1.6 également.
Le point essentiel à retenir dans les api étant qu’une url peut avoir un comportement différent en fonction de la méthode par laquelle elle est appellée ( GET / POST / PUT )
Je pars du principe que les accès nécessaire à l’api sont déjà définis, et la gestion de l’api est effectuée via la librairie proposée par Prestashop en php ( cf. https://devdocs.prestashop.com/1.7/webservice/tutorials/prestashop-webservice-lib/ )
Pour mon exemple d’illustration je me sers d’une version démo de prestahop avec les produits de base. Dont l’url sera http://www.prestashop.local/tests/1769/ Et on va jouer avec l’identifiant produit 19 , le « mug personnalisable »
Les appels webservice qui seront exécuté via la lib Prestashop seront wrappés dans le code suivant Et je rajoute également une fonction qui va permettre de simplifier les appels à la librairie curl .…
Un petit article pratique assez générique pour une fois.
Pour un projet récent il fallait que je puisse détecter les tables manquantes entre une base de données « native » et la base de données du projet.
Il existe un certain nombre de logiciels qui le permettent mais je n’en avais pas sous la main. Navicat permets d’identifier les tables concernées mais pas d’en exporter la liste.
La solution donnée ici permettra de faire tout en ligne de commandes ( linux )
Ajouter les droits d’exécution au fichier. Il faut ensuite configurer une connexion pour l’outil dbdiff ( dans le même dossier ou vous allez placer le phar ) Pour cela il faut créer un fichier .dbdiff ( attention au . devant ) avec les identifiants de connexions
server1:
user: user
password: password
port: 3306 # for MySQL this is 3306
host: 127.0.0.1 # usually localhost or 127.0.0.1
#Mettre la configuration des autres serveurs si nécessaires
server x:
server1:
user: user
password: password
port: 3306 # for MySQL this is 3306
host: 127.0.0.1 # usually localhost or 127.0.0.1
#Mettre la configuration des autres serveurs si nécessaires
server x:
L’outil dbdiff permets ensuite de générer nativement un fichier sql récapitulatif des différences via la commande :
Dans cet article nous allons creuser tout de qui concerne la gestion des emails dans les modules prestashop.
Dans un premier temps comment envoyer un email bien sûr, mais nous verrons ensuite qu’il est très facile d’interagir avec les emails systèmes via les hooks.
Ce tutoriel s’applique à la version 1.7 de Prestashop, certains hooks n’existent pas dans la version 1.6 dont le hook hookActionEmailSendBefore , il reste cependant assez facile de les implémenter manuellement en surchargeant la classe Mail
Pour illustrer et tester tout ça nous allons passer par la création d’un module de POC hh_demoemails
L’archive sera disponible en fin d’article, mais je précise bien que c’est un module de démo et d’apprentissage et pas du tout en module destiné à être mis en production 😉
Fonctionnement général
La gestion de l’envoi dans Prestashop est relativement basique car elle est centralisée dans une seule fonction qui est la fonction send de la classe Mail voici ses paramètres, la signature de la fonction est relativement explicite
Petite découverte de la semaine d’une possibilité relativement pratique d’ajouter des conditions à valider dans le tunnel de commande.
La bonne nouvelle c’est que c’est très facile à faire via un module puisqu’il existe un hook pour cela 🙂 Voyons donc cela dans un module hhcgv dont voici le code
<?phpif(!defined('_PS_VERSION_')){exit;}//Attention à bien include ceciuse PrestaShop\PrestaShop\Core\Checkout\TermsAndConditions;class Hhcgv extends Module
{publicfunction __construct(){$this->name='hhcgv';$this->tab='others';$this->version='0.1.0';$this->author='hhennes';$this->bootstrap=true;
parent::__construct();$this->displayName=$this->l('Module de demo cgv');$this->description=$this->l('Ajout de cgv personnalisées');}/**
* Installation du module
* @return bool
*/publicfunction install(){if(!
Lors de la création d’un nouveau groupe client, par défaut celui-ci n’aura aucun droit de visualisation sur l’ensemble des catégories du site.
Cela peut poser problème dans le cas ou c’est le seul groupe d’un client. ( La bonne pratique est de laisser par défaut tous les clients dans le groupe « visiteur » également. )
Dans ce cas on obtient une belle page d’erreur lorsqu’on souhaite accéder à une catégorie sur laquelle le groupe n’a pas les droits d’accès
Voici une petite requête qui permettra de corriger cela facilement. Attention il est nécessaire de récupérer l’identifiant du groupe client à modifier. Dans mon exemple l’identifiant du groupe « Pro » est 4
INSERTINTO ps_category_group (SELECT id_category,4FROM ps_category WHERE id_category NOTIN(SELECT id_category FROM ps_category_group WHERE id_group =4))
INSERT INTO ps_category_group ( SELECT id_category,4 FROM ps_category WHERE id_category NOT IN ( SELECT id_category FROM ps_category_group WHERE id_group = 4 ))
Les années et défilent, et ça y’est le cap fatidique des 10 ans est déjà arrivé pour le blog 🙂
Je profite de l’occasion pour faire une petite rétrospective du travail qui a été fait sur celui-ci lors de la dernière décennie, et pour partager pour ceux que ça intéressent quelques statistiques.
Pour ceux que ça intéresse, vous pouvez également regarder le premier article 🙂 : Bienvenue sur mon blog !
État des lieux
Tout d’abord au niveau de la ligne éditoriale, comme présenté à l’origine les informations publiées sont avant tout techniques et orientées autour des thématique suivantes :
Prestashop
Magento
Mantis Bug tracker
Administration système
Je pense avoir une certaine légitimité sur le sujet puisque ça fait presque aussi longtemps que je travaille sur ces plateformes que j’écris des articles.
L’idée d’écrire des articles sur ce sujet est parti il y’a quelques années. A une époque ou, trouver des documentations techniques sur les solutions open source se résumait à chercher sur google ( j’éxagère à peine ).…