Разработка пользовательского модуля Magento

24 января 2018

Разработка пользовательского модуля Magento является основной частью любого проекта Magento или Magento, поскольку на любом этапе вы можете интегрировать свой собственный функциональный модуль в существующий проект Magento.

В этой серии я расскажу о деталях разработки настраиваемого модуля Magento.

Если вы хотите продолжить разработку Magento, ознакомьтесь с широким спектром полезных дополнений Magento на Envato Market.

Всюду в этой серии я ссылаюсь на Magento Community Edition 1.7, хотя структуры custom module одинаковы во всех версиях Magento. Перед тем, как идти, мы начнем разработку фактического модуля, давайте быстро поймем основную структуру Magento.

Всякий раз, когда вы устанавливаете новый Magento, вы заметите следующую структуру каталогов Magento:

Введение в Magento MVC Structure

Как и любые другие основные среды, такие как Joomla, CakePHP, CodeIgniter и т. Д., Magento также следует за MVC но это немного отличается от базовой архитектуры PHP MVC. Здесь я объясню разницу в архитектуре Magento, сравнив ее с простой архитектурой PHP MVC.

Архитектура PHP MVC

В типичном шаблоне MVC поток приложения выглядит примерно так:

    Теперь есть главная точка входа - index.php - откуда определяется весь механизм маршрутизации приложения. Ванная на этом механизм маршрутизации и запрошенный шаблон URL-адреса, приложение вызовет соответствующий контроллер. Клиент затем вызывает соответствующие представления. Наконец файлы представления собирают данные из файлов моделей и отображают данные.

Magento MVC architecture

Архитектура MVC Magento добавляет несколько слоев к шаблону MVC, но основной поток управления приложением выглядит следующим образом:

    Теперь главная точка входа - index.php - откуда будет инициализировано все приложение. Забавьте запрошенный URL-адрес соответствующего контроллера. Controller определяет страницы и загружает файлы макета для этих страниц. Файлы в файлах сообщают контроллерам, которые блокируют файлы для использования. Блокировать файлы, собирать данные из файлов моделей и файлов-помощников и передавать их в файлы шаблонов. Теммограммы файлы получают данные и render html.

Первоначально это может быть трудно понять, поскольку в нем содержится несколько дополнительных слоев. Чтобы лучше познакомиться с потоком управления, давайте разработаем собственный «Hello World» модуль.

Перед началом работы с модулями

Предполагаю, что у вас уже есть рабочая копия Magento с версией 1.7 или 1.7+ (или иначе версия на данном этапе не имеет значения) Отключить кеш. Чтобы отключить кеш Перейдите в панель администрирования Magento> Система> Управление кэшем> Выберите все типы кеша с боковых полей слева> Выберите действие: отключить с верхнего раскрывающегося списка вниз> нажмите «Отправить».

Структура модуля Magento

Пулы кодов

Magento содержит три типа пулов кода, в которых находятся все настраиваемые и основные модули Magento.

    Корпусные пулы содержат все основные модули, которые по умолчанию поставляются с установкой Magento. Эти модули написаны разработчиками Magento. Рекомендуется не изменять эти модули, потому что всякий раз, когда вы обновляете установку Magento, все основные модули будут перезаписаны и ваши изменения будут потеряны.
    Общие пулы содержат все модули - то есть настраиваемые модули - это разрабатываются сторонними программистами, которые устанавливаются через Magento Coect. Эти модули обычно расширяют основные модули и предлагают свои собственные функции, которые часто можно использовать где угодно в Magento.
    Локальные пулы содержат все настраиваемые модули, которые будут использоваться для конкретного проекта, но не считываются в Magento Coect

Таким образом, у нас есть два выбора пулов: Community или Local. Поскольку мы работаем над собственным проектом, мы собираемся использовать локальный пул, хотя нет ограничений на использование сообщества бассейн.

Структура

Модули Magento состоят из следующих компонентов:

Blocks содержат функции, которые используются для отображения данных в шаблонах.
Модели содержат бизнес-логику модулей.
Resource Модели содержат функции которые используются для взаимодействия с базой данных. Контроллеры определяют макет страницы и блокируют файлы и загружаются при запросе URL. etc содержит файлы конфигурации в форматах XML, которые сообщают Magento, сколько модулей модулей и как взаимодействует модуль. Нашители содержат функции, которые используются для определения общей бизнес-логики (например, изменение размера изображения, проверка). Эти функции могут использоваться в любом месте приложения Magento.
sql содержит SQL-скрипты для создания, изменения или удаления таблиц SQL.

Именование модулей

Нам нужно дать имя нашему модулю. Как правило, имена модулей Magento состоят из двух частей:_. Лучшей практикой, чтобы дать модулю Magento имя, выбираетсякак автор или название компании, а- как фактическое имя модуля.

Основываясь на этом соглашении об именах, я даю нашему модулю имя Chiragdodia_Mymodule. Мы будем ссылаться на это имя в этой серии.

Настройка и конфигурация кода

Позволяет создать базу каталогов на указанной выше структуре. Перейдите в направлении установки Magento, затем перейдите к локальному коду приложения и создайте каталоги, как показано ниже.

Затем мы настроим и активируем наш модуль, создав файл конфигурации Chiragdodia_Mymodule.xml в каталоге приложений и т. Д. Этот каталог содержит файлы конфигурации для всех модулей.

<?xml version="1.0"?>
<config>
    <modules>
        <Chiragdodia_Mymodule>
        <active>true</active>
        <codePool>local</codePool>
        </Chiragdodia_Mymodule>
    </modules>
</config>

