Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 15.04.2024)
454420
солдат
347
самолетов
325
вертолетов
7180
танков
13796
ББМ
11593
артиллерия
758
ПВО
1046
РСЗО
15510
машин
26
корабли и катера
Частые вопросы по Magento и ответы на них
Опубликовано Обновлено: 24.08.2015

Частые вопросы по 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, добавление столбца к таблице не повлияет на ранее сохраненные записи и все новые записи будут сохранены в этих столбцах.

 

 

1 комментарий для “Частые вопросы по Magento и ответы на них

  1. Sergey

    Здравствуйте!!! У вас отличная и полезная литература!!! Долго мучаюсь и не могу понять как сделать боковое меню категорий «аккордион» с применением jQuery, подскажите, пожалуйста, как должна выглядеть архитектура этого меню и каким образом будут взаимодействовать jQuery. Правильно ли я думаю, что для этого создаётся новый файл в catalog/navigation/»имя нового файла».phtml. Затем в файле catalog.hml прописывается путь к новому файлу? И дальше я в ступоре…:-( Не понимаю в каком файле (phtml, jquery или CSS) будет прописываться поведение меню… Прошу помогите, пожалуйста, или хотя бы в общих чертах направьте к решению.

    1. ZAnatoly

      Здравствуйте! Спасибо за ваш интерес к нашему сайту!
      К сожалению, чтобы полностью ответить на ваш вопрос, нужно создавать новый очень большой урок.
      Но соориентировать вас мы, все-таки, попытаемся.
      1) создаете свой шаблон меню в catalog/navigation/ (phtml-файл)
      2) подключаете блок шаблона меню в макете (catalog XML) в нужную секцию (reference name left/right)
      3) у вас должны быть подключены скрипты jQuery и jQueryUI
      4) добавляете в шаблон меню (phtml-файл) обработчик событий яваскрипт (по id блока html-разметки), который будет все вложенные div`ы «оборачивать» аккордеоном.
      инструкция по аккордеону находится здесь: https://jqueryui.com/accordion/ и здесь http://api.jqueryui.com/accordion/

      Надеемся, что соориентировали вас!

  2. Sergey

    Спасибо большое за отзывчивость!!!:-) Думаю, что всё становится на свои места…:-) Правильно ли я понимаю, что «id блока html-разметки» это будет название файла, который я создал в catalog/navigation/ ? И всё управление и структура прописывается в этом новом файле? Объясните, пожалуйста, на примере файла http://imglink.ru/show-image.php?id=0e10f2dfc3b63aa0ea5f5ac4f79b529f
    Сначала прописывается поведение работы меню html phtml языком? А после уже добавляется часть jQuery, где прописывается как оно будет обертывать дивы в аккордеон? Просто не могу понять какое место отвечает за то, что меню не постоянно работает слева, а исчезает при выборе субкатегории (принцип как в стандартном блоке навигации Magento). Прошу прощения, что задаю столько вопросов, ваш сайт единственный, где откликнулись и смогли помочь в данном вопросе!!!

    1. ZAnatoly

      Да, вопросов у вас масса:)

      id блока html-разметки — подразумевается id div`а, а в вашем случае, судя по картинке, это ul-список, т.е. обработчик событий яваскрипт нужно вызывать не по id, а по классу (у вас — category-list).
      Что касается второй части вопроса: субкатегории могут исчезать и с помощью и CSS, и JavaScript. Это очень объемная тема, и нужно разбираться в каждом конкретном случае, и отталкиваться от поставленной задачи.

  3. Sergey

    Было бы классно, если бы вы подготовили урок на данную тему!!!:-) Уже пару недель или больше ищу информацию о создании бокового меню аккордеон в Magento, и как оказалось многих интересует данный вопрос, но в интернете нет соответствующей информации…:-( Приходится разбираться с самых азов и пытаться вникать в язык кодов.:-) Ещё раз благодарю за информацию, она очень помогла и продвинула меня в решении!!!:-)

    1. ZAnatoly

      Очень приятно, что мы смогли вам помочь! А по поводу идеи для урока — спасибо!

  4. Дмитрий

    Добрый день, очень много всего полезного, спасибо, а что вы можете посоветовать по разработке модулей для магенто, от новичка-до профессионала?

    1. ZAnatoly

      Спасибо за ваш интерес к нашему сайту! Вопрос очень сложный и серьезный. Если вкратце, то новичку — учиться и еще раз учиться. А профессионалу — найти свою нишу. Промониторить рынок и понять, какого продукта (модуля) не хватает, и который был бы полезен потребителю. Посмотрите на официальном сайте Мадженто, ну и на codecanyon.net, увидите какие модули популярны и востребованы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *