Magento : Module Dataflow avancés

Magento propose nativement des fonctionnalités d’imports / exports avancées qui ne sont pas forcément connues de tous les développeurs, ce sont les « Profils avancés » , ceux-ci sont disponible directement depuis l’administration dans le menu « Système — Importer/Exporter — Flux de données – Profils avancés »
Par défaut, aucun profil n’existe, mais ces profils vous permettent d’importer/exporter rapidement et facilement des objets magento.

J’avais déjà fait plusieurs articles sur le sujet :
Magento : Importer / Exporter les commentaires et les notes des produits via les profils avancés
Magento : Importer / Exporter les produits complémentaires ( upsell , crossell , related ) via les profils avancés

Afin de boucler la boucle, j’ai donc réalisé un module de gestion de ces profils avancés.

Celui-ci vous permets d’importer/exporter les éléments magento suivants  directement depuis l’administration.

  • Blocks cms
  • Pages cms
  • Commentaires et notes produits
  • Produits complémentaires
  • Emails transactionnels ( en base de données )

Le module est disponible sur github : https://github.com/nenes25/magento_dataflow

Magento : Module Dataflow avancés Lire la suite »

Prestashop : Mise en place de logs rapides dans un fichier

Voici un code qui vous permettra de logguer facilement et rapidement les informations souhaitées sous Prestashop dans le fichier de votre choix.

L’objectif est de pouvoir logguer les informations souhaitées en une seule ligne, sans avoir à instancier de classe de log.
(Le fonctionnement est comparable à la fonction Mage::log() de Magento )

Créer une nouvelle classe dans le dossier override/classes/CustomLogger.php

 <?php
class CustomLogger
{
 
    /** Fichier de log par défaut */
    const DEFAULT_LOG_FILE = 'system.log';
 
