herve

Alternative a wampserver : Vagrant

Si comme moi, vous développez sous Windows, et que vous utilisez wampserver pour faire tourner vos sites locaux, vous avez sans doutes déjà été agacé par les installations d’outils spécifiques sous windows ( composer , npm , phpunit ect… )

Voici donc une alternative simple et rapide à mettre en place.
Cela prendra un peu plus de temps que d’installer wamp mais une fois votre plateforme en place, vous aurez à votre disposition un linux en local.

Pour mettre l’infrastructure en place, voici les étapes à réaliser

Une fois les logiciels installés, vous pouvez maintenant installer des centaines de machines virtuelles préconfigurées en fonction de vos usages, celles-ci sont acessibles sur la plateforme https://atlas.hashicorp.com/boxes/search

Pour du développement local, je me suis basé sur l’image « Scotch Box » : https://box.scotch.io/ qui dispose entre autre des fonctionnalités suivantes :

Serveur : ( MySQL, PHP 5.5, Ruby, Git,Composer,Apache … )
Front End : (NPM, Grunt, Bower… )

Pour l’installer, il suffit de cloner le projet github

git clone https://github.com

Alternative a wampserver : Vagrant Lire la suite »

Magento : Ajouter un attribut personnalisé à la grid des produits via les observers

Vous avez forcément sur votre boutique Magento, des attributs produits spécifiques à votre site.
Si vous souhaitez les afficher dans la grid des produits, et pouvoir filtrer les produits via cet attribut, voici comment procéder.

Le méthode la plus propre est de passer par les observers de Magento, ceci évitera de créer des surcharges pouvant entrainer des problèmes de compatibilités.
Je passe volontairement toute la partie liée à la création du module pour se concentrer uniquement sur la partie spécifique à l’affichage de l’attribut dans la grid.

Pour que notre modification fonctionne, le module va se greffer sur les événements suivants :

  • core_block_abstract_to_html_before : Pour afficher l’attribut dans la grid des produits
  • eav_collection_abstract_load_before : Pour charger les valeurs de l’attribut dans la collection des produits

Voici donc les données  à faire figurer dans le fichier de configuration config.xml de votre module :
Veuillez à bien remplacer le nom du modèle ( hhennes_productgridfilter ) par le nom de votre module

<adminhtml>
        <events>
            <core_block_abstract_to_html_before>
                <observers>
                   <product_filter_reference>
                        <class>hhennes_productgridfilter/observer</class>
                        <method>onBlockHtmlBefore</method>
                    </product_filter_reference>
                </observers>
            </core_block_abstract_to_html_before>
            <eav_collection_abstract_load_before>
                <observers>
                    <product_filter_reference_load>
                        <class>hhennes_productgridfilter/observer</class>
                        <method>onEavLoadBefore</method>
                    </product_filter_reference_load>
                </observers>
            </eav_collection_abstract_load_before>
        </events>
  </adminhtml>

Passons à présent à l’édition de l’observer du module qui sera situé dans modulename/Model/Observer.php

Magento : Ajouter un attribut personnalisé à la grid des produits via les observers Lire la suite »

Prestashop : Ajouter des champs à l’inscription

C’est une question qui revient souvent sur Prestashop, comment ajouter des champs lors de l’inscription d’un client ?
Nous allons voir ensemble comment réaliser cela simplement.

Pour l’exemple, nous allons permettre à l’utilisateur de choisir son groupe client lors de l’inscription.
Si vous souhaiter rajouter des champs dans le formulaire d’édition client, vous pouvez consulter l’article : Prestashop : Ajouter des champs dans l’édition client
Si vous souhaitez pouvoir envoyer des fichiers lors de la création du compte client vous pouvez consulter l’article : Prestashop : Envoyer des fichiers lors de la création du compte client

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

Pour faire cela nous allons créer un nouveau module qui va se greffer sur les hooks prestashop disponibles pour cet usage :

  • displayCustomerAccountForm : ce hook permets de rajouter du contenu dans le formulaire de création de compte.
  • actionCustomerAccountAdd : ce hook permets de récupérer les informations transmises lors de la création du compte client.

Prestashop : Ajouter des champs à l’inscription Lire la suite »

Magento : Module Alertes

Voici un nouveau module Magento qui permets d’envoyer des alertes via emails aux administrateurs ou aux gestionnaires du site.

Vous pouvez-vous ci-dessous une capture de l’écran de configuration d’une alerte.
( Accessible via le menu Rapports / Alertes )

Création Alerte Magento

Dans cet exemple, je récupère toute les commandes du jour qui ont utilisé le coupon de réduction « TEST ».
Nous allons voir ensemble comment remplir une alerte.
( Je passe volontairement les détails sur les champs qui sont transparents : Nom / Description / Actif / )

