Magento CMS syntax – part1

11 Comments 30th JUN 2009 | Posted by Ivan Weiler in Magento

Magento CMS syntax – part1

Every Magento user noticed that there is special {{magentocode}} syntax available in cms pages and blocks. We traced a bit to find out which params are available and what exactly they do.

As strange as this may sound, processor class that gets called is Mage_Core_Model_Email_Template_Filter located at app/code/core/Mage/Core/Model/Email/Template/Filter.php .

There are also some interesting directives in superclass Varien_Filter_Template, but if i’m not mistaken, none of them can be used.

There are six replacement codes  that can be used and each triggers its equivalent Directive function:

skinDirective
mediaDirective
htmlescapeDirective
storeDirective
blockDirective
layoutDirective

I’ll start with easier and most commonly used and continue with advanced ones in part two of this article.

1. skinDirective

Description: Used to retrieve path of skin folder and its files, theme fallback respected
Example: {{skin url=’images/image.jpg’ _theme=’blank’}}
Synonym: Mage::getDesign()->getSkinUrl($params['url'], $params)
Params:
url = empty or relative file path
_theme = alternative theme, fallbacks if file not exist
_package = alternative package
_area = alternative area(frontend,adminhtml)
_type, _default etc. = nothing useful, somebody please correct me if i’m wrong :)

2. mediaDirective

Description: Used to retrieve path of root/media folder and its files
Example: {{media url=’image.jpg’}}
Synonym: Mage::getBaseUrl(‘media’) . $params['url']
Params:
url = empty or relative file path

3. htmlescapeDirective

Description: Used to escape special html chars
Example: {{htmlescape var=’<a href=”www.inchoo.net”>inchoo</a><b>inchoo</b><i>inchoo</i>’ allowed_tags=’b'}}
Synonym: Mage::helper(‘core’)->htmlEscape($params['var'], $params['allowed_tags'])
Params:
var = string to escape
allowed_tags = comma-separated list of allowed tags

4. storeDirective

Description: Used to build magento routes and custom urls
Example: {{store url=’customer/account’ _query_a=’8′}}
Synonym: Mage::getUrl($params['url'], $params);
Params:
url = magento routers url
direct_url = normal url, appended to baseurl
_query_PARAMNAME = adds query param, for example _query_a=’8′ adds a=8 to url
_fragment = adds fragment, for example #comments
_escape = escapes “,’,<,>
custom = if using magento route url param, every custom param added will be appended like /a/8/b/10

I probably missed something in this last one, but it’s very late and i’m tired of poking through Magento ;)

To be continued ..

If you like what you read, please share it.

  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Yahoo! Bookmarks
  • Reddit
  • Technorati
  • Twitter
  • StumbleUpon
  • LinkedIn
  • Netvibes
  • FriendFeed
  • NewsVine
  • Sphinn
  • Tumblr

There are 11 comments (Add Yours +)

  • really gud one

  • Nice overview. I’ve published a less technical article about this syntax on the Magento wiki: http://www.magentocommerce.com/wiki/markup_tags

    I’ll update the article with a link to this one.

  • That’s great man, Thx. Wiki page is great, don’t know how I missed it before !!

    Hopefully, we’ll provide enough info and examples for other Magento users.

  • Great article!! What about e-mail template syntax?

  • OOHH! Great article! I’ve been looking for something like this for a long time. Thank you!

  • Lee Saferite Says

    @David: the email template syntax is exactly the same as the CMS template syntax because the CMS actually uses the email template filter to work. With email you just need to know what variables are available.

  • ha ha!i am looking for this!

  • I was looking for this today and didn’t see it in this totorial… maybe someone can use it…

    GET BASE URL IN PHP CODE (not in CMS):

    <a href="getUrl(”); ?>help” class=”link-cart”>__(‘Help’); ?>

  • Nice article but you know what you can use Varien_Filter_Template class directives cuz if you can’t you won’t use depend for example but there is a special syntax for everything and you can find the pattern specified in constants in that class ;)

    cheers

  • @Mona: how can if/depend/include/etc directives be used in cms, if i’m not mistaken, they can’t be used ?? or did i missed something ;)

  • Hello, I’m looking for some help… You said the email template syntax is the same as the CMS… oh-oh. I’m not receiving any test emails (transactional, new password, etc.) with variables with dots “.” and equal signs “=” (like {{var subscriber.getConfirmationLink()}}). I tried single and double quotes, underbar and “()” and they’re ok. And I’m using tags with dots and equal signs in CMS pages… Checked encoding, templates, locale… what am I missing?

Leave a Comment

Magento Design and Development | Magento SEO | iPhone Application Development Web Application Development with ZEND | WordPress Ecommerce | WordPress development
Sitemap

Inchoo - webappsolutions | 2009