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.xml
wię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.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 przypadkulocal
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
jesthelloworld
małymi literami, ponieważ będzie wskazywał na uchwyt, a dla zachowania ciągłościhelloworld
go tak dokładnie, jak to możliwe. NastępnieYOUR_COMPANY_HelloWorld
moduł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_end
bloku strukturalnegobefore_body_end
. To odegra rolę Akcji i uruchomi sekcję Widok naszej struktury MVC.Teraz rozumiemy, że
before_body_end
blokubefore_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 szabloniefooter.phtml
. Przejdź doapp/design/frontend/base/default/template
i utwórz kataloghelloworld
.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
. 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!