Posts Tagged ‘magento’

Magento : Supprimer le champ obligatoire « régions » dans les adresses du checkout

Sous Magento ( version 1.4.x ) pour certains pays il est nécessaire de choisir une région associée à l’adresse.
Utile pour certains pays (US,CA … ) cette information n’est pas forcément judicieuse pour la France.
C’est d’autant plus agaçant que ce champ est considéré comme obligatoire par magento.

Voici les étapes à réaliser pour ne plus afficher ces éléments :
Pour commencer il faut supprimer directement dans la table sql les régions associées au pays pour lequel on ne souhaite plus afficher les régions.
Pour la france voici le code sql

DELETE FROM mag_directory_country_region WHERE country_id = 'FR'

Une fois cette manipulation effectuée, la saisie du champ « Région » devient facultative.
Il est donc possible de modifier directement les fichiers billing.phtml et shipping.phtml situé dans le dossier « yourThemeDirectory/checkout/onepage/ » pour ne plus faire apparaitre cette information.…

Pas de commentaires

Magento : lister les méthodes exécutées par un évènement

Une petite astuce pour ceux qui veulent avoir la liste des méthodes qui vont être exécutées par un évènement magento.
Dans mon cas je souhaitais savoir les méthodes exécutées pour l’evènement « sales_order_save_after »

Voici le code a copier dans le controlleur de votre choix :

Zend_debug::dump(Mage::app()->getConfig()->getEventConfig('global', 'sales_order_save_after'));

Et voici le résultat :

object(Mage_Core_Model_Config_Element)#119 (1) {
  ["observers"] => object(Mage_Core_Model_Config_Element)#118 (3) {
    ["tax"] => object(Mage_Core_Model_Config_Element)#15 (2) {
      ["class"] => string(12) "tax/observer"
      ["method"] => string(24) "salesEventOrderAfterSave"
    }
    ["foomanjirafe_salesOrderSaveAfter"] => object(Mage_Core_Model_Config_Element)#108 (3) {
      ["type"] => string(9) "singleton"
      ["class"] => string(33) "Fooman_Jirafe_Model_OrderObserver"
      ["method"] => string(19) "salesOrderSaveAfter"
    }
    ["giftvoucher_order_save_after"] => object(Mage_Core_Model_Config_Element)#124 (3) {
      ["type"] => string(9) "singleton"
      ["class"] => string(20) "giftvoucher/observer"
      ["method"] => string(14) "orderSaveAfter"
    }
  }
}
Pas de commentaires

Magento : Ajouter un attribut produit via un module

Petit script pratique aujourd’hui pour ajouter rapidement un attribut produit via un module personnalisé.
Dans notre cas nous allons également créer un groupe d’attribut spécifique qui sera ajouté à tous les jeux d’attributs produits.
Puis pour finir nous ajouterons l’attribut directement dans ce groupe d’attributs.

Le code suivant est à placer dans le fichier d’install ou d’upgrade de votre module.

 

$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
 
/**
 * Création du nouvel Attribut produit "product_picto"
 * Creation of the new product attribute "product_picto"
 */
$setup->addAttribute('catalog_product', 'product_picto', array(
    'label' => 'product_picto',
    'type' => 'varchar',
    'input' => 'select',
    'backend' => '',
    'frontend' => '',
    'global' => 0,
    'visible' => true,
    'required' => false,
    'user_defined' => 1,
    'option' => array(
        'value' => array(
            'none' => array('none'),
            'exclu-web' => array('exclu-web'),
            'nouveaute' => array('nouveaute'),
            'top-ventes' => array('top-ventes'),
        )
    ),
    'used_in_product_listing' => 1,
    'default' => 'none',
));
 
 
/**
 * Création d'un groupe d'attribut "V2" et ajout du nouvel attribut "product_picto" dans ce groupe pour tous les jeux d'attributs
 * Creation of an attribute group "V2" and add of the new attribute "product_picto" in this attribute group  for all attributes sets
 */
$attributesSetIds = $setup->getAllAttributeSetIds('catalog_product');
 
foreach ($attributesSetIds as $attributesSetId) {
 
    $setup->addAttributeGroup('catalog_product', $attributesSetId, 'V2');
    $setup->addAttributeToGroup('catalog_product', $attributesSetId, 'V2', 'product_picto');
 
}
 
