Magento конфігурація від А до Я

У Magento існує дуже багато налаштувань. Всі вони знаходяться уSystem ->Configuration. Будь-який модуль може додати туди специфічні параметри. Нові поля, групи та таби – все це робиться за допомогою конфігураційного файлу system.xml.

Структура файлу

Усі system.xml конфігураційні файли складаються з кількох основних частин: таби -> секції -> групи -> поля. У інтерфейсі користувача все це розташовано якось так

секції

Всі налаштування Magento можуть мати одну з трьох областей дії (scope):default,website,store. Налаштування задане в скоупі store перевизначає значення, задані в default і website. Аналогічно параметр заданий у скоупі website перевизначає значення за промовчанням, тобто. скоуп default. Спочатку це може здатися дуже складним, але виявиться дуже юзабільним, коли у Вас під керуванням однієї Magento знаходиться кілька сайтів. Область видимості (скоуп) можна перемикати за допомогою списку у верхньому лівому кутку на сторінці конфігурації.

Конфігураційний файл виглядає так

Щоб створити таб досить просто задати йому ім'я та порядок сортування. Наприклад, відкривши модуль Mage_Core можна побачити

У цьому файлі визначено 3 таба. При створенні таба основним параметром є код - ім'я тега. Він знадобиться надалі, щоб вказати секції, до якого табу вона належить. Наприклад, у тому ж файлі

можна визначити за тегомtab, що секціяAdvanced відноситься до табуAdvanced. Секція визначається такими тегами:

  • label - назва секції
  • tab - таб до якого вона належить (необов'язковий)
  • class - задає css клас для посилання секції,як приклад секція PayPal-а (необов'язковий)
  • header_css - задає css клас для тега h3 на сторінці редагування секції. Як приклад - той самий PayPal (необов'язковий)
  • sort_order – порядковий номер
  • groups - групи, що належать до цієї секції
  • show_in_default - показувати в дефолтному скоупі
  • show_in_website - показувати в скоупі сайту
  • show_in_store - показувати в скоупі стора

Атрибутtranslate вказує (через пробіл), вміст яких тегів є мультимовним. Атрибутmodule вказує, який модуль, відповідальний за цю секцію, в основному використовується, щоб створити об'єкт хелпера цього модуля.

Секція містить у собі групи, наприклад advanced

Ця група відповідає за вимкнення виведення блоків певного модуля. Подивимося на її UI

секції

Зазвичай у групі задаються поля, але можна вказати frontend_model. Вона відповідає за виведення всіх полів і має реалізувати інтерфейс Varien_Data_Form_Element_Renderer_Interface. У контексті Magento – це насправді блок, а не модель.

Група задається наступними тегами

Якщо подивитися в секціюdesign, то побачимо, що її групи мають тег fields, в якому задаються параметри для полів. Наприклад, група package

Для завдання поля необхідно вказати наступні теги

У більшості випадків source, backend і frontend моделі писати не доведеться. Потрібно просто пройтися по всіх налаштуваннях, подивитися чи є те, що потрібно, потім відкрити конфігураційний файл і скопіювати вже готові директиви.

Тег frontend_type може містити будь-яке значення з полів форми, які визначені в lib/Varien/Data/Form/Element/ директорії.

Створення своїх налаштувань

Щоб створитисвої налаштування для початку потрібно написати модуль. У модулі директорії etc створюємо файл system.xml. Створимо свій таб та секцію, а також додамо нове поле у ​​секцію Каталог, групу Layered Navigation.

Так як Magento об'єднує всі конфіг файли в один великий XML, то щоб додати новий таб потрібно лише написати

Тепер, щоб це запрацювало, потрібно очистити кеш, а також створити права доступу для цих параметрів (ACL) інакше потраплятимете на 404 сторінку. У нашому випадку додамо ACL лише для однієї секції my_section. Додаємо інформацію про це в конфіг модуля (config.xml)

Докладніше про ACL можна прочитати тут.

Виходимо з адмінки, щоб сесія очистилася, заходимо назад і ось що бачимо

групи

Усі налаштування зберігаються в базі таблиці core_config_data. Щоб отримати доступ до налаштувань використовується конструкція

Тепер додамо нове поле до вже існуючої групи. Насправді все робиться за аналогією і досить просто. Спочатку відкриємо файл system.xml модуля Mage_Catalog. Знайдемо там групу, яка відповідає за Layered Navigation, щоб скопіювати її код. І потім додаємо нову структуру XML в тег sections

Чистимо кеш і заходимо через адмінку до секції Каталог, групу Layered Navigation