herve

Magento : Widget lien ajout au panier

Voici comment créer un widget pratique qui vous permettra d’afficher un lien d’ajout de produit au panier, il pourra s’afficher :
– sous forme de texte
– sous forme de bouton

Nous allons pour cela créer un nouveau module, dans mon exemple je vais l’appeler Hhennes_Test.
( Je ne détaille pas la création totale du module mais uniquement les points spécifiques à la problématique )

Pour commencer il est nécessaire de créer un fichier widget.xml dans le dossier etc/ du module.
Dans celui-ci, il est possible de déclarer tous les widgets de votre module ainsi que tous leurs paramètres.

Dans mon cas je souhaite les possibilités suivantes :

  • Choisir le produit concerné par le lien d’ajout au panier
  • Choisir le mode d’affichage ( texte ou bouton )
  • Saisir un texte pour le lien
<?xml version="1.0" encoding="UTF-8"?>
<widgets>
    <!-- Déclaration de mon widget "Lien d'ajout au panier"  et du block qui lui est associé -->
    <hhennes_test type="hhennes_test/widget_addtocart" translate="name description" module="hhennes_test">
        <name>Hhennes Add To Cart Link</name>
        <description type="desc">Add link to add product in cart</description>
        <!--

Magento : Widget lien ajout au panier Lire la suite »

Magento : Intégrer des landing pages

Voici quelques astuces pratiques pour si vous souhaitez intégrer des landing pages sous Magento :

Le contenu de la page sera placé dans une page cms, ce qui vous permettra d’obtenir l’url de votre choix.
Et d’accéder à l’ensemble des fonctionnalités wysiwyg de Magento 🙂

Les images de la landing page peuvent être placées dans le dossier « media » de votre site ( ou sur le cdn qui regroupe les médias ),
ce qui permets de les insérer dans le contenu avec les balises :

{{ media url='/chemin/de/mon/fichier.jpg'}}

Les liens vers les produits ou les pages du site de votre page peuvent également utiliser la syntaxe :

{{page url='ma-page-produit.html'}}

Les ressources css / js de la landing page peuvent être placée dans le dossier skin  de votre thème magento.
ex : skin/frontend/herve/default/css/landing_pages/fichier.css
ex : skin/frontend/herve/default/js/landing_pages/fichier.js

De cette manière vous pouvez rajouter ces fichiers à la page via l’onglet Design et un update du layout

<reference name="head">
 
<!--

Magento : Intégrer des landing pages Lire la suite »

Magento : Ajouter des actions de masse à la grid des promotions panier

Par défaut la grid d’administration des promotions panier ne permets pas d’exécuter d’actions de masses.
Dans le cas de désactivation multiples il est donc nécessaire de passer sur chaque règle pour la désactiver via l’administration ( ou de créer un script ), ce qui est relativement long et fastidieux

Pour optimiser cela voici comment rajouter des actions de masses à cette liste sans surcharge.
( Cette méthode est valide pour toutes les grids existantes et ne comportant pas d’actions de masse )

Nous allons pour cela créer un nouveau module, dans mon exemple je vais l’appeler Hhennes_Test.
( Je ne détaille pas la création totale du module mais uniquement les points spécifiques à la problématique )

Pour mettre nos actions de masse nous allons utiliser l’observer : adminhtml_block_html_before
Il faut donc mettre les lignes suivantes dans le fichier config.xml de notre module

<adminhtml>
        <events>
            <adminhtml_block_html_before>
                <observers>
                    <hhennes_test_add_massaction_promo_grid>
                        <type>singleton</type>
                        <class>hhennes_test/observer</class>
                        <method>addMassActionPromoGrid</method>
                    </hhennes_test_add_massaction_promo_grid>
                </observers>
            </adminhtml_block_html_before>
        </events>
    </adminhtml>

Dans l’événement nous appelons la fonction addMassActionPromoGrid du modèle hhennes_test/observer

Voici donc le code à mettre dans ce fichier Hhennes_Test/Model/Observer.php…

Magento : Ajouter des actions de masse à la grid des promotions panier Lire la suite »

Magento : Ajouter un champ de confirmation d’email sur les formulaires d’inscription

Afin de vous mettre à l’abri des erreurs de saisies d’email lors de la création de compte sur Magento et des ses multiples effets de bords ( Emails et informations perdus, réassurance et expérience client médiocre … ) voici comment mettre en place une solution rapide sur vos formulaires de création de compte.