Этот файл расскажет Magento о местонахождении нашего модуля. В активном теге мы указали true, чтобы включить наш модуль. Если все верно до сих пор, вы найдете свой модуль в панели администрирования Magento> System> Configuration> Advanced> Advanced> Disable Modules Output. Отсюда вы можете включить и отключить свой модуль.

Начало работы: разработка

Далее мы создадим наш конфигурационный файл модуля. Этот файл расскажет Magento о нашем модуле. Это включает в себя количество файлов, содержащихся в нашем модуле, типы файлов (модели, помощники, классы баз данных) и т. Д.

Перейдите в код приложения local Chiragdodia Mymodule и т. Д. И создайте файл config.xml, который будет содержать следующий контент

<?xml version="1.0"?>
<config>
    <modules>
        <Chiragdodia_Mymodule>
            <version>0.1.0</version>    <!-- Version number of your module -->
        </Chiragdodia_Mymodule>
    </modules>
    <frontend>
        <routers>
            <mymodule>
                <use>standard</use>
                <args>
                    <module>Chiragdodia_Mymodule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>
    </frontend>
</config>

Пройдем через строку за строкой, чтобы понять каждый тег. Здесь первый тег -, который содержит имя и версию нашего модуля. Номер версии очень важен, когда дело доходит до обновления модуля обновления вашего модуля.

Тегсообщит Magento о отправленном контроллере. Внутри тегамы определили, который сообщает Magento, как обращаться к нашим контроллерам через механизм маршрутизации.

В тегемы определили имя модуля в тегеи имени интерфейса в. Используя имя интерфейса, мы можем получить доступ к нашему модулю в интерфейсе, например index.php mymodule индекса yoursitename.com.

Вызвав свой индекс mymodule index.php mysimename.com или yoursitename.com index.php mymodule, Magento будет искать действие индекса вашего файла контроллера вашего модуля. Таким образом, нам нужно создать наш файл контроллера.

Перейдите в код приложения локальных контроллеров Chimragdodia Mymodule и создайте файл IndexController.php со следующим контентом.

Обратите внимание, что имена и имена каждого файла чувствительны к регистру в Magento. Очень важно, чтобы вы заботились о том, чтобы именовать вашу работу при создании файлов и классов.

<?php
class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Actio
{
    public function indexAction()
    {
        echo "Hello tuts+ World";
    }
}

Теперь откройте URL-адрес вашего сайта index.php mymodule index, который напечатает «Hello tuts + World». Удивительно - мы, наконец, сделали это с нашим первым модулем hello world.

Диспетчер диспетчера

Здесь мы расширили класс Mage_Core_Controller_Front_Action, который содержит все методы, используемые при маршрутизации URL-адреса. Имя класса Magento отражает расположение файла класса. Таким образом, класс Mage_Core_Controller_Front_Action находится в местоположении Mage> Core> Controller> Front> Action.php

См. Имя класса нашего контроллера, который является Chiragdodia_Mymodule_IndexController. Контроллер Magento должен быть назван таким образом, чтобы он отражал (tag) _ (Action Controllername) (ключевое слово Controller).

tag = Chiragdodia_Mymodule (мы определили этот тег в config.xml) Action Controllername = Index Action controller, за которым следует ключевое слово Controller

На основе этого шаблона имя нашего контроллера is Chiragdodia_Mymodule_IndexController

Теперь посмотрите шаблон URL, который соответствует следующему маршруту patternyoursite.com index.php frontendname actionControllername actionmethod

frontendname = mymodule actionControllername = Index actionmethodname = Index

Основываясь на этом шаблоне URL, URL нашего модуля - index index index.php mymodule index.php. Вы также можете получить к нему доступ с помощью mymodule yoursite.com index.php, потому что всякий раз, когда вы не указали имя actionController или actionmethod, Magento загружает индексный контроллер и действие индекса по умолчанию.

Теперь давайте создадим еще одно действие: testAction.

<?php
class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Actio
{
    public function indexAction()
    {
        echo "Hello tuts+ World";
    }
    public function testAction()
    {
        echo "test action";
    }
}

Мы можем получить доступ к testAction с помощью URL-теста yoursite.com index.php mymodule index. Как объяснялось ранее здесь

frontendname = mymodule actionControllername = Index actionmethodname = test

Вот как работает контроллер в Magento.

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

Что дальше?

В следующей части мы собираемся заполнить некоторые макеты в нашем модуле, создав макеты и файлы блоков. Мы поймем, как файлы макетов работают в Magento и какие роли играют в контексте Magento.

До тех пор создайте свой собственный модуль и сообщите мне о чем-нибудь, что может вызвать проблемы.

Нужна дополнительная помощь?

Если вы еще не знаете, как продолжить чтение этого руководства, попробуйте связаться с одним из разработчиков Magento на Envato Studio. Они могут помочь вам со всеми проблемами Magento, большими и малыми. Вот несколько примеров:

1. Magento All-in-One (настройка полного сайта)

Получить веб-сайт Magento или запросить расширенную настройку, такую ​​как:

layout modify sliders modify custom menu фиксировать отзывчивые проблемы и больше

2. Разработка и создание сайта Magento

Этот провайдер выполнит одно из следующих действий:

develop пользовательский модуль установить тему Magento customize с вашим дизайном идентичности (логотип, цвет, шрифт, фон) создайте свои первые 20 категорий подкатегорий set up payments и local currencies and more

3. Настройка темы Magento

Получите вашу тему Magento, настроенную по разумной цене, всего за один день.

4. Разработка, установка, расширение и пользовательская работа Magento

Этот провайдер предлагает массив услуг Magento, в том числе:

custom Magento web development responsive Magento sites custom Разработка темы Magento module development shopping cart development secure payment gateway integration

Если эти решения вам не подходят, попробуйте один из десятков других доступных на Envato Studio.