magento 2

Magento 2 : Mute logs Add of item with id … and other useless in developement

Note rapide sur comment réduire au silence les logs du module Magento_Backend qui remplis le fichier system.log  avec des centaines d’entrées inutiles du type

[2024-02-10T17:13:48.877379+00:00] main.INFO: Add of item with id Magento_Sales::sales was processed [] []
[2024-02-10T17:13:48.878055+00:00] main.INFO: Add of item with id Magento_Sales::sales_operation was processed [] []

Pareil pour moi qui fait essentiellement du développement back office pour tous les logs du type

[2024-02-13T10:54:24.978175+00:00] report.INFO: Broken reference: the ‘catalog.leftnav’ element cannot be added as child to ‘sidebar.main’, because the latter doesn’t exist [] []

Cela  noie les informations intéressantes d’autant que c’est une information qui n’est pas très utile.

Pour masquer ça la méthode la plus simple est de faire un fichier patch, avec le contenu suivant  :
Dans un fichier qui s’appelerais par exemple : LOCAL-mute-useless-logs.patch

diff --git a/vendor/magento/framework/View/Layout/Data/Structure.php b/vendor/magento/framework/View/Layout/Data/Structure.php
--- a/vendor/magento/framework/View/Layout/Data/Structure.php
+++ b/vendor/magento/framework/View/Layout/Data/Structure.php
@@ -122,10 +122,10 @@
                 $siblingParentName = $this-getParentId($sibling);
                 if ($parentName !== $siblingParentName) {
                     if ($this-state-getMode() === State::MODE_DEVELOPER) {
-                        $this-logger-info(
+                        /*$this-logger-info(
                             "Broken reference: the '{$childName}' tries to reorder itself towards '{$sibling}', but " .

Magento 2 : Mute logs Add of item with id … and other useless in developement Lire la suite »

Magento 2 module pour visualiser les pdfs dans le navigateur

J’avais rencontré la même problématique sur un développement prestashop ( cf. https://www.h-hennes.fr/blog/2020/07/13/prestashop-gagnez-du-temps-lors-la-personnalisation-des-fichiers-pdf-factures-livraisons/ ), dans le cas ou on souhaite personnaliser les fichiers pdfs pour changer des éléments ou de la mise en forme c’est relativement pénible de devoir à chaque fois télécharger le fichier pdf pour le visualiser.

J’ai donc créé un module magento 2 pour visualiser les pdf dans le navigateur , celui-ci fonctionne pour les pdfs suivants dans l’administration

  • Factures ( Invoices )
  • Livraisons ( Shipping)
  • Avoirs ( Creditmemo )

Celui-ci a uniquement été testé sur Magento 2.4.
Le module est disponible sur mon dépot github avec des exemples d’extensions magento 2.
https://github.com/nenes25/magento2_samplemodules/tree/master/Hhennes/SalesAdminPdfViewer

Configuration

Il est possible d’activer ou non l’affichage des pdfs via la configuration dans :

Configuration / Hhennes Extensions / Pdf Print

Penser à vider le cache une fois la modification appliquée, et une fois celui-ci actif les fichiers pdfs sont affichés directement dans le navigateur :

Il est ensuite possible de voir les changements dès le rafraîchissement de la page, et sans devoir télécharger le fichier.…

Magento 2 module pour visualiser les pdfs dans le navigateur Lire la suite »

Magento 2 : Ajouter une colonne dans la facture pdf

Voyons ensemble comment ajouter une colonne dans la facture sous Magento 2.
Nous souhaitons ajouter une colonne « Tax Rate » qui affichera le taux de taxe appliqué à chaque élément de la facture.

Le rendu final sera le suivant :

Invoice Magento 2

Pour faire cela nous allons créer un module Hhennes_Sales
( je ne détaille pas le processus de création basique du module )

Celui-ci devra surcharger les classes suivantes :

  • Magento\Sales\Model\Order\Pdf\Invoice
  • Magento\Sales\Model\Order\Pdf\Items\Invoice\DefaultInvoice

Pour cela il faudra mettre le contenu suivant dans le fichier etc/di.xml du module :

   <?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Sales\Model\Order\Pdf\Invoice"
                type="Hhennes\Sales\Model\Sales\Order\Pdf\Invoice"></preference>
    <preference for="Magento\Sales\Model\Order\Pdf\Items\Invoice\DefaultInvoice"
                type="Hhennes\Sales\Model\Sales\Order\Pdf\Items\Invoice\DefaultInvoice"></preference>
</config>

Concernant les surcharges :

La notion importante est la valeur de « feed » , qui correspond à la position en x du contenu dans le pdf
Pour obtenir un ensemble visuellement harmonieux, il peut être nécessaire de jouer avec ces valeurs pour l’ensemble des éléments.…

Magento 2 : Ajouter une colonne dans la facture pdf Lire la suite »

Magento 2 : Ajouter des link alternate sur les pages cms

Sur magento 2 ( comme sur magento 1 ) , les contenus et notamment les pages cms sont accessibles via plusieurs url avec ou sans slash à la fin.

Vous pouvez le constater sur la page de la politique de confidentialité qui est à la fois disponible sous les urls :
http://magento2-demo.nexcess.net/privacy-policy-cookie-restriction-mode et http://magento2-demo.nexcess.net/privacy-policy-cookie-restriction-mode/

Au niveau Seo c’est assez moyen c’est pourquoi il est utile de préciser à Google quelle est la version à indexer.
Ceci peut être réalisé via l’ajout d’une balise link rel= »canonical ».

Nous allons voir ensemble comment réaliser cela pour magento 2 via un module qui s’appellera Hhennes/Cms
Ce module ajoutera automatiquement une balise canonical sur les pages cms, il est possible de configurer en back office quelle sera l’url à utiliser ( avec ou sans le slash )

Ce module sera dépendant du module Magento_Cms.

Je vais juste détailler le fonctionnement global, vous trouverez le lien vers github en fin d’article pour le télécharger. (sans la partie création initiale )

La logique est relativement simple , nous allons rajouter un block spécifique sur les pages cms dans le container « head.additional …

Magento 2 : Ajouter des link alternate sur les pages cms 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 : 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 »

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 »