Теги разметки в Magento – директивы CMS
В этой статье мы детально рассмотрим теги разметки (директивы CMS) в Magento, которые можно использовать в CMS страницах, в статических блоках, и в шаблонах e-mail.
Что такое тег разметки?
Тег разметки (шаблона) – это небольшой кусок текста, окруженный двойными фигурными скобками, который имеет особое значение в Magento, например, {{store url=»}}.
Вы можете использовать теги, например, в качестве ссылки на определенную страницу вашего магазина без ввода полного пути и доменного имени; вставлять блок внутрь страницы без редактирования файлов макета или шаблонов. Теги, на самом деле, имеют множество вариантов применения.
Где я могу использовать эти теги?
Вы можете использовать теги разметки в CMS страницах, в статических блоках, и в шаблонах e-mail.
Как я могу использовать теги шаблона?
Вы можете использовать теги шаблонов, включив их в нужном месте.
Для примера рассмотрим случай, когда вы хотите разместить некую картинку на главной странице вашего магазина (для управления содержимым главной страницы, перейдем в админпанели CMS > Управление страницами, и выберем «Главная страница» для редактирования.) Чтобы вставить картинку мы можем использовать стандартный тег HTML, с указанием полного пути к картинке:
<img src="http://www.site.com/skin/frontend/default/default/images/media/about_kompany.jpg" alt="" />
а можем вместо этого длинного кода, использовать тег разметки шаблона, который значительно компактный:
<img src="{{skin url='images/media/about_kompany.jpg'}}" alt="" />
Другими словами, система «подставит» вместо текста (директивы) skin url путь к папке оформления (skin) активного шаблона.
Какие теги я могу использовать?
Рассмотрим варианты использования некоторых тегов:
{{block id='block_id'}}
Этот тег вставляет статический блок, который имеет идентификатор «block_id«. (Статические блоки создаются и управляются через меню CMS > Статические блоки (Static Blocks) в админке).
Например:
{{block id='footer_links'}}
Этот код вставит статический блок «Ссылки футера».
{{htmlescape var='' allowed_tags=''}}
Этот тег будет игнорировать все HTML-теги в значениях атрибута var.
Пример:
{{htmlescape var='<a href="javascript:alert(1);">Привет!</a>'}}
Т.е. данный код выведет строку <a href="javascript:alert(1);">Привет!</a>
, которую браузер не будет интерпретировать (обрабатывать код).
{{media url=»}}
Этот тег вставляет полный URL к папке с медиа-файлами, например, http://www.site.com/media/.
Пример: {{media url='catalog/product/a/iphone5.jpg'}}
Этот тег выведет следующий адрес: http://www.site.com/media/catalog/product/a/iphone5.jpg.
{{store url=»}}
Вставляет базовый URL магазина, то есть URL главной страницы сайта (пример вывода: http://www.site.com/).
Пример: {{store url='about-magento-demo-store'}}
Этот тег будет преобразован в http://www.site.com/about-magento-demo-store/. Обратите внимание на завершающий слеш в этом URL; это то, что отличает атрибут url от атрибута direct_url.
Более того, этот атрибут URL-адреса используется для динамически выводимых ссылок, например, с переменными, идентификаторами сессии в адресной строке.
Если вам нужна простая, статическая ссылка, лучше использовать тег direct_url, описанный ниже.
{{store direct_url=»}}
Этот тег используется для вывода прямой статической ссылки. Пример: если вы укажете {{store direct_url='furniture/office-table.html'}}
, этот тег (директива) преобразуется в http://www.site.com/furniture/office-table.html
Как тег разметки шаблона (директива) работает?
Когда Magento встречает тег разметки, он использует эту директиву для заполнения массива из трех элементов.
- Первым элементом является весь тег, заключенный в фигурные скобки.
- Вторым элементом является ключевое слово, которое следует сразу после открытия фигурных скобок (например, store)
- Третьим элементом является сочетание «ключевое слово = значение» (например, url=’furniture/office-table.html’).
Magento приводит массив к методу класса Mage_Core_Model_Email_Template_Filter. Имя метода зависит от ключевого слова в теге: если ключевое слово store, будет вызван метод storeDirective.
Затем метод возвращает определенное значение. Это значение будет «подставлено» вместо тега разметки и выведено в пользовательской части сайта.
Основные теги разметки (директивы) и их параметры:
skinDirective
Описание: Используется для получения пути к папке оформления темы по умолчанию
Пример: {{skin url='images/myimage.jpg'}}
Синоним (соответсвует): Mage::getDesign()->getSkinUrl($params['url'], $params)
Параметры:
- url = пустой или относительный путь к файлу
- _theme = альтернативная тема, если файл не найден (пример: _theme=’blank’)
- _package = альтернативный пакет тем
- _area = альтернативная среда (frontend,adminhtml)
storeDirective
Описание: Используется для создания путей и пользовательских URL-адресов
Пример: {{store url='customer/account' _query_a='5'}}
Синоним: Mage::getUrl($params['url'], $params);
Параметры:
- url = основная ссылка сайта (BaseUrl)
- direct_url = прямой путь, который добавляется к основной ссылке (пример: furniture/office-table.html)
- _query_PARAMNAME = добавляет параметр к запросу, например _query_a=’5′ добавляет a=5 к URL
- _fragment = добавляет фрагмент к ссылке, например, #comment
blockDirective
Описание директивы: Выводит статический блок CMS, или любой блок определенного типа
Пример: {{block id='static_block_code'}}
– загружает статический блок с идентификатором static_block_code
{{block type='core/template' template='custom/custom.phtml'}}
– выводит блок типа core/template и определенный файлом-шаблоном custom.phtml
Синоним:
Mage::app()->getLayout()->createBlock('cms/block')->setBlockId('static_block_code')->toHtml(); Mage::app()->getLayout()->createBlock('core/template')->setTemplate('custom/custom.phtml')->toHtml();
Параметры:
- id = код статического блока; если id установлен, тип блока всегда будет cms/block
- type = тип блока
widgetDirective
Описание: Выводит определенный виджет. Magento виджеты автоматически вставляют эти коды, для пользовательской настройки, лучше использовать block коды.
Пример:
{{widget type='catalog/product_widget_new' products_count='9' template='catalog/product/widget/new/content/new_list.phtml'}}
Синоним:
Mage::app()->getLayout()->createBlock('catalog/product_widget_new', null, array('products_count’=>9, 'template'=>'catalog/product/widget/new/content/new_list.phtml'))->toHtml();
Параметры:
- type = тип виджета
- name = определяет, что имя блока должно быть в макете; вероятно нужно, только если более чем один виджет используется на той же странице
- Любой дополнительный параметр при условии, что он будет передан объекту виджета.
customvarDirective
Описание: Выводит пользовательские переменные HTML, которые определены в админке по адресу System -> Custom Variables (Система -> Пользовательские переменные). Могут быть легко добавлены через редактор. Таким образом, эта директива позволяет использовать свои собственные переменные.
Пример: {{customvar code='my_custom_var'}}
Синоним:
Mage::getModel('core/variable')->loadByCode('my_custom_var')->getValue();
Параметры:
- code = пользовательский код переменной.
Юрий
Каким образом получить тег разметки на current продукт?
Например мы вставляем статический блок на страницу продукта и хотим, что бы на странице каждого продукта в том месте в тексте выводилось название этого продукта.
«даствамим бла-бла-бла (здесь переменная продукта) бла-бла-бла.»
Спасибо.