magento
Struktura modułu
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.xmlwięc Magento rozpoznaje go jako nowy moduł. Utwórz inny folder o nazwieetc. Następnie plik XML o nazwie config.xml. Katalog powinien wyglądać następująco:app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xmlTo 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_HelloWorldw 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.codePoolmówi Magento, w którym katalogu ma szukać. W naszym przypadkulocalTen 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.xmlwpisz 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
helloworldjesthelloworldmałymi literami, ponieważ będzie wskazywał na uchwyt, a dla zachowania ciągłościhelloworldgo tak dokładnie, jak to możliwe. NastępnieYOUR_COMPANY_HelloWorldmodułemYOUR_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ł plikuhelloworld.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_endbloku strukturalnegobefore_body_end. To odegra rolę Akcji i uruchomi sekcję Widok naszej struktury MVC.Teraz rozumiemy, że
before_body_endblokubefore_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.xmlw szabloniefooter.phtml. Przejdź doapp/design/frontend/base/default/templatei utwórz kataloghelloworld.W tym katalogu utwórz plik
footer.phtmli 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.phtmlz naszego pliku.phtml. RozszerzamyMage_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!