Популярні запитання по Magento і відповіді на них
Дуже часто користувачі Мадженто стикаються з такими питаннями, відповіді на які важко знайти. Тому ми постаралися зібрати в одному місці найбільш популярні з таких питань, і найбільш повно на них відповісти.
Коли потрібно чистити кеш, щоб побачити зміни в Magento?
Всякий раз, коли ви додали/змінили файли XML, JS, CSS.
Як включити CMS блок у файлі шаблону (.phtml)?
Блоки контенту з .phtml-файлу шаблону викликаються:
echo $this->getLayout()->createBlock("cms/block")->setBlockId("id_statik_blok")->toHTML();
де id_statik_blok – це унікальний ідентифікатор (ID) статичного CMS-блоку.
Як підключити файли JavaScript/CSS в Magento?
За допомогою тегів у XML файлах структури (наприклад, в основних файлах шаблону – local.xml, page.xml)
<action method="addJs"><script>js/yourfile.js</script></action> <action method="addCss"><stylesheet>css/yourstyle.css</stylesheet></action>
АБО
<action method="addItem"><type>skin_js</type><name>js/yourfile.js</name></action> <action method="addItem"><type>skin_css</type><name>css/yourstyle.css</name></action>
Найбільш часто використовувані типи блоків?
Зазвичай використовуються такі типи блоків:
core/template, page/html, page/html_head, page/html_header, page/template_links, core/text_list, page/html_wrapper, page/html_breadcrumbs, page/html_footer, core/messages, page/switch.
Деякі блоки, такі як content, left, right і т.д. – це блоки типу core/text_list. Коли ці блоки рендеряться, всі їхні дочірні блоки рендеряться автоматично, без необхідності викликати метод getChildHtml().
Як працює дизайн в Magento
Дивіться урок: Розуміння логіки дизайну для Magento
Що таке “магічні методи” в Magento?
Методи PHP, що починаються з подвійного підкреслення, називають магічними методами. За допомогою їх ви можете визначити поведінку вашого об’єкта при різних маніпуляціях з його екземпляром.
Magento використовує магічні методи
__call(), __get(), __set(), __uns(), __has(), __isset(), __toString(), __construct()
і т.д.
Більш детальну інформацію про ці методи ви можете знайти всередині класу Varien_Object.
Детальна інформація про магічні методи в PHP: http://php.net/manual/en/language.oop5.magic.php
Скільки таблиць в базі даних створює Magento при створенні нового модуля?
Magento створює 6 таблиць: module, module_datetime, module_decimal, module_int, module_text і module_varchar. Перша – це головна таблиця, а решта 5 зберігають дані атрибута в різних типах даних. Наприклад, цілі значення запишуться в таблицю module_int, значення цін в таблицю module_decimal і т.д.
Де в базі даних зберігається зв’язок між налаштованим товаром і простим товаром?
Цей зв’язок зберігається в 2 таблицях бази даних:
- catalog_product_relation
- catalog_product_superlink_table
Як зробити переклад Magento
Дивіться урок: Як перекласти Magento на українську
Що таке архітектура MVC в Magento?
Для початку визначимося з поняттям MVC. MVC – це абревіатура від Model-View-Controller (Модель – Вигляд – Контролер). Будь-який додаток, який використовує поділ на дані, бізнес-логіку та інтерфейс – можна назвати MVC.
Magento також використовує логіку MVC: контролери (для запиту/відповіді маршрутизації), Block (для візуалізації вмісту), Model (для бізнес-логіки), Resource/Mysql4 (для операцій з базами даних), etc (для файлів конфігурації конкретних модулів), Helper (для загальних функцій), SQL (для сценаріїв установки), макет – Layout (для підключення блоку з шаблонами для кожної дії контролера) і шаблон/.phtml файл (для Вигляду).
Більш детально архітектура МАДЖЕНТО описана в статті: Структура Magento – архітектура файлів CMS.
Як працює Magento ОRМ?
ОRМ – ця абревіатура перекладається як об’єктно-реляційне відображення. Це метод програмування, який використовується для перетворення різних типів даних об’єктів. Так, за допомогою цієї технології, бази даних зв’язуються з концепціями об’єктно-орієнтованої мови програмування (MVC).
Всі моделі Magento, які взаємодіють з базою даних, успадковуються від класу Mage_Core_Model_Abstract, який потім успадковується від Varien_Object.
Приклад роботи ORM: коли ви хочете отримати деякі дані в Magento, ви викликаєте це так:
Mage::getModel('module/model')->load(1);
де 1 – це первинний ID ключ деякої Регулярної/Простий таблиці.
Що таке EAV в Magento?
EAV – це модель даних Entity-Attribute-Value (Сутність-Атрибут-Значення), яка дозволяє додавати необмежену кількість колонок в базу даних. Так, за EAV, є одна таблиця, яка містить всі «атрибути» даних (імена полів таблиць), та інші таблиці, які містять “сутності” (ID або первинний ID) і значення (значення для цього ідентифікатора) навпроти кожного атрибута.
У Magento є одна таблиця для зберігання значень атрибутів, яка називається eav_attribute і 5-6 таблиць, які містять сутності та дані в нормалізованій формі:
- eav_entity, eav_entity_int (для зберігання цілих значень),
- eav_entity_varchar (для зберігання змінних значень),
- eav_entity_datetime (для зберігання значень дати і часу),
- eav_entity_decimal (для зберігання десяткових значень/з плаваючою крапкою),
- eav_entity_text (для зберігання текстових (тип MySQL Text) значень).
EAV в Мадженто має використовуватися тільки тоді, коли ви не впевнені в кількості полів таблиці, які можуть змінюватися в майбутньому. Основна перевага EAV – це наприклад, коли ви захочете додати поля таблиці в майбутньому, при вже наявних тисяч або мільйонів записів у таблиці. У звичайній таблиці, якщо ви додасте до неї поля з такими обсягами даних, вони можуть порушити всю вашу таблицю. У той час як в EAV, додавання стовпця до таблиці не вплине на раніше збережені записи і всі нові записи будуть збережені в цих стовпцях.