Szukaj…


Uwagi

Istnieje możliwość rozszerzenia modułów. Nie można zmienić the app/code/ plików bez blokowania przyszłych aktualizacji. Zamiast tego dodajemy moduł do katalogu app/code/local (może brakować katalogu lokalnego, jeśli tak, należy go ręcznie utworzyć. Jest to powszechne w późniejszych wersjach Magento) w celu dodania niestandardowej lokalnej funkcjonalności.

Wszystkie pliki konfiguracyjne modułu zaczynają się od znacznika <config> . Nowy moduł jest zadeklarowany w znaczniku <modules> . Wywołamy moduł o nazwie YOUR_COMPANY_HelloWorld, dlatego używane są tagi <YOUR_COMPANY_HelloWorld> . Tutaj definiujemy wersję (bardzo pierwsza = 0.0.1)

Lista zdarzeń XML znajduje się na stronie : http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml

Jeśli masz jakieś problemy, sprawdź: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

Tworzenie modułu od podstaw (Hello World)

Opracowanie niestandardowego modułu Magento jest podstawową częścią każdego opracowania Magento lub projektu Magento, ponieważ na każdym etapie możesz chcieć zintegrować własną funkcjonalność / moduł z istniejącym projektem Magento.

Pierwszą rzeczą, którą programiści powinni wyłączyć, jest pamięć podręczna systemu. W przeciwnym razie rozwój stanie się bólem, ponieważ wszelkie zmiany będą wymagały koloru. Z panelu administracyjnego magento: przejdź do System > Cache Management > Select All > Actions : Disable. Skorzystaj z następującego przewodnika, aby utworzyć nowy moduł:

  • Utwórz folder w konwencjach nazewnictwa app/code/local/ - zwykle przyjmuj nazwę firmy, np. app/code/local/<YOUR_COMPANY> .

  • Teraz mamy niestandardową lokalizację dla naszych modułów. Utwórz inny katalog, nazwij go czymś związanym z typem modułu, który chcesz utworzyć, np. App / code / local / <YOUR_COMPANY> / HelloWorld / - „HelloWorld” nazywam tym modułem.

  • Ten katalog wymaga pliku config.xml więc Magento rozpoznaje go jako nowy moduł. Utwórz inny folder o nazwie etc . Następnie plik XML o nazwie config.xml. Katalog powinien wyglądać następująco: app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml To jest struktura pliku xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Następnie moduły należy zadeklarować Magento. Przejdź do app/etc/modules . Utwórz kolejny dokument XML i nadaj mu wybrane nazwy swoich tagów: YOUR_COMPANY_HelloWorld w moim przypadku. W tym dokumencie napisz:

    <?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>
    
  • Znów znaczniki config i module są używane do zadeklarowania nowego modułu Magento. Aktywna to wartość domyślna, do której można uzyskać dostęp w Admin Panel under System > Configuration > Advanced . codePool mówi Magento, w którym katalogu ma szukać. W naszym przypadku local

  • Ten moduł został już skonfigurowany, a więc Model naszej struktury MVC. powinieneś zobaczyć swój nowy moduł w panelu administracyjnym w System > Configuration > Advanced . Jednak nic jeszcze nie robi! Musisz wrócić do naszego pliku config.xml i zdefiniować elementy XML.

  • Kontynuując samouczek; Wykorzystamy niektóre z tych elementów XML do tworzenia klas i manipulowania wszystkimi stronami w interfejsie naszej witryny. Z powrotem do pliku config.xml wpisz następujące polecenie pod </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>
    
  • Jak widać, ciągle rozszerzamy, a nie manipulujemy podstawowymi plikami. Znacznik helloworld jest helloworld małymi literami, ponieważ będzie wskazywał na uchwyt, a dla zachowania ciągłości helloworld go tak dokładnie, jak to możliwe. Następnie YOUR_COMPANY_HelloWorld modułem YOUR_COMPANY_HelloWorld .

  • Zmieniamy układ. Dlatego musimy utworzyć ten uchwyt w katalogu układu. przejdź do app/design/frontend/base/default/layout . Powiedzieliśmy modułowi, aby szukał pliku helloworld.xml . Dlatego musimy go utworzyć w tym katalogu. Na co czekasz. Zrób to!! i wypełnij go:

    <?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>
    
  • Teraz ci z was, którzy mają trochę doświadczenia z Magento lub przeczytali inne warte uwagi samouczki Magento, mogą z trudem łapać oddech, gdy wprowadzamy zmiany w ustawieniach podstawowych / domyślnych, ponieważ tutaj znajdują się podstawowe pliki Magento. Jednak nie modyfikujemy tutaj żadnych plików, tworzymy nowe, a ponadto przedrostamy naszą nazwę pliku słowem „helloworld”, więc istnieje bardzo małe prawdopodobieństwo konfliktu z innymi modułami lub spowodowania jakichkolwiek problemów z aktualizacją Magento w przyszłość. Szczęśliwe dni!

  • Ponieważ chcemy wpływać na wszystkie strony, używamy domyślnego tagu i before_body_end bloku strukturalnego before_body_end . To odegra rolę Akcji i uruchomi sekcję Widok naszej struktury MVC.

  • Teraz rozumiemy, że before_body_end bloku before_body_end . i łącząc go z naszym niestandardowym blokiem. Nazywa się to Referencją i jest hakiem . Obecnie nie podłączamy go do niczego, co istnieje, dlatego musimy utworzyć niezbędne pliki.

  • W helloworld.xml w szablonie footer.phtml . Przejdź do app/design/frontend/base/default/template i utwórz katalog helloworld .

  • W tym katalogu utwórz plik footer.phtml i wypełnij HTML, ten samouczek po prostu zapisuje to, aby wyświetlić niektóre funkcje PHP powiązane z naszym plikiem PHTML:

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • Teraz musimy utworzyć własny obiekt bloku, aby połączyć szablon z naszą funkcją bloku. Utwórz aplikację katalogu / code / local / YOUR_COMPANY / HelloWorld / Block / i utwórz w niej plik Footer.php . Zostało to przywołane w naszym pliku zeta_layout.xml w formie „helloworld / footer”. Wypełnij ten plik:

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • Jest to funkcja, która zapełni nasze wywołanie getDate() które .phtml z naszego pliku .phtml . Rozszerzamy Mage_Core_Block_Template .

  • Ta funkcja jest teraz kompletna. Sprawdź to, przechodząc do strony głównej, gdzie powinieneś zobaczyć swój moduł w stopce każdej strony!



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow