Syntaxe des pages CMS et e-mails transactionnels de Magento (Directives)

  • De le 16 décembre 2011
  • Difficulté : 3/4

Syntaxe des pages CMS et e-mails transactionnels de Magento (Directives) Une syntaxe particulière est utilisée dans Magento pour l'insertion de blocs, de médias ou encore d'URL dans les pages CMS et e-mails transactionnels. Cet article résume les directives (ou tags) qu'il est possible d'utiliser.

Directive Skin

La directive skin permet de récupérer l'URL des fichiers du thème.

Directive : {{skin url='images/image.jpg'}}

Equivalence : Mage::getDesign()->getSkinUrl('images/image.jpg',$params)

Paramètres :

  • url : chemin relatif du fichier
  • _theme : nom du thème
  • _package : nom du paquet
  • _area : nom de la zone (frontend ou adminhtml)

Exemple :

Exemple directive skin

<img src="{{skin url='images/free_shipping_callout.jpg'}}" alt="Free Shipping" />

<img src="{{skin url='images/free_shipping_callout.jpg' _theme='modern' _package='default' _area='frontend'}}" alt="Free Shipping" />

Directive Media

La directive media permet de récupérer l'URL des fichiers placés dans dossier media.

Directive : {{media url='catalog/category/image.jpg'}}

Equivalence : Mage::getBaseUrl('media').'catalog/category/image.jpg'

Paramètre :

  • url : chemin relatif du fichier

Exemple :

Exemple directive media

<img src="{{media url='catalog/category/image.jpg'}}" alt="Image catégorie" />

Directive Htmlescape

La directive htmlescape est utilisée pour l'échappement des caractères spéciaux HTML (si vous souhaitez afficher du code sans l'interpréter).

Directive :
{{htmlescape var='<a href="www.magentix.fr">Magentix</a> <strong>Autour de Magento</strong>'}}

Equivalence :
Mage::helper('core')->htmlEscape('<a href="www.magentix.fr">Magentix</a>',$params)

Paramètres :

  • var : chaîne de caractères
  • allowed_tags : éléments autorisés séparés par une virgule

Exemple :

Exemple directive htmlescape

{{htmlescape var='<a href="www.magentix.fr">Magentix</a> <strong>Autour de Magento</strong>' allowed_tags='strong,em'}}

Directive Store

La directive store est utilisée pour la génération de routes ou URLs.

Directive : {{store url='account/login'}}

Equivalence : Mage::getUrl('account/login',$params);

Paramètres :

  • url : URL de la route
  • direct_url : URL basé sur baseurl
  • _query_PARAM : ajouter un paramètre à l'URL. Exemple _query_id='10' (?id=10)
  • _fragment : ajouter un fragment à l'URL (Encre). Exemple _fragment='review-form' (#review-form)
  • _escape : échappement des caractères ",',<,>
  • custom : intégrer les paramètres à l'URL si l'URL correspond à une route. Exemple id='10' p='2' (/id/10/p/2)

Exemple :

Exemple directive store

<a href="{{store url='account/login' _fragment='review-form' _query_id='10' _query_string='chaine' id='20' p='2'}}">Mon URL</a>

<!-- Lien : account/login/index/id/20/p/2/?id=10&string=chaine#review-form -->

Directive Block

La directive block permet l'insertion d'un bloc.

Directives :

  • {{block id="bloc_static"}}
  • {{block type="core/template" template="montemplate/template.phtml"}}

Equivalences :

  • Mage::app()->getLayout()->createBlock('cms/block')->setBlockId('bloc_static')->toHtml();
  • Mage::app()->getLayout()->createBlock('core/template')->setTemplate('montemplate/template.phtml')
    ->toHtml();

Paramètres :

  • id : Identifiant du bloc statique. Le bloc sera toujours de type cms/block
  • type : type du bloc tel que défini dans les layouts
  • custom : n'importe quel paramètre à transmettre au bloc
    Exemples :
    id='10' équivaut à ->setId(10)
    template='montemplate/template.phtml' équivaut à ->setTemplate('montemplate/template.phtml')

Exemple 1 :

Exemple directive block avec template

{{block type="tag/popular" template="tag/popular.phtml"}}

Nous obtenons la liste des tags les plus populaires :

Affichage des tags populaires

Exemple 2 :

Exemple directive block avec identifiant

{{block id="footer_links"}}

Affichage du bloc dont l'identifiant est footer_links :

Affichage d'un bloc statique

Directive Layout

La directive Layout permet l'affichage de l'intégralité d'un handle défini dans les layouts. Cette directive est surtout utilisée dans les templates des emails transactionnels.

Directive : {{layout area="frontend" handle="sales_email_order_items"}}

Equivalence :

  • $layout = Mage::getModel('core/layout');
  • $layout->getUpdate()->load('sales_email_order_items');
  • $layout->generateXml()->generateBlocks();
  • echo $layout->getOutput();

Paramètres :

  • area : nom de la zone (frontend ou adminhtml)
  • handle : nom du handle défini dans un fichier layout
  • custom : n'importe quel paramètre à transmettre

Exemple :

Exemple directive layout

{{layout area="frontend" handle="tag_list_index"}}

Directive Config

La directive config permet d'afficher une variable de configuration.

Directive : {{config path="trans_email/ident_general/email"}}

Equivalence : Mage::getStoreConfig('trans_email/ident_general/email');

Paramètre :

  • path : chemin de la variable de configuration

Directive Customvar

La directive customvar permet l'insertion d'une variable personnalisée. Les variables personnalisées sont définies depuis l'administration, menu System > Custom Variables.

Directive : {{customvar code="ma_variable"}}

Equivalence : Mage::getModel('core/variable')->loadByCode('ma_variable')->getValue()

Paramètre :

  • code : code de la variable personnalisée

Exemple :

Exemple directive customvar

{{customvar code="adresse-magasin-paris"}}

Cet exemple affichera le contenu de la variable personnalisée adresse-magasin-paris :

Affichage d'une variable personnalisée

Directive Protocol

La directive protocol affiche l'URL selon le protocole utilisé sur le frontend (http ou https).

Directives :

  • {{protocol}} : http ou https
  • {{protocol url="magentix.fr"}} : http://www.magentix.fr ou https://www.magentix.fr
  • {{protocol http="magentix.fr" https="magentix.fr"}} : http://www.magentix.fr ou https://www.magentix.fr

Equivalence :

  • $url = 'magentix.fr';
  • $isSecure = Mage::app()->getStore($store)->isCurrentlySecure();
  • $protocol = $isSecure ? 'https' : 'http';
  • echo $protocol.'://'.$url;

Directive Widget

La directive Widget permet l'insertion d'un Widget.

Directive :
{{widget type="reports/product_widget_viewed" page_size="5" template="reports/viewed_grid.phtml"}}

Equivalence :
Mage::app()->getLayout()->createBlock('reports/product_widget_viewed', null, array('page_size'=>5, 'template'=>'reports/viewed_grid.phtml'))->toHtml();

Paramètres :

  • type : le type du Widget, équivaux au type du bloc
  • name : définir le nom du Widget
  • custom : n'importe quel paramètre à transmettre au Widget

Exemple :

Exemple directive widget

{{widget type="reports/product_widget_viewed" page_size="5" template="reports/widget/viewed/content/viewed_grid.phtml"}}

Ce Widget affichera les 5 derniers produits consultés par l'internaute :

Affichage d'un Widget
commentaires

Commentez cet article : Syntaxe des pages CMS et e-mails transactionnels de Magento (Directives)