Magento udostępnia możliwość tworzenia statycznych podstron z poziomu CMS’a, aczkolwiek może się zdarzyć, że będziemy potrzebowali dodać niestandardową stronę z własnym kontrolerem, blokiem i routingiem. Zakładam, że znasz sposób tworzenia modułów w Magento 2. Jeśli nie to przeczytaj najpierw artykuł: „TWORZENIE NOWEGO MODUŁU”.

1. MODUŁ

Przygotuj pusty moduł Test_Example z poprzedniego rozdziału lub stwórz własny moduł.

2. KONTROLER

Utwórz plik Index.php (/app/code/Test/Example/Controller/Index/Index.php).

Zawartość kontrolera jest standardowa, tak więc skopiuj ją bez wyrzutów sumienia 😉 Do konstruktora dołączamy klasę PageFactory, która odpowiada za renderowanie widoku. Metoda execute() wykonuje to działanie.

3. LAYOUT

Utwórz plik example_index_index.xml (/app/code/Test/Example/view/frontend/layout/example_index_index.xml):

W layoucie definiujemy blok (Test\Example\Block\Example) oraz szablon widoku (Test_Example::page.phtml). Plik szablonu page.phtml utworzony zostanie w kroku 5.

4. BLOK

W poprzednim kroku w layoucie zdefiniowaliśmy blok o nazwie Example, w którym zawarte będą wszelkie metody rozszerzające szablon widoku.
Utwórz więc plik Example.php (/app/code/Test/Example/Block/Example.php):

Blok Example rozszerza (extends) metody zawarte w klasie Template (\Magento\Framework\View\Element\Template). Do tego bloku możesz dodawać swoje metody.

5. SZABLON WIDOKU

Utwórz plik page.phtml (/app/code/Test/Example/view/frontend/templates/page.phtml):

6. ROUTING

Utwórz plik routes.xml (/app/code/Test/Example/etc/frontend/routes.xml):

W pliku tym wskazujemy moduł, którego ma dotyczyć trasowanie (module name=”Test_Example). W znaczniku <route> podajemy nazwę example (id=”example” frontName=”example”), która pojawi się w adresie Url, według wzoru:

https://your_domain.com/frontName/Controller/Action

czyli w naszym przykładzie adres Url będzie taki:

https://your_domain.com/example/index/index

Oczywiście strona wyświetli się poprawnie również pod takim adresem: https://your_domain.com/example/  – dlatego, że Magento automatycznie dopasowuje / szuka ścieżek routingu w modułach, stronach itd.

Do następnego! –>

PRZYKŁAD na github ›