Magento

Logo MagentoRetrouvez des tutoriels et des astuces dans l’utilisation de Magento.
En tant que développeur certifié Magento 1 je partage avec vous plus de 60 articles traitant à la fois de Magento 1 et de Magento 2, sur des thématiques relativement larges :

  • Création d’attributs
  • Personnalisation pdf
  • Optimisations des performances
  • Quick notes

Magento : Créer une commande via l’api

J’ai récemment eut à créer des commandes Magento via l’api et j’ai rencontré pas mal de difficultés, j’en profite pour condenser l’ensemble du processus dans cet article 🙂

Voici un script qui permettra de créer une commande Magento à partir de l’api Soap de Magento ( à la fois avec la version api V1 et api V2 )
Cet exemple a été réalisé sur un Magento 1.9.3.x de démonstration utilisant les samples data Magento.

N’hésitez pas à consulter la documentation officielle des api, si des points ne sont pas assez clairs  : https://devdocs.magento.com/guides/m1x/api/soap/introduction.html

Le script part des postulats suivants :

  • Passage de commande pour un client existant
  • Avec une adresse de facturation par défaut de renseignée
  • Les adresses de livraison et de facturation seront similaires.
  • Un accès à l’api avec tous les accès nécessaires existe sur le site magento de destination.

Les actions effectuées par le script sont les suivantes :

  1. Login à l’api
  2. Récupération de l’identifiant du  client à partir de son email
  3. Récupération de l’identifiant de l’adresse de facturation/livraison du client
  4. Création d’un panier
  5. Assignation du client au panier
  6. Assignation des adresses du client au panier
  7. Ajout de produits au panier
    1. Produit simple
    2. Produit configurable
    3. Produit groupé
    4. Produit Bundle
  8. Récupération des modes de livraison disponibles pour le panier
  9. Assignation du mode de livraison du panier
  10. Récupération des modes de paiement disponibles pour le panier
  11. Assignation du mode de paiement du panier
  12. Transformation panier en commande

 

Voir le script complet pour l’api V1
Voir le script complet pour l’api V2

Avant de vous montrer le script complet voici un focus sur les éléments à comprendre

Ajout des produits au panier

En fonction du type de produit à ajouter au panier , les informations à envoyer ne seront pas les mêmes.…

Magento : Créer une commande via l’api Lire la suite »

Magento 2 : Ajouter des balises canonical sur les pages cms

Par défaut avec Magento ( c’était déjà le cas pour magento 1 et ça l’est toujours pour Magento 2 ), les pages CMS sont accessibles via plusieurs urls

Ex : http://www.magento2.dev/privacy-policy-cookie-restriction-mode/ et http://www.magento2.dev/privacy-policy-cookie-restriction-mode

La seule différence étant la présence du « / » en fin de ligne.

Pour les moteurs de recherche le contenu est donc présent sur 2 pages différentes ce qui créé du duplicate content.
La solution pour corriger cette problématique est d’ajouter une balise « canonical » qui permettra de dire laquelle des urls on souhaite indexer.
De mon côté je part du postulat que c’est l’url avec un « / » à la fin.

Pour cela nous allons faire un module Hhennes_CMS avec l’arborescence suivante :

Magento Cms module structure

Voici les contenus des fichiers de déclaration du module

etc/module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Hhennes_Cms" setup_version="0.1.1">
        <sequence>
            <module name="Mage_Cms"/>
        </sequence>
    </module>
</config>

Magento 2 : Ajouter des balises canonical sur les pages cms Lire la suite »

Magento 2 : Commande console pour supprimer les fichiers de logs et les reports

Lors de la phase de développement sous magento 2, les dossiers contenants les fichiers de logs et de reports ont tendance à augmenter rapidement et il devient difficile de s’y retrouver.
Il est possible de supprimer facilement le contenu des ces dossiers via l’explorateur de fichier ou via des commandes shell, mais cela peut être rébarbatif ou source d’erreurs ( rm -rf sur un mauvais dossier entre autre … )

Pour simplifier ces actions nous allons donc créer 2 nouvelles commandes dans la console Magento.
Ceci nous permets de constater qu’ajouter des commandes consoles sur magento 2 c’est très simple 🙂

