magento
Структура модуля
Поиск…
замечания
Модули существуют для расширения. Вы не можете изменить the app/code/
файлы, не запрещая какие-либо будущие обновления. Вместо этого мы добавляем модуль в каталог app/code/local
(локальный каталог может отсутствовать, и если это необходимо, его необходимо создать вручную. Это является общим в более поздних версиях Magento) для добавления пользовательских локальных функций.
Все конфигурационные файлы модуля начинаются с <config>
. Новый модуль объявляется внутри <modules>
. Мы будем называть модуль с именем YOUR_COMPANY_HelloWorld, поэтому <YOUR_COMPANY_HelloWorld>
теги <YOUR_COMPANY_HelloWorld>
. Здесь мы определяем версию (очень сначала = 0.0.1)
Список XML-событий можно найти по адресу: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml.
Если у вас возникли проблемы, проверьте: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/
Создание модуля с нуля (Hello World)
Разработка пользовательского модуля Magento является основной частью любого проекта Magento или Magento, поскольку на любом этапе вы можете захотеть интегрировать свою собственную функциональность / модуль в существующий проект Magento.
Первое, что разработчики должны отключить, - это системный кеш. В противном случае развитие станет болью, поскольку любые изменения потребуют флеша. На панели администратора magento: выберите « System > Cache Management > Select All > Actions : Disable.
Используйте следующее руководство для создания нового модуля:
Создайте папку в
app/code/local/
- Соглашения об именах обычно принимают название вашей компании, напримерapp/code/local/<YOUR_COMPANY>
.Теперь у нас есть настраиваемое расположение для наших модулей. Создайте другой каталог, назовите его чем-то связанным с типом модуля, который вы хотите создать, например, app / code / local / <YOUR_COMPANY> / HelloWorld / - «HelloWorld» - это то, что я буду называть этим модулем.
Этот каталог нуждается в
config.xml
поэтому Magento распознает его как новый модуль. Создайте другую папку с именем иetc
. Д. Далее следует xml-файл с именем config.xml. Каталог должен выглядеть какapp/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
Это структура файла xml:<?xml version="1.0" encoding="UTF-8" ?> <config> <modules> <YOUR_COMPANY_HelloWorld> <version>0.0.1</version> </YOUR_COMPANY_HelloWorld> </modules> </config>
Далее, модули должны быть объявлены Magento. Перейдите в
app/etc/modules
. Создайте еще один документ XML и дайте ему выбранные имена ваших тегов:YOUR_COMPANY_HelloWorld
в моем случае. В этом документе пишите:<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <YOUR_COMPANY_HelloWorld> <!-- Whether our module is active: true or false --> <active>true</active> <!-- Which code pool to use: core, community or local --> <codePool>local</codePool> </YOUR_COMPANY_HelloWorld> </modules> </config>
Снова теги config и module используются для объявления нового модуля Magento. Актив - это значение по умолчанию, доступ к которому можно получить в
Admin Panel under System > Configuration > Advanced
.codePool
сообщает Magento, в какой каталог искать.local
в нашем случаеЭтот модуль теперь настроен, таким образом, Модель нашей структуры MVC. вы должны увидеть свой новый модуль в панели администратора в разделе «
System > Configuration > Advanced
. Однако он ничего не делает! Вам нужно будет вернуться к нашему файлу config.xml и определить элементы XML.Следуя за учебником; Мы будем использовать некоторые из этих XML-элементов для создания классов и управления всеми страницами в интерфейсе нашего сайта. Вернемся к файлу
config.xml
в</modules>
:<global> <!-- adding a new block definition --> <blocks> <!-- A unique short name for our block files --> <helloworld> <!-- the location of our modules block --> <class>YOUR_COMPANY_HelloWorld_Block</class> </helloworld> </blocks> </global> <!-- We are making changes to the frontend --> <frontend> <!-- We are making changes to the layout of the front end --> <layout> <!-- we are adding a new update file --> <updates> <!-- Creating the name of our update and linking it the module --> <helloworld module="YOUR_COMPANY_HelloWorld"> <!-- The name of the layout file we are adding --> <file>helloworld.xml</file> </helloworld> </updates> </layout> </frontend>
Как вы можете видеть, мы постоянно расширяемся, а не манипулируем основными файлами. Тег
helloworld
является строчным, потому что это указывает на Handle, и для непрерывности мы назовем его как можно ближе. Затем мы связываем это с модулемYOUR_COMPANY_HelloWorld
.Мы меняем макет. Поэтому нам нужно создать эту Ручку в каталоге макета. перейдите к
app/design/frontend/base/default/layout
. Мы сказали модулю искать файлhelloworld.xml
. Поэтому мы должны создать его в этом каталоге. Чего ты ждешь. Сделай это!! и заполнить его:<?xml version="1.0" encoding="UTF-8"?> <!-- All Layout files begin with this code --> <layout> <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages --> <default> <!-- This is the block we want to bolt onto the existing before_body_end block --> <reference name="before_body_end"> <!-- We define our new block and template to be added to before_body_end --> <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/> </reference> </default> </layout>
Теперь те из вас, у кого есть небольшой опыт Magento, или прочитали более интересные учебники Magento, могут захлебываться тем фактом, что мы вносим изменения в base / default, так как здесь находятся основные файлы Magento. Однако мы не модифицируем никакие файлы здесь, мы создаем новые, и кроме того, мы префикс нашего имени файла с помощью «helloworld», поэтому очень мало шансов, что это противоречит другим модулям или вызовет проблемы с обновлением Magento в будущее. Счастливые дни!
Поскольку мы хотим повлиять на все страницы, мы используем тег по умолчанию и
before_body_end
на негоbefore_body_end
структурным блокомbefore_body_end
. Это будет действовать роль Action и вызвать раздел View в нашей структуре MVC.Теперь мы понимаем, что мы
before_body_end
блокbefore_body_end
. и привязать его к нашему пользовательскому блоку. Это называется ссылкой и является крючком . В настоящее время мы не подключаем его к чему-либо существующему, поэтому мы должны создать необходимые файлы.В
helloworld.xml
мы указали в шаблонеfooter.phtml
. Перейдите к файлуapp/design/frontend/base/default/template
и создайте каталогhelloworld
.Внутри этого каталога создайте файл
footer.phtml
и заполните его HTML, этот учебник просто записывает это, чтобы отобразить некоторые функции PHP, связанные с нашим файлом PHTML:<p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
Теперь нам нужно создать собственный блок-блок, чтобы связать шаблон с нашей функциональностью блока. Создайте каталог app / code / local / YOUR_COMPANY / HelloWorld / Block / и создайте файл
Footer.php
внутри этого. Это было указано в нашем zeta_layout.xml в типе «helloworld / footer». Заполните этот файл с помощью:<?php class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template { public function getDate() { $date = date('Y-m-d'); return urlencode($date); } } ?>
Это функциональность, которая будет заполнять наш вызов
getDate()
мы вызывали из нашего.phtml
файла. Мы расширяемMage_Core_Block_Template
.Эта функциональность завершена. Проверьте это, перейдя на домашнюю страницу, где вы должны увидеть свой модуль в нижнем колонтитуле каждой страницы!