Syntaxe des pages CMS et e-mails transactionnels de Magento (Directives)
- De Matthieu Vion le 16 décembre 2011
- Difficulté : 3/4
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
- Directive Media
- Directive Htmlescape
- Directive Store
- Directive Block
- Directive Layout
- Directive Config
- Directive Customvar
- Directive Protocol
- Directive Widget
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 :
Exemple 2 :
Exemple directive block avec identifiant
{{block id="footer_links"}}
Affichage du bloc dont l'identifiant est footer_links :
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 :
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 :