    /**
     * Log
     * @param string|array|object $message element à logger ( 1 type à la fois )
     * @param string $level niveau de log
     * @param string $fileName nom du fichier de log
     */
    public static function log($message, $level = 'debug', $fileName = null)
    {
 
        $fileDir = _PS_ROOT_DIR_ . '/log/';
 
        if (!$fileName)
            $fileName = self::DEFAULT_LOG_FILE;
 
        if (is_array($message) || is_object($message)) {
            $message = print_r($message, true);
        }
 
        $formatted_message = '*' .

Prestashop : Mise en place de logs rapides dans un fichier Lire la suite »

Prestashop : Imports des clients avec le webservice

Après la mise en place de la structure globale pour utiliser les webservices, nous allons à présent importer les clients.

La structure du fichier sera la suivante.

structure-csv

L’email client étant la clé unique.

Pour gérer l’import nous allons créer une classe spécifique qui va hériter de la classe HhPrestashopWebservice
Celle-ci permettra les opérations basiques : Ajouter, modifier, supprimer un utilisateur prestashop via le webservice.

Voici son code commenté :

 /**
 * Gestion webservice des clients
 *
 * @author hhennes <contact@h-hennes.fr>
 */
class HhCustomerWs extends HhPrestashopWebservice {
 
    protected $_resource = 'customers';
 
    /**
     * Création d'un client via le webservice
     * @param array $datas : données du client
     */
    public function createCustomer($datas) {
 
        $schema = $this->getEmptyObject();
        $customerAttributes = $schema->children()->children();
 
        //Parcours des attributs du client, si une data existe on l'associe
        foreach ($customerAttributes as $attribute => $values) {
 
            if (array_key_exists($attribute, $datas))
                $schema->children()->children()->{$attribute} = $datas[$attribute];
 
            //Si le champ est nécessaire et qu'il n'est pas associé cela ne fonctionnera pas, on envoie une exception
            if ($schema->children()->children()->{$attribute}->attributes()->required && !

Prestashop : Imports des clients avec le webservice Lire la suite »

Prestashop : Mise en place webservices

Voici donc le début de notre série sur les webservices prestashop ( Sommaire )

Pour cette série nous allons écrire les appels au webservice via des scripts php, basé sur la librairie fournie par Prestahop  : https://github.com/PrestaShop/PrestaShop-webservice-lib

Le projet global est disponible sur github : https://github.com/nenes25/prestashop_hhwebservices

Pour ce premier article je vais vous détailler le mode de fonctionnement de l’import

Structure globale et installation

La structure du projet sera la suivante :

Structure projet

Nos classes spécifiques de gestion seront dans le dossier « classes », et les fichiers d’imports dans le dossier « files/imports ».
L’appel des fonctions se fera via le fichier imports.php

Le module utilise composer pour gérer les dépendances et l’autoload des classes, avant toute chose il est donc nécessaire d’installer le projet via la commande

composer install

Gestion des données de l’import

Pour faciliter la gestion des données de l’import, l’objectif est de récupérer l’ensemble des données à importer sous la forme d’un tableau associatif tel que l’exemple ci-dessous

[0] => Array
        (
            [email] => testhh@yopmail.com

Prestashop : Mise en place webservices Lire la suite »

Prestashop : Synchronisez vos données avec les webservices

Si vous souhaitez synchroniser les données de votre ERP avec votre site prestashop, la plateforme propose des webservices, qui permettent cela, nous allons voir tout cela dans une nouvelle série d’articles.

Pour cette série nous allons écrire les appels au webservice via des scripts php, basé sur la librairie fournie par Prestahop  : https://github.com/PrestaShop/PrestaShop-webservice-lib .

Le postulat global étant que les données à importer / exporter seront stockées au format csv

Les étapes suivantes seront détaillées :

Les liens seront mis à jour au fur et à mesure de l’avancée des articles 🙂

Prestashop : Synchronisez vos données avec les webservices Lire la suite »

Magento : Ajouter des filtres dans la grid des produits d’une catégorie

J’ai récemment fait face aux limites de la gestion des produits des catégories dans l’administration de Magento.

En effet, dans l’onglet « Produits de la catégories » l’ensemble des produits associés sont listés, et il n’est pas possible de filtrer ceux qui ne sont pas visibles en front office ( Produits désactivés, produits non visibles individuellement, ou uniquement dans la recherche )

Pour optimiser cela, nous allons donc rajouter les possibilités suivantes à la grid :

  • Filtrer par status ( Actif / Non actif )
  • Filtrer par visibilité ( Non visible individuellement, Catalogue … )

Pour faire cela nous allons réaliser un nouveau module.
Je ne détaille pas la création du module ni tout ce qui est générique car cet exemple est le même que pour le cas suivant : https://www.h-hennes.fr/blog/2015/06/29/magento-ajouter-un-attribut-personnalise-a-la-grid-des-produits-via-les-observers/

Le module qui réalise les 2 actions  est disponible sur github : https://github.com/nenes25/magento_productGridFilter)

Il serait possible de surcharger directement la grid Mage_Adminhtml_Block_Catalog_Category_Tab_Product  pour faire cela, mais magento permets de le faire plus proprement via des Observers.…

Magento : Ajouter des filtres dans la grid des produits d’une catégorie Lire la suite »

Prestashop : Envoyer des fichiers lors de la création du compte client

Lors de la création d’un compte client sur votre site, vous aurez peut-être besoin de récupérer des fichiers du client pour justifier certaines situations ( justificatif de situation , cv, ect … )
Nous allons voir comment faire pour récupérer des fichiers lors de la création du compte.

Edit : Le fonctionnement change avec prestashop 1.7 , consulter l’article pour le tutoriel actualisé : Prestashop 1.7 : Ajouter des champs clients

Avant toute chose il va falloir modifier le template du formulaire de création de compte.
Et trouver la ligne : ( sur la version 1.6.1.4 : ligne 428 ) dans le fichier authentication.tpl de votre thème.

<form action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}" method="post" id="account-creation_form" class="std box">

et rajouter l’attribut : enctype= »multipart/form-data »

Ce qui donne le code suivant :

<form action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}" method="post" id="account-creation_form" class="std box" enctype="multipart/form-data">

Ceci permettra de gérer les envois de fichiers depuis le formulaire.…

Prestashop : Envoyer des fichiers lors de la création du compte client Lire la suite »

Prestashop : Ajouter vos traductions dans les fichiers de traductions

J’ai encore rencontré récemment le problème bien connus des utilisateurs de prestashop qui souhaitent changer les traductions depuis le back-office.

L’erreur d’affichage des champs de formulaire « max_input_vars » qui empeche d’afficher les traductions, et donc de les modifier depuis l’administration.

J’avais apporté une solution il y’a plusieurs années pour corriger ce problème sur un hébergement mutualisé ovh : Prestashop problème max_input_vars en hébergement mutualisé chez ovh ( Elle ne doit plus fonctionner malheureusement )

Dans le cas de ceux qui disposent d’un serveur dédié avec les accès nécessaires, la modification du php.ini corrige rapidement ce problème.

Pour mon problème j’avais uniquement quelques traductions à réaliser, l’ajout des informations de traductions directement dans les fichiers de traductions est donc une solution envisageable.

Le fonctionnement est assez simple , la clé de traduction est construite de la manière suivante

<{nomModule}nomTheme>nomFichier_md5(cleTraduction)

Cette clé de traduction est ajoutée dans la variable $_MODULE , qui contient toutes les traductions.…

Prestashop : Ajouter vos traductions dans les fichiers de traductions Lire la suite »

Testez vos sites de développement en https

L’usage du https se généralise sur les sites web, lors du développement des sites, il devient donc important de vérifier que le passage du site en mode https ne renvoie pas d’erreur.

Pour mes développements j’utilise une machine virtuelle avec un stack lamp gérée via vagrant.
Nous allons voir comment rendre fonctionnel le https sur cette vm en moins de 5 minutes.

Sur votre vm saisissez les commandes suivantes :

#Activation du mode ssl apache
sudo a2enmod ssl
#Activation du site par défaut avec le ssl d'apache
a2ensite default-ssl

Si vos fichiers web sont situés à l’emplacement par défaut d’apache ( var/www/html ), il vous suffit de recharger apache

#Rechargement de la configuration d'apache
service apache2 reload

Et le https fonctionne 🙂

Si vous bossez dans un autre dossier, éditer le fichier de configuration du site default-sslsudo vim /etc/apache2/site-enabled/default-ssl.conf…

Testez vos sites de développement en https Lire la suite »

Serveur Dédiés : Surveillez vos logs avec Logwatch

En complément d’outils de suivi comme munin, il est possible de suivre l’état de votre serveur en analysant ses logs.

Pour cela il existe un outil de reporting très pratique : Logwatch.
Celui-ci va parcourir et analyser les fichiers de log des différents services, et vous enverra un rapport quotidien par courriel.

Pour l’installer c’est très simple :

sudo apt-get install logwatch

Pour le configurer ouvrez le fichier /usr/share/logwatch/default.conf/logwatch.conf

Rechercher la ligne :

MailTo = root

Et remplacer root par votre adresse email.

En conservant les options par défaut vous aurez à présent un email quotidien sur l’état de votre serveur 🙂

Serveur Dédiés : Surveillez vos logs avec Logwatch Lire la suite »