$installer->endSetup();

Après l’installation ou la mise à jour de votre module voici le résultat obtenu 🙂

Pas de commentaires

Magento : Possibilité de s’identifier comme n’importe quel client sur le front office.

J’ai récemment été confronté à la problématique d’afficher des informations de clients non visibles depuis le back office.
Pour les voir il était donc nécessaire de se connecter comme ce client sur le front office du site avec la restriction de ne pas disposer du mot de passe client.

Après quelques recherche dans les classes Magento, j’ai trouvé une fonction qui correspondait parfaitement à mon besoin dans le fichier app/code/core/Mage/Customer/Model/Session.php
Cette fonction est la suivante :

/**
* Authorization customer by identifier
*
* @param   int $customerId
* @return  bool
*/
public function loginById($customerId)
{
$customer = Mage::getModel('customer/customer')->load($customerId);
if ($customer->getId()) {
$this->setCustomerAsLoggedIn($customer);
return true;
}
return false;
}

Elle permets de se connecter en tant que client en disposant uniquement de l’id client.…

Pas de commentaires

Magento : Erreurs dans les rapports Multisites / Multidevises

J’ai récemment été confronté à un problème dans les rapports Magento pour une boutique  comportant plusieurs sites.
Pour le site Anglais utilisant la livre sterling (£) les montants des rapports étaient toujours égal à 0, comme vous pouvez le voir sur la capture suivante.
( Aucun problème pour les autres sites, car la monnaie par défaut est l’Euro (€) )

Erreur Export Magento Montant 0

Après pas mal de recherches j’ai trouvé que le problème était lié au fait que les taux de devises n’étaient pas définis dans « Système / Gestion des taux des devises », comme vous pouvez le voir sur la capture ci-dessous :

Gestion des taux de devises Magento

Pour que les données des prochaines commandes soient correctes, il faut renseigner un taux entre ces 2 devises.
Dans mon cas je vais partir du postulat 1€ = 1£ et renseigner les champs en conséquence.

A présent il va falloir régler le cas de toutes les commandes déjà passées.
Pour réaliser ses rapports, magento utilise le champ « base_to_global_rate » dans la table « sales_flat_order ».…

Pas de commentaires

Magento : Utiliser l’éditeur wysiwyg sur un champ d’administration personnalisé

Si lors de la création d’un nouveau module, vous souhaitez utiliser l’éditeur wysiwyg de magento sur un champ personnalisé dans l’administration, voici un code rapide et pratique à mettre en place.

Dans le controller qui éxecute le formulaire d’ajout/édition de votre module rajouter la ligne suivante :

if (Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) {
$this->getLayout()->getBlock('head')->setCanLoadTinyMce(true);
}

Dans la configuration de votre formulaire adaptez le code suivant :

$fieldset->addField('page_content', '<strong>editor</strong>', array(
'label' => Mage::helper('etatpur_cms')->__('content'),
'required' => true,
'name' => 'page_content',
'style' => 'height:36em;',
'wysiwyg' => true,
'config' => Mage::getSingleton('cms/wysiwyg_config')->getConfig(),
));

Et voila vous avez à présent un bel éditeur wysiwyg sur votre champ 🙂

Editeur wysiwyg sur champ personnalisé magento

Attention :
J’ai rencontré des problèmes dans le cas ou le champ sur lequel je souhaitais appliquer l’éditeur était intitulé content , dans ce cas l’éditeur était appliqué sur le mauvais champ, ce qui rendait l’édition impossible.…

Pas de commentaires

Magento : Configurer un montant maximum de commande

Edit 2015 :
Cette solution est datée, et n’est pas la plus pratique.
Préférez plutôt la solution proposée par le lien suivant : http://inchoo.net/magento/magento-maximum-allowed-order-amount/

Si pour une raison x ou y vous souhaitez limiter le montant maximum des commandes réalisées sur votre site ecommerce magentento, voici une solution rapide pour réaliser cette action.
( cette modification a été mise en place sur une version 1.4.1.1 de magento )

Pour réaliser cette action, nous allons ajouter une vérification du montant du panier, avant l’ajout de nouveaux éléments à celui-ci.
Ce comportement est géré dans le modèle du panier situé dans le fichier suivant app/code/core/Mage/Checkout/Model/Cart.php.

