juin 2015

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 »