Теги разметки в Magento – директивы CMS

Теги разметки в 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 = пользовательский код переменной.

 



1 комментарий для “Теги разметки в Magento – директивы CMS

  1. Юрий:

    Каким образом получить тег разметки на current продукт?

    Например мы вставляем статический блок на страницу продукта и хотим, что бы на странице каждого продукта в том месте в тексте выводилось название этого продукта.

    «даствамим бла-бла-бла (здесь переменная продукта) бла-бла-бла.»
    Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *