Archives de octobre, 2015

Prestashop : Ajouter des champs dans l’édition client

En complément de mon précédent article, Prestashop : Ajouter des champs à l’inscription , voici comment rajouter des champs sur le formulaire d’édition d’un client. ( IdentityController )

L’exemple reste le même, à savoir que le client peut choisir son groupe client.
J’ai retiré le code qui était relatif à l’ajout des champs sur le formulaire d’inscription pour plus de clareté, mais les 2 peuvent bien évidemment cohabiter.

La procédure est un peu plus complexe car elle nécessite la création d’un nouveau hook pour pouvoir sauvegarder les données souhaitées.
Le module va être greffé sur le hook prestashop displayCustomerIdentityForm ( attention il n’existe qu’à partir de la version 1.6.0.11 ), et nous allons créer un nouveau hook actionCustomerIdentityFormSubmit

Voici le code du module

<?php
class hhregistration extends Module {
 
    public function __construct() {
        $this->name = 'hhregistration';
        $this->tab = 'hhennes';
        $this->author = 'hhennes';
        $this->version = '0.1.0';
        $this->need_instance = 0;
 
        parent::__construct();
 
        $this->displayName = $this->l('HH Registration');
        $this->description = $this->l('Sample module which show how to add fields to identity controller');
    }
 
    /**
     * Installation du module : Installation Standard + greffe sur les hooks nécessaires
     * @return boolean
     */
    public function install() {
        if (
                !
10 commentaires

Backup manager : Exclure des fichiers ou des dossiers

Afin de sauvegarder mon serveur dédié j’utilise le script Backup-manager qui fait très bien son rôle de sauvegarde.
( Si vous souhaitez le mettre en place c’est par ici : Sauvegarder serveur dédié )

Cependant j’ai eut récemment des problèmes d’espace disque et je me suis rendu compte que de nombreux fichiers inutiles étaient sauvegardés.
( Fichiers de cache magento et prestashop )

Voici donc comment exclure des données de la sauvegarde.

Ouvrir le fichier de configuration de backup manager

sudo vim /etc/backup-manager.conf

et rechercher la ligne suivante :

export BM_TARBALL_BLACKLIST= ""

Rajouter ensuite les dossiers à exclure de votre sauvegarde, séparés par des espaces

ex :

export BM_TARBALL_BLACKLIST= "/var/www/magentosite/var/ /var/www/magentosite/media/catalog/cache/ /var/www/prestashopsite/cache/"

Sauvegarder votre fichier.
Lors des prochaines sauvegardes ces dossiers seront exclus, ce qui vous permettra de réduire la taille de celles-ci.…

Pas de commentaires

Magento : Gestion des attributs EAV du catalogue via un module

Le grand avantage de Magento par rapport aux solutions concurrentes réside dans l’utilisation du modèle EAV, qui apporte une grande souplesse dans la gestion de votre boutique.
Ce qui vous permets de rajouter à la volée des paramètres à vos produits ( entre autre )

Pour cet article je souhaite réaliser les éléments suivants :

  • Création d’un nouveau jeu d’attribut « Vélo »
  • Création d’un groupe d’attributs « vélo »
  • Création de nouveaux attributs  » wheel_size », »supension »
  • Afficher ces attributs dans l’administration, et dans le front office

Le tout bien évidement sans toucher à l’administration 🙂
C’est donc parti pour la création d’un module qui va gérer tout ça , il va s’appeller Specific_Catalog et qui sera en version 0.1.0

Je ne détaille pas les éléments standards de la création du module, mais uniquement les éléments spécifiques à la problématique.

Pour commencer dans le fichier config.xml de notre module il faut créer insérer le code suivant ( dans la balise global )
Celui-ci va nous permettre de définir les ressources d’installation de notre module.…

Pas de commentaires

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>
        <!-- Paramètres de configuration du widget -->
        <parameters>
            <!-- Choix du produit : Basé sur la fonctionnalité déjà existante pour le widget product-link -->
            <product_id translate="label">
                <visible>1</visible>
                <required>1</required>
                <label>Product</label>
                <type>label</type>
                <!-- On réutilise la fonctionnalité du widget product link -->
                <helper_block>
                    <type>adminhtml/catalog_product_widget_chooser</type>
                    <data>
                        <button translate="open">
                            <open>Select Product...
Pas de commentaires

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">
 
<!-- Ajout du css -->
<action method="addCss">
  <stylesheet>css/landing_pages/fichier.css</stylesheet>
</action>
 
<!-- Ajout du js -->
<action method="addItem">
<type>skin_js</type>
 <name>js/landing_pages/fichier.js</name>
</action>
</reference>

N’hésitez pas à partager vos astuces également 😉…

Pas de commentaires

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

<?php
 
/**
 * Hhennes_Test : Observer Model
 *
 * @author Herve <[email protected]>
 */
class Hhennes_Test_Model_Observer {
 
    /**
     * Ajout de paramètres d'actions de masse sur la grid des promotions panier
     * @param Varien_Event_Observer $observer
     */
    public function addMassActionPromoGrid($observer) {
 
        //On récupère le bloc qui est traité
        $block = $observer->getBlock();
    
        //On effectue uniquement une action si c'est la grid des promotions panier
        if ($block instanceof Mage_Adminhtml_Block_Promo_Quote_Grid) {
    
            //Définition des paramètes masseAction du bloc
            $block->setMassactionIdField('rule_id');
            $block->getMassactionBlock()->setFormFieldName('rules_id');
            $block->getMassactionBlock()->setUseSelectAll(false);
 
            //Ajout de l'action de masse "Suppression"
            $block->getMassactionBlock()->addItem('rule_delete', array(
                'label' => Mage::helper('hhennes_test')->__('delete'),
                'url' => $block->getUrl('hhennes_test/adminhtml_promoQuote/massDelete'), //Controller du module
                    )
            );
 
            //Ajout de l'action de masse "Changement de statut"
            $block->getMassactionBlock()->addItem('rule_status', array(
                'label' => Mage::helper('hhennes_test')->__('Change Status'),
                'url' => $block->getUrl('hhennes_test/adminhtml_promoQuote/massStatus'), //Controller du module
                'additional' => array(
                    'visibility' => array(
                        'name' => 'status',
                        'type' => 'select',
                        'class' => 'required-entry',
                        'label' => Mage::helper('salesrule')->__('Status'),
                        'values' => array(
                            '1' => Mage::helper('salesrule')->__('Active'),
                            '0' => Mage::helper('salesrule')->__('Inactive'),
                        ),
                    )),
            ));
 
            //Configuration et ajout de la colonne pour sélectionner les élément à traiter
            $massactionColumn = array(
                'index' => $block->getMassactionIdField(),
                'filter_index' => $block->getMassactionIdFilter(),
                'type' => 'massaction',
                'name' => $block->getMassactionBlock()->getFormFieldName(),
                'align' => 'center',
                'is_system' => true
            );
            $block->addColumn('massaction', $massactionColumn, 'promo_quote_grid');
 
        }
    }
 
}

Les actions de masses sont à présent bien disponibles sur la grid, comme vous pouvez le voir dans la capture suivante.…

Pas de commentaires


Archives

Compte Github