Поиск…


замечания

Модули существуют для расширения. Вы не можете изменить 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 .

  • Эта функциональность завершена. Проверьте это, перейдя на домашнюю страницу, где вы должны увидеть свой модуль в нижнем колонтитуле каждой страницы!



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow