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