Теги розмітки в Мадженто – директиви 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 = користувальницький код змінної.