od Podstaw
5 godz. 56 min · PHP · Full-stack i Programowanie
Patryk WaluśBackend DeveloperZanim przejdziemy do omawiania możliwości Magento, przedstawię Ci w jaki sposób skonfigurować środowisko developerskie oraz jak zainstalować nowy projekt. Omówimy też polecenia i narzędzia, które są przydatne podczas pracy developerów.
Rozpoczniemy od przedstawienia oraz omówienia funkcji poszczególnych katalogów, które znajdują się w projekcie. Po wstępie stworzymy swój pierwszy moduł oraz przedstawię podstawowe techniki wykorzystywane przez Magento do zarządzania konfiguracjami czy modułami.
Magento wykorzystuje bardzo popularny wzorzec MVC, który składa się z trzech elementów. Aby z łatwością rozumieć jak system obsługuje żądania HTTP najpierw przestawię ogólne działanie MVC, a następnie jak to działa w Magento.
Szczegółowe omówienie wzorca MVC rozpoczniemy od literki C czyli Controller'a. W tym rozdziale dowiesz się jak zarejestrować w systemie nową ścieżkę, jak pobierać parametry oraz w jaki sposób zwrócić rezultat odpowiedni dla danego przypadku.
Gdy już zarejestrujemy nową stronę, konieczne będzie zdefiniowanie jej wyglądu. Dlatego też, przedstawię Ci jak to zrobić oraz jakie możliwości Magento udostępnia do manipulacji układem stron. Omówię różnice między kontenerem, a blokiem oraz pokaże jak modyfikować tagi w sekcji.
Aby wcześniej dodana strona była funkcjonalna, konieczna jest jej integracja z bazą danych. Do tego celu stworzymy m.in. Model, za pomocą którego będziemy komunikować się z MySQL. Przedstawię Ci też dobre praktyki, które pozwalają na tworzenie kodu wysokiej jakości.
W ostatnim rozdziale omówimy konfigurację nowego motywu w Magento. Pozwoli Ci to zrozumieć jak tworzyć różne wersje wyglądu dla sklepów internetowych.
Ten kurs w szczególności przyda się osobom, które chcą poznać podstawy framework'a Magento 2. Przedstawione w nim fundamentalne informacje pomogą zrozumieć sposób działania systemu, a także w jaki sposób można dodawać czy rozszerzać swój projekt o nowe funkcjonalności.
Nowy blog dodamy do contentu naszej strony właśnie w to puste miejsce.
Aby to zrobić, wykorzystamy już wcześniej przygotowany przez zespół Magento
kontener, który identyfikowany jest za pomocą słowa kluczowego content.
Przejdźmy więc do edytora kodu.
Wykorzystajmy taki tak jak jest kontener i wartości atrybutu name.
Podamy identyfikator właśnie tego
kontenera, do którego chcemy wsadzić nasz nowy blok.
Następnie wykorzystamy tak blok,
w którym po pierwsze konieczne będzie zdefiniowanie klasy,
która zajmie się wygenerowaniem naszego bloku.
Aby to zrobić, skorzystamy z atrybutu class.
Jako wartość podamy blog Magento Framework View element template.
Wspomnę tutaj, że możemy pominąć atrybut
class i Magento domyślnie wybierze właśnie ten blog do renderowania,
jednak dla celów demonstracyjnych zostawię tutaj tą wartość wpisaną.
Następnie konieczne będzie wybranie identyfikatora tego bloku.
Czyli w tym przypadku użyjemy słowa kluczowego name.
I warto tutaj wspomnieć, że ten
identyfikator będzie używany w obrębie całej naszej strony Brent View Index.
Więc jeśli na przykład w motywie znowu
dodamy rozszerzenie tego pliku z layoutem, możemy za pomocą Reference Block odwołać
się do tego bloku Hello World, bo tak sobie go nazwiemy.
I możemy do niego dodać na przykład nowy
blok, czy też zmodyfikować pewne własności tego bloku.
Następnie zdefiniujemy atrybut as, który
też jest identyfikatorem, ale identyfikatorem w obrębie danego elementu.
Czyli jeśli dodamy nowy blok, który będzie dzieckiem bloku Hello World!
Aby wyrenderować to dziecko, konieczne będzie w bloku Hello World.
Wykonanie metodę get html jako argument wskazanie identyfikatora pola ATH.
Dla naszym przypadku
blok Hello World jest rodzicem, więc nie ma to większego znaczenia.
Natomiast wpiszmy taką samą wartość jak identyfikator name.
Następnie za pomocą atrybutu template wskażemy, gdzie znajduje się plik html, w
którym znajduje się definicja szablonu dla naszego bloku.
Rozpoczynamy od wpisania nazwy naszego modułu.
Następnie wpisujemy dwa razy dwukropek i po tych dwóch krokach wskazujemy na plik.
Zrobimy sobie najpierw folder wp, a następnie plik załóżmy index.html.
Musimy jeszcze zakończyć tak blog.
Następnie stworzymy plik tego szablonu.
Przejdźmy więc do modułu w liście katalogów.
Przechodzimy do folderu View oraz frontend
i w tym miejscu konieczne będzie dodanie nowego katalogu o nazwie templates.
Zwróć uwagę, że na końcu jest S.
W innym miejscu w systemie jest też folder template, który też zawiera szablony.
Jednak wolę tutaj zwrócić na to uwagę.
Aby mieć pewność, że dodasz właśnie o tym, nie zapomnisz.
Następnie dodamy folder View.
Oraz plik index.html.
W obrębie tego pliku mamy dostęp do obiektu klasy Magento frameworku View.
Element template możemy oznaczyć tylko najpierw dodamy tag php php, aby
system wiedział, że w tym momencie znajdujemy się w obrębie języka PHP
i dodamy sobie taki znacznik, który będzie rozumiany przez core.
I teraz bardzo ważne.
W obrębie tego pliku mamy dostęp do zmiennej blog.
Blog jest instancją klasy właśnie
template, która udostępnia nam pewne metody.
Jedną z tych metod jest wspomniana wcześniej metoda get czy site html.
I tutaj jak widać za pomocą argumentu
alias możemy wskazać jaki blok dziecko ma zostać wygenerowany.
Na razie to nie jest ważne.
Wygenerujemy na razie słowa Hello world!
Dodajemy znacznik H2.
Następnie.
Hello world i przejdźmy do przeglądarki.
Odśwież stronę.
I naszym oczom ukazuje się nasz wygenerowany pierwszy blok Hello World!
Wróćmy jeszcze na chwilę do edytora kodu i zajmiemy się klasą template.
Przejdźmy na chwilę do pliku Preview
index, w którym zdefiniowany jest nasz blok.
Tutaj w atrybucie class zdefiniowaliśmy
domyślną klasę, która zajmuje się renderowanie.
Natomiast możemy też stworzyć swój własny blog i w nim zawrzeć pewną logikę do
renderowania danego bloku lub też jak często wykorzystywane jest Magento.
Tworzony jest nowy plik z nową klasą
bloku, która rozszerza właśnie klasę template i np.
jedyne co robi to dodaje pobranie pewnych wartości np.
konfiguracji.
Gdy przejdziemy sobie do klasy template
znajduje się tutaj taka informacja o tym, aby unikać rozszerzenia tych klas.
I pomimo tego komentarza możemy zauważyć, że tak naprawdę bardzo wiele klas w
Magento mimo tego komentarza i tak rozszerza tą klasę.
Mimo że nie dodaje koniecznie żadnej logiki.
Renderuje dany blok np.
możemy wejść do pierwszej klasy Emilkę,
która tylko i wyłącznie posiada dwie metody do pobrania.
Przykład pewnego adresu URL.
Jednak sama w sobie nie zawiera ani nie
dodaje żadnej nowej logiki do renderowania.
Dlatego też Magento dodało taką możliwość jak wykorzystywanie klas View Mode.
Dzięki nim możemy oddzielić
odpowiedzialność renderowania bloku z odpowiedzialnością za pobieranie pewnych
wartości, które są wykorzystywane w szablonie.
Pokażę, jak to zrobić w następnej lekcji.