Le principe est relativement simple, nous allons rajouter un nouveau champ « Confirmation email »  dans lequel l’utilisateur devra saisir à nouveau son adresse email.
Les 2 saisies de l’email permettent déjà de réduire considérablement les erreurs de frappe.

Ce tutoriel est réalisé sur la version 1.9.2 de Magento avec le thème rwd en base.

Modification des templates

Pour commencer il va falloir dupliquer les fichiers suivants contenant les formulaires de création de compte.
Du thème rwd : app/design/frontend/rwd/default/template/ dans votre thème app/design/frontend/yourtheme/default/template/

  • persistent/customer/form/register.phtml ( Création de compte standard )
  • persistent/checkout/onepage/billing.phtml ( Création de compte dans le checkout )

 

Dans le fichier register.phtml…

Magento : Ajouter un champ de confirmation d’email sur les formulaires d’inscription Lire la suite »

Magento : Annuler et supprimer des avoirs

Par défaut dans la solution magento, il n’est pas possible d’annuler ni de supprimer les avoirs. ( C’est logique au niveau comptable )
Cette fonctionnalité peut toutefois être pratique dans le cas d’une erreur de manipulation

Nous allons donc voir comment faire pour ajouter cette fonctionnalité à Magento en créant un module.
Celui-ci va ajouter 2 boutons « Annuler » et « Supprimer » dans la page de gestion d’un avoir.

Credit Memo Cancel delete

Je ne vais détailler ici que le fonctionnement logique du module.
Vous pourrez trouver l’intégralité des sources et le module sur github : https://github.com/nenes25/magento_creditMemo

L’objectif de ce module étant de ne pas réaliser de surcharge, nous allons utiliser les observers.
Celui qui nous intéresse adminhtml_widget_container_html_before

Dans le fichier de configuration de notre module il faut donc ajouter un observer sur cet événement via le code suivant

<global>
..
 <events>
            <adminhtml_widget_container_html_before>
                <observers>
                    <add_creditmemo_buttons>
                        <class>hhennes_creditmemo/observer</class>
                        <method>addCreditMemoButtons</method>
                    </add_creditmemo_buttons>
                </observers>
            </adminhtml_widget_container_html_before>
 </events>
...

Magento : Annuler et supprimer des avoirs Lire la suite »

Prestashop : Utiliser l’arbre des catégories dans le formulaire d’administration d’un module

Si vous souhaitez utiliser l’arbre des catégories de Prestashop dans le formulaire d’administration d’un module.

Voici un petit snippet qui vous permettra de le faire facilement avec Prestashop 1.6 et supérieurs lors de la déclaration des paramètres de votre formulaires :
( Cette solution est nativement implémentée )

 $fields_form = array(
            'form' => array(
                //Entête du formulaire
                'legend' => array(
                    'title' => $this->l('Form Name'),
                    'icon' => 'icon-cogs'
                ),
                //Champs du formulaire
                'input' => array(
                    array(
                        'type' => 'categories', //Type de champ à mettre à catégories
                        'label' => $this->l('Category'),
                        'name' => 'category_tree',
                        'desc' => $this->l('Select category to display'),
                        'required' => true,
                        'empty_message' => $this->l('Please fill the category id'),
                        //Informations spécifiques de l'arbre
                        'tree' => array(
                            'id' => 'category_tree',
                            'selected_categories' => $selected_categories) // Catégorie sélectionnées ( variable array )
                        ),
                    ),  
                ),
                //Boutons de soumission du formulaire
                'submit' => array(
                    'title' => $this->l('Save'),
                    'class' => 'button btn btn-default pull-right',
                )
            ),
        );

Le rendu obtenu est ensuite le suivant :

Catégories admin form prestashop

Prestashop : Utiliser l’arbre des catégories dans le formulaire d’administration d’un module Lire la suite »

Corriger les arrêts intempestifs de Proftpd

Sur mon serveur dédié qui tourne sous ubuntu 14.04* j’avais depuis longtemps un problème avec le serveur proftpd qui redémarrait de manière intempestive.
Ce qui nécessitait à chaque fois un redémarrage via ssh pour pouvoir à nouveau se connecter.

Après quelques recherches j’ai trouvé que la cause était la rotation des logs.
Celle-ci nécessite l’arrêt et le redémarrage du serveur, et le redémarage ne fonctionnait pas, du coup le service ne fonctionnait plus.

Voici comment faire pour corriger cela :
Editez le fichier : /etc/init.d/proftpd