Le module s’appellera Hhennes_Tools et sera situé dans app/code/Hhennes/Tools/

Pour initialiser le module créer le fichier etc/module.xml avec le contenu suivant

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Hhennes_Tools" setup_version="0.1.0">
    </module>
</config>

Et le fichier de registration registration.php…

Magento 2 : Commande console pour supprimer les fichiers de logs et les reports Lire la suite »

Magento 2 : Ajouter des nouveaux attributs aux formulaires de création de compte

Cet article est une mise à jour d’un article précédent sur Magento 1 : Magento 1 : Ajouter des nouveaux attributs aux formulaires de création de compte

Nous allons voir comment rajouter un attribut client aux formulaire de création de compte et d’édition du compte client.
Celui-ci sera nommé « Sample »
(La partie checkout a été totalement réécrite dans magento 2 et fera l’objet d’un article ultérieur)

Pour cela nous allons créer un module Hhennes_Customer qui sera situé dans le dossier app/code/Hhennes/Customer.
La structure de notre module sera la suivante :

Structure module magento 2

Pour commencer comme pour tout module magento 2, il faut déclarer notre module en créant le fichier module.xml avec le contenu suivant dans le dossier /etc/ de notre module :

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
 <module name="Hhennes_Customer" setup_version="0.1.0">
 <sequence>
 <module name="Mage_Customer"/> <!-- Dépendance au module Mage Customer -->
 </sequence>
 </module>
</config>

Magento 2 : Ajouter des nouveaux attributs aux formulaires de création de compte Lire la suite »

Magento : Configurer plusieurs boutiques sur une seule instance

Nativement la plateforme Magento permets de créer plusieurs sites webs totalement différents tout en utilisant le même code et le même dossier sur votre serveur et cela avec des urls différentes !

Il est cependant ensuite nécessaire de réaliser un mapping pour que Magento trouve quelle boutique charger avec quelle url

En partant des pré-requis suivants :

  • votre configuration apache ou nginx est déjà en place et que l’ensemble des noms de domaines pointent bien vers le même dossier
  • Nous allons tester 3 sites
    • www.shop.fr ( Site FR / Code du magasin magento : fr )
    • www.shop.de ( Site DE / Code du magasin magento : de )
    • www.shop.com ( Site EN / Code du magasin magento : en )
  • Les configurations des magasins sont en place dans magento

Nous allons voir ensemble les différentes possibilités qui existent pour réaliser cela.

Serveur Apache : fichier .htacess
Editer le fichier .htacess situé à la racine de magento et rajouter les lignes suivantes

SetEnv MAGE_RUN_TYPE store
SetEnvIf Host www\.shop\.fr

Magento : Configurer plusieurs boutiques sur une seule instance Lire la suite »

Installer rapidement une Vm avec Magento2

Après le passage de la certification Magento 1 il est temps pour moi de creuser un peu plus intensément Magento 2.

Pour commencer voici donc un petit script bien utile qui va installer Magento 2 ainsi que tout ses prérequis ( nginx / php-fpm ) sur une Vm Ubuntu 16.04 brute
Dans mon cas celle-ci est hébergée dans AWS.

Voici le script complet

 #!/bin/bash
 
#Mise à jour du serveur
sudo apt-get update && sudo apt-get -y upgrade
 
#Installation des libs nécessaires au serveur
sudo apt-get -y install nginx git unzip htop php-fpm php-mysql php7.0-curl php7.0-mcrypt php7.0-xsl php7.0-intl php7.0-gd php7.0-mbstring php7.0-zip
 
#Installation de mysql
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password root"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password root"
sudo apt-get install -y mysql-server
 
#Récupération de magento2
cd /var/www/html/
sudo mkdir magento2
sudo chown -R ubuntu:www-data magento2
cd magento2
echo "Recupération et extraction de l'archive"
#@Todo : Trouver un miroir avec les versions de magento2
sudo wget http://web.h-hennes.fr

Installer rapidement une Vm avec Magento2 Lire la suite »

Optimisation des exports de bases de données pour mise à jour d’environnement de développement

