herve

Magento : Attributs global pas mis à jour sur tous les stores.

J’ai dernièrement rencontré un problème avec un attribut d’une portée globale, qui n’était pas mis à jour sur un store en particulier.
Le comportement rencontré était le suivant :

  • Le changement de la valeur de l’attribut dans le store global est bien pris en compte
  • La valeur de l’attribut n’est pas mise à jour dans le store spécifié
  • Changer la valeur de l’attribut sur le store spécifié ne modifie pas sa valeur.

Dans la majorité des cas ce problème est lié à un changement de portée de l’attribut, alors que des données avait déjà été renseignées.
Dans mon cas la portée initiale de l’attribut était par store, et elle a été passé au global.

Le problème est lié au fait que les données de l’attribut spécifiques au store n’ont pas été supprimées, malgré le changement de statut.
Il faut donc les supprimer manuellement via une requête du type :
sur les tables :

  • catalog_product_entity_datetime
  • catalog_product_entity_decimal
  • catalog_product_entity_int
  • catalog_product_entity_varchar

Pour supprimer tous les attributs :

DELETE FROM `catalog_product_entity_varchar` 
WHERE
   store_id <> 0 AND
   attribute_id IN (
           SELECT attribute_id 
           FROM catalog_eav_attribute 
           WHERE is_global = 1
 
   )

Ou pour un seul attribut :

DELETE FROM `catalog_product_entity_varchar` 
WHERE
   store_id <> 0 AND
   attribute_id  = xxx

Et pour finir visitez le site de rencontre sérieuse gratuite Oulfa.fr…

Magento : Attributs global pas mis à jour sur tous les stores. Lire la suite »

Magento : Événements création de compte client

Un petit tip rapide, si vous souhaitez réaliser des actions lors de la création d’un compte client sous Magento, il va falloir se baser sur 2 événements :

customer_register_success : Lancé lors de la création de compte depuis le formulaire standard.

checkout_submit_all_after : Lancé à la fin du passage d’une commande.
Dans cet événement il faudra également mettre la condition suivante :

if ($observer->getQuote()->getData('checkout_method') == Mage_Checkout_Model_Type_Onepage::METHOD_REGISTER) {
 
//Votre code ici
 
}

Magento : Événements création de compte client Lire la suite »

Batch : Ajouter des entrées dans le fichier host

Voici un petit script batch qui vous permettra d’ajouter facilement des entrées dans votre fichier host :

:: Script d insertion de lignes dans un fichier batch
:: Herve-hennes - 2015
:: version 0.1.0
 
::Ne pas écrire les commandes exécutées
@echo off
::Couleurs d affichage de la fenetre
color 0A
::Titre de la fenêtre
title Ajouter une entree dans le fichier host
 
::Ce script doit etre execute en administrateur
:: Cf. https://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights#11995662
net session >null 2>1&
if %errorLevel% GTR 0) (
 goto erreur_droits
)
 
::Saisie du nom de domaine a ajouter au host
set /p host=Entrer le nom de domaine a ajouter au fichier host :
 
::Saisie du host par defaut
set /p ip=Entrer l ip vers laquelle doit pointer le host (defaut: 127.0.0.1) :
 
::Attribution de la valeur par defaut si pas d ip renseignee
if "%ip%"=="" (
  set ip=127.0.0.1
 )
 
 ::Ecriture de la ligne dans le fichier de host
 :: @ToDo Il faut verifier que l entree n existe pas
 echo %ip% %host% >> %SystemRoot%\system32\drivers\etc\hosts
 
 echo Nouvelle ligne inseree dans le fichier host
 
 ::Permet de ne fermer la fenête que lorsque l utilisateur appuie sur une touche
 pause > null
 exit
 
 :: Texte affiche si les droits d execution du fichier ne sont pas suffisants
 :erreur_droits
  echo Ce script doit etre lance en administrateur pour fonctionner
 
::Permet de ne fermer la fenêtre que lorsque l utilisateur appuie sur une touche
:: mettre pause > null pour ne pas afficher le message
pause

Batch : Ajouter des entrées dans le fichier host Lire la suite »

Serveur dédiés : Ajouter du swap

Voici un petit post rapide pour expliquer comment mettre en place du swap sur votre serveur dédié ( ou sur votre vm ) tournant sous linux.

Ceci vous permettra d’éviter toutes les problèmes du type :

  • ‘proc_open(): fork failed – Cannot allocate memory’ avec composer
  • lancements de tests phpunit

C’est parti pour le code.
Je pars du principe que vous avez assez de place sur votre filesystem /
Nous allons créer un fichier de swap « swapfile » d’une taille de 2 go
( vous pouvez le remplacer par la valeur de votre choix, sous réserve de disposer d’un espace suffisant )

