Archives de avril, 2016

Magento : Créer un format d’adresse particulier

L’affichage des adresses dans magento est via gérée des formats configurables.
Les formats par défaut sont visibles depuis la configuration dans « système/configuration/clients/configuration/adresses/ »

Formats d'adresses

 

Cependant il est également possible de créer facilement vos propres formats d’adresses.
Pour cela il suffit de suivre les éléments suivants lors de la création de votre module.

Pour notre exemple je souhaite rajouter un format d’adresse « short ».
Dans le fichier de configuration (config.xml )de votre module rajouter le code suivant entre les balises <global> et </global>

 <!-- Nouveau format d'adresse pour le checkout -->
        <customer>
            <address>
                <formats>
                    <short> <!--Nom du format -->
                        <title>Short</title> <!-- Titre de du format -->
                    </short>
                </formats>
            </address>
        </customer>

 

Puis dans le noeud default

    <customer>
        <address_templates>
          <!-- nom du format et format à appliquer --> 
            <short>{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}},{{var street}}, {{var city}},{{var postcode}}, {{var country}}</short>
        </address_templates>
    </customer>
</default>

Et c’est tout, si votre module est bien reconnu par magento, vous pouvez à présent formater vos adresses avec votre nouveau format.…

Pas de commentaires

Magento : Ajouter un block dans une page via les observers

Voyons ensemble aujourd’hui comment ajouter un block de contenu dans une page magento via les observers.
Pour l’exemple on va se baser sur la problématique suivante :
Je souhaite afficher un message particulier sur la page du panier pour les clients qui ne sont pas connectés.
Le contenu du message doit être gérable dans le backoffice via un block cms.

En analysant la structure du fichier de layout checkout.xml pour la page panier, on constate qu’il existe un noeud de type core/text_list dans lequel nous allons inserer le contenu.

<checkout_cart_index>
...
<block type="core/text_list" name="additional.product.info" translate="label">
<label>Additional Product Info</label>
</block>
</checkout_cart_index>

Pour réaliser cela nous allons créer un module. ( je ne détaille pas la procédure ) qui va se baser sur l’événement : controller_action_layout_generate_blocks_after
via le code suivant dans le fichier config.xml

<events>
 <controller_action_layout_generate_blocks_after>
  <observers>
   <test_add_block_layout_xml>
    <class>Hhennes_Tests_Model_Observer</class>
    <method>testAddBlockToLayoutXml</method>
   </test_add_block_layout_xml>
  </observers>
 </controller_action_layout_generate_blocks_after>
</events>

Puis voici le code de l’observer :

<?php 
class Hhennes_Tests_Model_Observer  {
  
  /**
   * Ajout d'un contenu dynamique dans le layout
   */
  public function testAddBlockToLayoutXml($observer) {
   
    $action = $observer->getAction();
    $layout = $observer->getLayout();
    
    //Sur la page du panier : On ajoute le texte d'un block cms
    if ( $action->getRequest()->getOriginalPathInfo() == '/checkout/cart/') {
 
      $additionnalBlock = $layout->getBlock('additional.product.info'); //Récupération du block parent auquel on veut ajouter le contenu
      $cmsBlock = $layout->createBlock('cms/block','test_block')->setBlockId('dresses-skirts'); //Création du block cms dans le layout
      $additionnalBlock->append($cmsBlock,'test_add_cms_block'); //Ajout du nouveau block au block parent
      
    }
    
  }
  
}

Avec ce principe il est ainsi possible d’ajouter facilement du contenu sur n’importe laquelle de vos pages, de manière programmable.…

Pas de commentaires

Magento : Surcharger config.xml ou system.xml

Le système d’override de Magento est très puissant et relativement facile à mettre en place pour les Blocks , Helper et modèles.

En effet ( même si ce n’est pas la méthode recommandée) , il est possible de copier le fichier à surcharger de son arborescence initiale vers le codePool local, et d’y réaliser directement les modifications.

Ex pour le module Cms :
app/code/core/Mage/Cms/Block/Page.php vers app/code/core/Mage/Cms/Block/Page.php
app/code/core/Mage/Cms/Helper/Page.php vers app/code/core/Mage/Cms/Helper/Page.php
app/code/core/Mage/Cms/Model/Page.php vers app/code/core/Mage/Cms/Model/Page.php

Cette surcharge permets également de surcharger les modules placés dans le codePool Community, car si un fichier avec la même arborescence existe dans le codePool local, c’est toujours lui qui sera utilisé.

En revanche pour surcharger un fichier config.xml ou system.xml , il va être nécessaire de créer un module.
( Je ne détaille pas la création de celui-ci )

Commençons par le fichier config.xml

Le principe de l’override est simple, nous allons créer dans le fichier config.xml de notre module le même chemin xml que celui que nous souhaitons overrider.…

Pas de commentaires

Optimiser le développement de modules Prestashop : Éviter les régressions avec l’intégration continue

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

Pour finir notre série sur le développement de modules Prestashop, nous allons nous intéresser à l’intégration continue.
L’objectif de celle-ci est de nous assurer que tout fonctionne correctement lorsque nous faisons évoluer notre module. ( c’est à dire que les changements apportés n’entrainent pas l’apparition de nouveaux problèmes ou régressions )

Pour cela nous avons dans l’étape précédente écrits des tests fonctionnels qui sont chargés de vérifier que tout fonctionne correctement. Nous souhaitons donc que ces tests soient lancés automatiquement lors de la publication de chaque modifications.

Plusieurs possibilités existent pour réaliser ce suivi, mais je vais vous présenter une solution basée sur jenkins

Installation de jenkins

Pour l’installer connectez-vous à votre machine virtuelle et saissez les commandes suivantes :

wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Puis lancer le service via la commande

sudo service jenkins start

Une fois jenkins installé vous pouvez y accéder via le port 8080 , et donc via l’adresse http://192.168.33.10:8080

Installation des modules complémentaires.

Pas de commentaires

Magento : Module Dataflow avancés

Magento propose nativement des fonctionnalités d’imports / exports avancées qui ne sont pas forcément connues de tous les développeurs, ce sont les « Profils avancés » , ceux-ci sont disponible directement depuis l’administration dans le menu « Système — Importer/Exporter — Flux de données – Profils avancés »
Par défaut, aucun profil n’existe, mais ces profils vous permettent d’importer/exporter rapidement et facilement des objets magento.

J’avais déjà fait plusieurs articles sur le sujet :
Magento : Importer / Exporter les commentaires et les notes des produits via les profils avancés
Magento : Importer / Exporter les produits complémentaires ( upsell , crossell , related ) via les profils avancés

Afin de boucler la boucle, j’ai donc réalisé un module de gestion de ces profils avancés.

Celui-ci vous permets d’importer/exporter les éléments magento suivants  directement depuis l’administration.

  • Blocks cms
  • Pages cms
  • Commentaires et notes produits
  • Produits complémentaires
  • Emails transactionnels ( en base de données )

Le module est disponible sur github : https://github.com/nenes25/magento_dataflow
Pour ceux qui souhaitent étendre les possibilités du module, nous allons voir rapidement comment celui-ci fonctionne.…

Pas de commentaires


Archives

Compte Github