Magento

Logo MagentoRetrouvez des tutoriels et des astuces dans l’utilisation de Magento.
En tant que développeur certifié Magento 1 je partage avec vous plus de 60 articles traitant à la fois de Magento 1 et de Magento 2, sur des thématiques relativement larges :

  • Création d’attributs
  • Personnalisation pdf
  • Optimisations des performances
  • Quick notes

Installer Magento2 sur un serveur ubuntu 12.04 « The Precise Pangolin »

En voulant tester la nouvelle version de magento 2, j’ai eut la désagréable surprise de voir qu’elle ne fonctionnait pas sur mon serveur de développement qui tourne sous Ubuntu Server 12.04 « The precise Pangolin ».

En effet magento2 nécessite au minimum la version 5.4 de php, alors que la dernière version qui tourne sur les serveurs Ubuntu 12.04 est la 5.3

Voici comment mettre à jour votre version de php sur votre serveur ( la dernière version à date est la 5.5.9 )

/!\ Attention cette modification entraine des modification qui seront difficilement réversibles.

Connectez vous en SSH et saisissez les commandes suivantes :

#Maj des packets du serveur
sudo apt-get update
 
#Installation de python si celui-ci n'est pas encore installé  
sudo apt-get install python-software-properties
 
#Ajout d'un nouveau repository de sources
sudo add-apt-repository ppa:ondrej/php5
 
#Maj du serveur
sudo apt-get update 
sudo apt-get dist-upgrade

Votre serveur est à présent à jour avec la dernière version de php et magento2 peut être installé 🙂

Note : Attention la version d’apache sera également mise à jour vers la version 2.4 qui entraine quelques modifications dans les fichiers configuration.…

Installer Magento2 sur un serveur ubuntu 12.04 « The Precise Pangolin » Lire la suite »

Magento : Livraison offerte avec Kiala Locate And Shipping

Voici comment rendre l’excellent module « Kiala Locate And Shipping » compatible avec les promotions « Livraison offerte »

( Attention fonctionne uniquement si l’utilisation des grilles tarifaires est désactivée )

Editer le fichier :
app/code/community/Kiala/LocateAndSelect/Model/Carrier/Kiala.php

La modification est à apporter dans la fonction « CollectRates »

/**
     * Collect rates via the original table rates and adapt to Kiala
     *
     * @param Mage_Shipping_Model_Rate_Request $data
     * @return Mage_Shipping_Model_Rate_Result
     */
    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
 
        if (!$this->kialaHelper()->isActive('frontend')) {
            return false;
        }
 
        if ($this->kialaHelper()->useTablerates()) {
            $result = parent::collectRates($request);
            if (!$result) {
                return false;
            }
            $method = current($result->getRatesByCarrier('tablerate'));
            if (!$method) {
                Mage::Log("Tablerate not initialised. To add shipping costs, configure magento's standard Tabelrate  shipping method without activating it."

Magento : Livraison offerte avec Kiala Locate And Shipping Lire la suite »

Magento : Promotion X achetés Y gratuits

La mise en place  d’une règle de promotion Magento de type « x achetés y gratuits » est plutôt fastidieuse et pas forcément claire.
( Note : Sur la version 1.4.1.1 de Magento, il y a un problème lorsqu’on souhaite créer une règle de type 1 acheté 1 offert , nous verrons plus loin comment corriger ce comportement. )

Voici un exemple sur comment configurer une règle de ce type  sur l’exemple suivant :
Pour l’achat de 2 téléphone Nokia 2610 , un 3ème téléphone Nokia 2610 sera offert 🙂  ( Pour 4  => 2 , ect… )

Pour commencer il faut se rendre dans « Promotions / Règles de prix Panier » puis cliquer sur « Ajouter une nouvelle règle »
Voici ensuite ce que nous allons saisir dans l’onglet « Informations règle »

Magento SalesRule Informations

  1. La règle s’applique à l’ensemble des sites web
  2. La règle s’applique à l’ensemble des groupes clients
  3. Le code pour utiliser le coupon est « TEL »
  4. Pas de limites d’utilisation du coupon
  5. Pas de limites d’utilisation par client

Dans l’onglet « Conditions » nous ne mettons rien car il n’y a pas de restrictions.…

Magento : Promotion X achetés Y gratuits Lire la suite »

Magento : Empêcher l’indexation d’une catégorie ou d’un produit

Il peut arriver que vous ne souhaitiez pas que certaines catégories ou produits ne soient indexés par google sur votre boutique Magento

Pour réaliser cela ajoutez le code suivant dans l’onglet « Habillage » et dans le champ « Layout custom update » de la catégorie ou du produit qui ne doit pas être indexé.

<reference name="head">
<action method="setRobots"><value>NOINDEX,NOFOLLOW</value></action>
</reference>

Magento : Empêcher l’indexation d’une catégorie ou d’un produit Lire la suite »

Magento : Quantité de produits non éditable dans les avoirs

Avec certains modes de paiement, il n’est pas possible d’éditer la quantité de produits à rembourser pour une commande.

Voici la modification à faire pour permettre cela.

Tout d’abord, il faut regarder quel est le module de paiement utilisé pour la commande.
Recherchez ensuite le fichier modèle du module de paiement ( app/code/community|local/YourPaymentModule/Model/YourPayementModule.php )

Puis dans la classe de votre module  ajoutez la propriété suivante :

protected $_canCapturePartial        = true;

( Testé et fonctionnel sous Magento 1.4.1.1 avec le module Qpay Ideal)

Note :

Dans mes recherches sur le web pour trouver la source du problème j’ai également consulté  la solution suivante :

protected $_canRefundInvoicePartial = true;

( Elle n’a pas fonctionné dans mon cas… )…

Magento : Quantité de produits non éditable dans les avoirs Lire la suite »

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

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

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"
    }
  }
}

Magento : lister les méthodes exécutées par un évènement Lire la suite »

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 🙂

Magento : Ajouter un attribut produit via un module Lire la suite »

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')-&gt;load($customerId);
if ($customer-&gt;getId()) {
$this-&gt;setCustomerAsLoggedIn($customer);
return true;
}
return false;
}

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

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

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

Magento : Erreurs dans les rapports Multisites / Multidevises Lire la suite »