#creation du fichier de swap
sudo fallocate -l 2G /swapfile
#mise a jour des droits du fichier
sudo chmod 600 /swapfile
#declaration du fichier swap
sudo mkswap /swapfile
#activation du fichier swap
sudo swapon /swapfile

Vous pouvez ensuite vérifier que tout a bien fonctionné en lançant la commande suivante :

sudo swapon -s

Serveur dédiés : Ajouter du swap Lire la suite »

Magento : Ajouter des nouveaux attributs aux formulaires de création de compte

Une mise à jour de cet article pour Magento 2 est disponible : Magento 2 : Ajouter des nouveaux attributs aux formulaires de création de compte
Dans cet article nous allons voir ensemble comment ajouter proprement un nouvel attribut client qui sera affiché dans les formulaires suivants

  • Création de compte ( normal )
  • Création de compte ( checkout )
  • Création de compte ( admin )

Pour l’exemple nous allons créer un attribut « website_know », qui permettra de demander au client via quel source il a connu le site.

Le tout va être géré via un module nommé « Hhennes_Customer ».
Je ne détaillerais pas toutes les étapes de création du module mais uniquement les points particuliers.

Partie Code :

Pour commencer voici le fichier de configuration de notre module.

 <?xml version="1.0"?>
 
<config>
 
    <!-- Configuration de base du Module -->
    <modules>
        <Hhennes_Customer>
            <version>0.1.0</version>    
        </Hhennes_Customer>
    </modules>
 
    <!-- Configuration globale -->
    <global>
        <helpers>
            <hhennes_customer>
                <class>Hhennes_Customer_Helper</class>    
            </hhennes_customer>
        </helpers>
       <!--

Magento : Ajouter des nouveaux attributs aux formulaires de création de compte Lire la suite »

Prestashop : Ajouter automatiquement les clients à un groupe lors de l’inscription

Afin de segmenter vos clients dans prestashop, il est utile de les ranger dans des groupes clients spécifique.
Ce nouveau module Prestashop, vous permettra d’assigner automatiquement les clients aux groupes souhaités dès leur inscription en fonction de paramètres prédéfinis.

Pour l’installation, comme pour tous mes modules hébergés sur github, l’installation par zip ne fonctionne pas.
Il est nécessaire de déposer le dossier « customerautogroups » , dans le dossier « modules » de votre site via FTP.

Une fois le module installé, un nouvel onglet est disponible dans l’administration, dans « client/ Customer Auto Groups »

Autogroups menu

Vous pouvez ensuite accéder à la liste des règles et créer vos nouvelles règles.

Liste règles auto groupes

 

Les règles sont cumulables et priorisables.

Voici par exemple le formulaire d’édition d’une règle, qui ajouter automatiquement tous les client  qui sont des hommes ( çad dont le champ Client « id_gender » = 1 ) dans un groupe client « Hommes »

customerautogroups

Les conditions possibles sont liées à tous les champs des classes Customer et Address.…

Prestashop : Ajouter automatiquement les clients à un groupe lors de l’inscription Lire la suite »

Magento : Application du patch SUPEE-6788

Le dernier patch de sécurité releasé par Magento le 27 octobre dernier à apporté de nombreuses corrections.
Mais il entraine également des effets de bords relativement nombreux sur les modules tiers.

J’ai trouvé sur github un outil très pratique qui m’a permis de réaliser l’application de ce patch plus facilement :

Magento® SUPEE-6788 Developer Toolbox :  https://github.com/rhoerr/supee-6788-toolbox

Les scripts doivent être exécutés dans le dossier shell/
Pour commencer il faut analyser les problèmes rencontrés via la commande :

php -f fixSUPEE6788.php -- analyze

Les résultats de l’analyse sont disponibles dans le fichier var/log/fixSUPEE6788.log

Plusieurs types de problèmes sont relevés :

  • Ancienne configuration du router adminhtml des modules
  • Déplacement des controllers admin pour éviter les confit ( avec changement du nom des classes )
  • Blocks qui ne sont pas dans la withelist.
  • Variables qui ne sont pas dans la withelist
  • Modules / fichiers / impactés ou qui posent problèmes.

Si vous souhaitez appliquer directement les correctifs listé dans le fichier de log, vous pouvez lancer la commande suivante :

php -f fixSUPEE6788.php

Magento : Application du patch SUPEE-6788 Lire la suite »

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 (
                !

Prestashop : Ajouter des champs dans l’édition client Lire la suite »

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.…

Backup manager : Exclure des fichiers ou des dossiers Lire la suite »

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.…

Magento : Gestion des attributs EAV du catalogue via un module Lire la suite »