Частые вопросы по Magento и ответы на них

Очень часто пользователи Мадженто сталкиваются с такими вопросами, ответы на которые тяжело найти. Поэтому мы постарались собрать в одном месте наиболее популярные из таких вопросов, и наиболее полно на них ответить.

 

Когда нужно очистить кэш, чтобы увидеть изменения в Magento?

Всякий раз, когда вы добавили/изменили файлы XML, JS, CSS.

 

Как включить CMS блок в файле шаблона (.phtml)?

Блоки контента из .phtml-файла шаблона вызываются:

echo $this->getLayout()->createBlock("cms/block")->setBlockId("id_staticheskogo_bloka")->toHTML();

 

где id_staticheskogo_bloka — это уникальный идентификатор (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, добавление столбца к таблице не повлияет на ранее сохраненные записи и все новые записи будут сохранены в этих столбцах.