Dans le champ condition , entrez la requête SQL à effectuer pour récupérer les données ( Seuls les SELECT sont autorisés ).

Si vous souhaitez recevoir un email, passer le champ Envoyer un email  à « Yes », renseignez ensuite les destinataires ( séparer les emails par ; ), un sujet et le texte de votre email.

Si vous souhaitez exporter les résultats en csv , passer le champ Exporter les résultats en csv à « Yes », puis renseignez le nom du fichier csv souhaité ainsi que l’emplacement ou il sera stocké ( dans var/export/ ).…

Magento : Module Alertes Lire la suite »

Prestashop : Mettre en place un captcha sur les commentaires produits

La nouvelle version de mon module de captcha eicaptcha ( version 0.4.3 ) apporte une nouvelle possibilité.

Vous pouvez désormais utiliser un captcha sur le formulaire de soumission des commentaires produits.

Voici comment activer cette fonctionnalité, si vous utilisez le thème par défaut.

Télécharger la dernière version du module eicaptcha
( Installer le module sur prestashop si ce n’est pas encore le cas :  module captcha Prestashop )
Extraire l’archive sur votre poste
Envoyer le fichier js/modules/productcomments/productcomments.js sur votre site via ftp
dans le dossier themes/default-bootstrap/js/modules/productcomments/ ( remplacer le fichier existant )
Envoyer le fichier views/templates/modules/productcomments/productcomments.tpl sur votre site via ftp
dans le dossier themes/default-bootstrap/modules/productcomments/ ( remplacer le fichier existant )

Une fois ces changements en place, le captcha sera disponible sur le formulaire de soumission des commentaires produits

Eicaptcha commentaire produit

Si vous utilisez un thème personnalisé, voici comment procéder.

Envoyer le fichier js/modules/productcomments/productcomments.js sur votre site via ftp
dans le dossier themes/default-bootstrap/js/modules/productcomments et adaptez le en fonction de votre design

Dans le fichier themes/default-bootstrap/modules/productcommentsproductcomments.tpl…

Prestashop : Mettre en place un captcha sur les commentaires produits Lire la suite »

Magento : Problème cumul règles de promotion panier

Le fonctionnement standard des règles de promotions de Magento peut poser problème dès lors qu’elles sont cumulées et qu’elles se basent sur une condition de montant.
Dans le cas suivant le comportement standard de Magento pose problème

  • Les frais de ports sont offerts via une règle de promotion ajoutée automatiquement au panier dès qu’il dépasse 50 € . ( condition : sous-total > 50 )
  • Le client à un panier supérieur à 50 € ( 51.96 dans mon exemple )
  • Le client applique un bon de réduction de 10€ ( via une autre règle de promotion avec un coupon )

=> Ce qui fait que le montant de sa commande ne dépasse plus le seuil nécessaire pour obtenir les frais de ports offerts.

Cependant comme vous pouvez le voir sur la capture ci-dessous, cette restriction n’est pas prise en compte par Magento.
Car la condition sous-total est basée sur le sous total initial de la commande, qui ne comprends pas les réductions
Les frais de ports sont donc offerts sur cette commande, alors qu’ils ne devraient pas l’être.…

Magento : Problème cumul règles de promotion panier Lire la suite »

Magento : exécuter un modèle via le shell ( php CLI )

Voici un script qui vous permettra d’exécuter n’importe quel modèle de Magento via le shell ( PHP CLI )
Celui-ci est à placer dans un fichier « model.php » le dossier « shell » de magento.

Si vous souhaitez par exemple visualiser les données d’un produit vous pouvez saisir la commande suivante

php -f model.php -- -model catalog/product -action load -value 254

Ou également pour envoyer les emails en attente

php -f model.php -- -model core/email_queue -action send

Dans mon cas je l’utilise pour l’éxécution de modèles personnalisés

<?php
 
require_once 'abstract.php';
 
class Hhennes_Shell_Model extends Mage_Shell_Abstract {
       
    public function __construct() {
        parent::__construct();      
    }
    