Remplacer la ligne suivante :

start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE"

Par le contenu suivant :

start-stop-daemon --stop --signal $SIGNAL --retry 1 --quiet --pidfile "$PIDFILE"

 

Une fois cette modification effectuée, le problème ne devrait plus survenir 🙂

* Le problème était également présent sur ubuntu 12.04…

Corriger les arrêts intempestifs de Proftpd Lire la suite »

Optimiser le développement de modules Prestashop : Tester fonctionnellement vos modules avec Phpunit et Selenium

Cet article fait partie de la série : Optimiser le développement de modules Prestashop

  1. Mise en place de l’environnement de développement
  2. Industrialiser l’installation de Prestashop et des modules
  3. Tester fonctionnellement vos modules avec Phpunit et Selenium
  4. Éviter les régressions avec l’intégration continue

3ème étape de notre série sur l’optimisation du développement de module prestashop.

Après la configuration de l’environnement et l’industrialisation des installations qui ont permis de mettre en place la structure de développement, il est temps de passer aux tests fonctionnels de nos modules.
Ceci nous permettra de vérifier que le comportement utilisateur est bien celui attendu.

Configuration de l’environnement pour exécuter les tests

Pour cela nous allons déjà installer les programmes suivants sur le serveur

  • Xvfb : permettra de lancer une application graphique sans serveur X
  • Firefox : navigateur
  • Java : JDk

Pour installer ces éléments saisissez les commandes suivantes

sudo apt-get install xvfb
sudo apt-get install firefox
sudo apt-get install default-jdk

Nous allons ensuite installer également phpunit et selenium, cependant ces éléments peuvent être installé de manière globale ou via composer

Installation globale

PhpUnit

#Téléchargement de phpunit
wget https://phar.phpunit.de

Optimiser le développement de modules Prestashop : Tester fonctionnellement vos modules avec Phpunit et Selenium Lire la suite »

Mantis Bugtracker : Plugin Changement automatique de statuts

Voici un nouveau plugin pour mantis Bugtracker.

Celui-ci permet de changer automatiquement le statut d’un bug vers un autre statut après une durée de x jours.
Mais également d’envoyer une note d’avertissement x jours avant le changement de statut.

Ce plugin est relativement pratique pour relancer ou clore automatiquement des bugs en attente de validation client par exemple.

Pour commencer il faut définir quel utilisateur va effectuer ce changement de statut :
changestatus

 

Vous pouvez-ensuite saisir les changements de statuts souhaités via un formulaire dédié.
Ceux-ci peuvent être spécifiques à des projets particuliers.

add-status-change

Une fois vos changements insérés dans la configuration du module, il ne vous reste plus qu’a mettre en place une tâche cron sur le fichier

http://yourwebsite.com/plugin.php?page=AutoChangeStatus/cron

Pour récupérer la dernière version du module et suivre ces modifications ça se passe par ici :
https://github.com/nenes25/mantisbt_autochangestatus

Vous pouvez télécharger le plugin : MantisAutoChangeStatus

Mantis Bugtracker : Plugin Changement automatique de statuts Lire la suite »

Optimiser le développement de modules Prestashop : Industrialiser l’installation de Prestashop et des modules

Cet article fait partie de la série : Optimiser le développement de modules Prestashop

  1. Mise en place de l’environnement de développement
  2. Industrialiser l’installation de Prestashop et des modules
  3. Tester fonctionnellement vos modules avec Phpunit et Selenium
  4. Éviter les régressions avec l’intégration continue

Cet article est la 2ème étape de notre série sur l’optimisation de modules Prestashop.
Merci de prendre connaissance de la partie 1 : mise en place de l’environnement de développement afin de pouvoir suivre cet article.

Notre environnement de développement est à présent en place, nous allons donc passer à l’industrialisation de l’installation de Prestashop, mais également de ces modules.
L’idée de cette étape est d’avoir des outils pour mettre en place rapidement et automatiquement les versions souhaitées de Prestashop sur notre serveur.

Proposition du structure des fichiers sur le serveur.

Le dossier racine de notre installation est /var/www/public/, dans ce dossier nous allons créer un dossier « prestashop » qui va contenir l’ensemble de nos installations Prestashop.

Celles-ci seront installées dans des sous-dossiers « prestashop_1.x.x.x/

Optimiser le développement de modules Prestashop : Industrialiser l’installation de Prestashop et des modules Lire la suite »