En tant que développeur il est souvent nécessaire de faire des dumps de base de données pour mettre à jour les environnements de développements ( qu’ils soient locaux ou sur le serveur ).
Cependant les tables de productions sont souvent très lourdes et comportent des données qui ne sont pas forcément nécessaire pour développer.

Voici un petit script qui va vous faire gagner du temps dans l’export / import de ces bases de données.
La logique est relativement simple .

Pour les tables dont les données ne sont pas importantes, on va exporter uniquement la structure.
Puis nous excluons ces tables de l’export global.

 #!/bin/bash
 
#Variables de la base de données
host="localhost"
user="root"
pass="root"
dbname="dbname"
 
#Stockage de ces tables à ignorer dans une variables ( separer les noms par un espace)
ignoreTables="table1 table2 "
 
#Dump de la structure de ces tables
echo "Export de la structure des tables ignorées"
mysqldump -d -h $host -u $user -p$pass $dbname $ignoreTables > backup-structure.sql

Optimisation des exports de bases de données pour mise à jour d’environnement de développement Lire la suite »

Magento : Sécuriser l’accès à l’administration

Les attaques sont de plus en plus nombreuses sur la plateforme magento, pour éviter les accès non autorisés à votre administration voici comment la sécuriser :

  • Changer le chemin par défaut de l’administration.

Dans le fichier app/etc/local.xml , définissez un nom d’administration personnalisé, par exemple mycustomadmin

 <routers>
 <adminhtml>
 <args>
 <frontName><![CDATA[mycustomadmin]]></frontName>
 </args>
 </adminhtml>
 </routers>
  • Restreindre l’accès à l’administration par adresse ip

Avec apache : rajouter la ligne suivante entre les balises

RewriteCond %{REMOTE_ADDR} !^xx.xx.xx.xx
RewriteRule ^(index.php/)?mycustomadmin/ - [L,R=403]

Avec nginx :

location ~ ^/mycustomadmin/ {
    allow xx.xx.xx.xx;
    deny all;
    try_files $uri $uri/ /index.php;
}
location ~ ^/index.php/?mycustomadmin/ {
    allow xx.xx.xx.xx;
    deny all;
    try_files $uri $uri/ /index.php;
}

Magento : Sécuriser l’accès à l’administration Lire la suite »

Magento : Gérer les balises meta Robots

Pour optimiser le référencement de votre site Magento, il sera sans doute nécessaire de jouer avec les balises meta robots.

Ceci vous permettra de choisir les pages qui devront être indexées et/ou suivies, ainsi que celles qui ne le seront pas.
La bonne nouvelle est que ceci est géré nativement dans magento, et que cela ne demande aucun développement.

Configuration générale

Dans la configuration de magento, il est possible de définir directement les balises qui seront appliquées à l’ensemble des pages.
Pour cela rendez-vous dans  » Système / Configuration / Design / Entête HTML  »
Vous pouvez ensuite configurer les meta robots à mettre en place par défaut :

Balise meta robots

( Il est possible de le configurer pour chaque boutique de votre site )

Le fonctionnement est le même pour un produit ou une catégorie : (cf. mon article précédent :
Magento : Empêcher l’indexation d’une catégorie ou d’un produit )

Changer la balise meta d’une page CMS

Si vous souhaitez passer une page cms en No-Index, c’est très facile, il vous suffit de copier le code suivant dans le champ « XML de mise à jour d’agencement » de l’onglet design, et puis d’enregistrer votre page.…

Magento : Gérer les balises meta Robots Lire la suite »

Tester la sécurité de votre site magento avec MageReport

Les sites e-commerces basés sur des plateformes open-sources seront inévitablement soumis tôt ou tard à l’apparition de failles de sécurité. C’est pourquoi il est important de bien tenir son site à jour et d’appliquer dès que possible les patchs de sécurité.

Pour évaluer les risques de votre site e-commerce magento, il existe un outil très utile qui va analyser les failles potentielles de votre site.

Pour cela rendez-vous sur le site https://www.magereport.com/

Magereport

Celui-ci va détecter l’ensemble des failles les plus connues et vous donner les solutions pour les corriger.
Un site à bookmarker et à consulter régulièrement pour tous les possesseurs de boutiques magento ! 🙂…

Tester la sécurité de votre site magento avec MageReport Lire la suite »