    /**
     * Execution du script
     */
    public function run() {
        
        try {
                      
            if  ( $this->getArg('model')){
                
                //Gestion de la méthode à tester, par défaut load
                if ( $this->getArg('method'))
                    $method = $this->getArg('method');
                else
                    $method = 'load';
                   
                //Exécution du test
                $model = Mage::getModel($this->getArg('model'))->$method($this->getArg('value'));
                
                //Affichage des données
                Zend_debug::dump($model);
            }
                 
        } catch (Exception $exc) {
            echo $exc->getMessage();
        }
            
    }
    
    
        public function usageHelp()
    {
        return <<<USAGE
Usage:  php -f model.php

Magento : exécuter un modèle via le shell ( php CLI ) Lire la suite »

Magento : email queue non envoyée

J’ai rencontré récemment un problème avec l’envoi des emails de confirmation de commande sur magento version 1.9.0.1.
Contrairement à de plus anciennes versions de magento (et c’est mieux ainsi 🙂 ), les emails ne sont plus envoyés directement après le passage d’une commande.

Ils sont stockés dans la table core_email_queue .

Puis il sont envoyés 100 par 100 via la tâche cron core_email_queue_send_all toutes les minutes.

Sur le serveur hébergeant le site Magento ( dans un environnement chrooté) , cette tâche cron ne fonctionnait pas et le fichier exception.log était remplis de messages de ce type :

exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /www/lib/Zend/Mail/Transport/Sendmail.php:137
Stack trace:
#0 /www/lib/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /www/lib/Zend/Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#2 /www/app/code/core/Mage/Core/Model/Email/Queue.php(241): Zend_Mail->send()
#3 [internal function]: Mage_Core_Model_Email_Queue->send(Object(Mage_Cron_Model_Schedule))
#4 /www/app/code/core/Mage/Cron/Model/Observer.php(325): call_user_func_array(Array, Array)
#5 /www/app/code/core/Mage/Cron/Model/Observer.php(72): Mage_Cron_Model_Observer->_processJob(Object(Mage_Cron_Model_Schedule), Object(Mage_Core_Model_Config_Element))
#6 /www/app/code/core/Mage/Core/Model/App.php(1338): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
#7 /www/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#8 /www/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
#9 /www/cron.php(77):

Magento : email queue non envoyée Lire la suite »

Déplacer les fichiers mysql vers un nouvel emplacement

Par défaut sur les serveurs kimsufi livré par ovh, la partition « / » allouée au système est relativement réduite. ( 20 Go  dans mon cas )
Sur mon serveur cette partition était quasiment pleine, et une grande partie de l’espace était occupée par les fichiers des bases de données.
( dossier /var/lib/mysql/)

Voici donc comment procéder pour déplacer ces fichiers et libérer de l’espace pour votre système.

Nous allons déplacer les fichiers de /var/lib/mysql/ vers /home/mysql/

Pour commencer il faut arrêter mysql

sudo service mysql stop

Nous pouvons ensuite déplacer les fichiers vers le nouvel emplacement ( Cette opération peut être assez longue en fonction du volume de données à transférer)

sudo mv /var/lib/mysql/ /home/mysql/

Puis mettre un lien symbolique de /home/mysql/ vers /var/lib/mysql/

sudo ln -s /home/mysql /var/lib/mysql

Il faut ensuite attribuer les droits du dossier à l’utilisateur mysql

sudo chown mysql:mysql /home/mysql

Il ne vous reste plus qu’a redémarrer msyql

sudo service mysql start

Les fichiers de mysql sont à présent à l’emplacement « home/mysql » et votre partition système retrouve de la place !…

Déplacer les fichiers mysql vers un nouvel emplacement Lire la suite »

Prestashop : Mettre en place un captcha sur le formulaire « envoyer à un ami »

La nouvelle version de mon module de captcha eicaptcha ( version 0.4.2 ) apporte une nouvelle possibilité.

Vous pouvez désormais utiliser un captcha sur le formulaire « Envoyer à un ami » situé sur la fiche produit.

Voici comment activer cette fonctionnalité, si vous utilisez le thème par défaut.

  • Télécharger la dernière version du module eicaptcha
  • ( Installer le module sur prestashop si ce n’est pas encore le cas :  module captcha Prestashop )
  • Extraire l’archive sur votre poste
  • Envoyer le fichier js/modules/sendtoafriend/sendtoafriend.js sur votre site via ftp
    dans le dossier themes/default-bootstrap/js/modules/sendtoafriend/ ( remplacer le fichier existant )
  • Envoyer le fichier views/templates/modules/sendtoafriend/sendtoafriend-extra.tpl sur votre site via ftp
    dans le dossier themes/default-bootstrap/modules/sendtoafriend/ ( remplacer le fichier existant )

 

Une fois ces changements en place, le captcha sera disponible sur le formulaire « Envoyer à un ami »

Ei Captcah send to a friend

 

Si vous utilisez un thème personnalisé, voici comment procéder.

  • Envoyer le fichier js/modules/sendtoafriend/sendtoafriend.js sur votre site via ftp
    dans le dossier themes/default-bootstrap/js/modules/sendtoafriend/ et adaptez le en fonction de votre design

Dans le fichier themes/default-bootstrap/modules/sendtoafriend/sendtoafriend-extra.tpl

Prestashop : Mettre en place un captcha sur le formulaire « envoyer à un ami » Lire la suite »