layout

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

Magento : Ajouter un block dans une page via les observers Lire la suite »

Magento : conditionner l’insertion d’une ressource dans un layout xml

Un petit rappel pratique si comme moi vous souhaitez ajouter un fichier css ou js d’un de vos modules sur une page magento via les layout xml, mais que celui-ci doit être conditionné à un paramètre de votre module ( actif ou non )

Voici comment procéder.
Par exemple pour ajouter un fichier css et un fichier js dans la page onepage_index, uniquement si le parametre mymodule/display/onepage/ est actif
Dans le fichier de layout de votre module dans « app/design/frontend/default/theme/layout/yourmodulelayout.xml »
Il faut rajouter la condition ifconfig= »mymodule/display/onepage/ »

<checkout_onepage_index>
<reference name="head">
<action method="addCss" ifconfig="mymodule/display/onepage/">
<stylesheet>namespace/module/css/ui-lightness/jquery-ui-1.8.14.custom.css</stylesheet>
</action>
<action method="addItem" ifconfig="mymodule/display/onepage/">
<type>skin_js</type>
<name>namespace/module/js/jquery-ui-1.8.14.custom.min.js</name>
</action>
</reference>
</checkout_onepage_index>

Magento : conditionner l’insertion d’une ressource dans un layout xml Lire la suite »