Pour commencer et avant toute modification, faites une copie de ce fichier dans le dossier app/code/local/Mage/Checkout/Model/Cart.php

Passons à présent au code , nous allons mettre en place une nouvelle variable qui contiendra le montant maximum du panier au format numérique.

/**
* Montant maximum de la commande
*/
protected $_CartMaxAmount = '400';

Nous créons ensuite une fonction qui sera chargée de vérifier que le montant du panier est bien inférieur au montant défini dans notre variable précédente.…

Pas de commentaires

Magento : créer une sauvegarde des versions de pages cms

Un petit tip utile pour ce vendredi sur la plateforme Magento.
Par défaut, la version community ne comporte pas de sauvegarde des modifications des pages CMS.
Cette fonction peut cependant être très utile en cas d’une erreur ou d’une suppression intempestive d’un contenu.

Voici donc un petit tips pour remédier à tout cela rapidement ( sans interface d’administration pour l’instant…, juste une sauvegarde de la base de données).

Nous allons commencer par créer un module magento que nous allons nommer « CmsVersionning ».
Pour cet article celui-ci sera situé dans l’arborescence « app/local/Hhennes/CmsVersionning/ » (à adapter selon vos préférences)

Nous commençons par le fichier xml de configuration du module à placer dans app/etc/modules

 <?xml version="1.0"?>
<config>
    <modules>
        <Hhennes_CmsVersionning>
            <active>true</active>
            <codePool>local</codePool>
        </Hhennes_CmsVersionning>
    </modules>
</config>

Passons à présent au processus de création de ce module :

Pour commencer nous allons créer le fichier de configuration.…

Pas de commentaires

Magento U : Correctif installation locale de Magento Enterprise Edition

Je me suis récemment inscrit au programme de formation Magento U, qui permet de suivre des cours à la demande en vidéo et de manière gratuite sur cette plateforme.
( Je reviendrais en détails sur cette formation dans un futur article).

Une fois l’inscription à cette formation validée, il est possible de télécharger la version Entreprise de Magento ( version 1.11.0.2 )

Cependant l’installation de cette version en local ( à l’aide de wamp) sur mon ordinateur a été quelque peu problématique et je suis resté bloqué de longues heures à l’étape de la configuration.
Le navigateur me détectant une boucle sans fin, il était impossible de finaliser mon installation.

Malgré de nombreuses recherches je n’ai trouvé aucune solution sur internet, je partage donc mon astuce
( certes ce n’est pas le mode de fonctionnement le plus propre… mais il marche )

J’ai donc installé tout cela sur un hébergement ovh, et la miracle un message d’erreur s’est enfin affiché qui m’a permis de trouver la source du problème :

a:5:{i:0;s:219: »Error in file: « /app/code/core/Enterprise/WebsiteRestriction/data/enterprise_websiterestriction_setup/data-install-1.11.0.0.php » – A page URL key for specified store already exists. 

Pas de commentaires

Magento : Module de détection des commandes annulées puis payées

J’ai récemment été confronté à un problème de commandes annulées, mais payées quand même sur un site Magento en production avec les modes de paiements Atos et Paypal.
Ces changements de statuts empêchent le bon fonctionnement du processus de traitement de la commande.

Pour éviter de devoir consulter l’ensemble des commandes, j’ai donc développé un module Magento pour détecter ces commandes qui posent problème.

Voici l’arborescence des fichiers du module :

— app
–code
— local
— Test
— Module
— controllers
— CronController.php
— etc
— config.xml
–etc
— modules
–Test_Module.xml

C’est également l’occasion de voir ensemble comment créer un module simple sur la plateforme ecommerce Magento. (Version 1.4.1.1)

Pour commencer nous allons créer le fichier de déclaration du module à Magento.
Celui-ci doit être placé dans le dossier « app/etc/modules » sous la forme « MonNamespace_MonModule.xml »
Voici son contenu :

<xml version="1.0"?>
<config>
 <modules>
 <Test_Module>
<active>true</active>
 <codePool>local</codePool>
 </Test_Module>
 </modules>
</config>

Dans ce fichier nous déclarons notre module à magento, et que celui-ci appartient au codepool « local » c’est à dire au code qui est développé par vos soins.…

4 commentaires


Compte Github