Hej! Gotowi na powtórkę z Magento 2? Dzisiaj omówimy Layout Handle dla pozycji zamówienia w e-mailach sprzedażowych. Zrelaksuj się, to nie takie trudne! Przejdziemy przez to krok po kroku.
Czym jest Layout Handle?
Layout Handle to unikalny identyfikator. Określa, który plik layoutu XML ma zostać załadowany. Pliki te definiują strukturę bloku strony w Magento 2. My skupimy się na tym, jak to działa w e-mailach sprzedażowych, konkretnie dla listy produktów w zamówieniu.
Pomyśl o tym jak o adresie. Adres wskazuje na konkretny dom. Layout Handle wskazuje na konkretny układ elementów na stronie (w tym przypadku w e-mailu).
Gdzie szukać Layout Handles dla e-maili sprzedażowych?
Musisz wiedzieć, gdzie szukać. Pliki layoutu dla e-maili znajdują się w modułach. Szukaj w katalogach view/frontend/layout w modułach odpowiedzialnych za sprzedaż (Sales), faktury (Invoice), wysyłki (Shipment) itp.
Przykładowo, dla pozycji zamówienia w e-mailu, istotne pliki mogą znajdować się w modułach związanych z obsługą zamówień. Sprawdź dokładnie ścieżki!
Analiza pliku Layout XML
Otwórz plik XML. Zobaczysz strukturę. Zaczyna się od znacznika <page> lub <layout>. To kontener dla całej definicji layoutu.
Szukaj węzłów <block>. One definiują bloki PHP, które renderują zawartość. Każdy blok ma swój typ (class) i szablon (template).
Ważne atrybuty bloku
Zwróć uwagę na atrybuty name, class i template. Name to unikalny identyfikator bloku. Class wskazuje klasę PHP, która go obsługuje. Template określa plik PHTML, który definiuje wygląd bloku.
Atrybut template jest bardzo ważny. Mówi Magento, który plik szablonu ma użyć do wygenerowania HTML.
Layout Handle dla pozycji zamówienia
Aby zmienić wygląd pozycji zamówienia w e-mailu, musisz znaleźć odpowiedni blok. Szukaj bloku odpowiedzialnego za renderowanie listy produktów w zamówieniu. Zwykle jego klasa PHP dziedziczy z Magento\Framework\View\Element\Template.
Sprawdź template tego bloku. Tam znajduje się HTML, który definiuje wygląd pozycji zamówienia. To kluczowe miejsce do modyfikacji!
Typowy Layout Handle dla e-maila z zamówieniem może zawierać słowa kluczowe takie jak sales_email_order_items. Ale bądź czujny, nazwa może się różnić w zależności od modułu i wersji Magento.
Zmiana szablonu
Aby zmienić wygląd, skopiuj plik template do swojego modułu. Utwórz strukturę katalogów, która odzwierciedla strukturę katalogów modułu, z którego kopiujesz plik.
Następnie, zmień definicję bloku w swoim module. Użyj pliku layout XML, aby nadpisać template bloku na Twój nowy plik.
Pamiętaj o wyczyszczeniu cache! Magento przechowuje cache layoutu. Bez wyczyszczenia zmian nie zobaczysz.
Przykład: Nadpisanie szablonu
Załóżmy, że chcesz zmienić szablon dla pozycji zamówienia w e-mailu z potwierdzeniem zamówienia. Moduł nazywa się MojaFirma_MojeZmiany.
Kopiujesz plik vendor/magento/module-sales/view/frontend/templates/email/items/order/default.phtml do app/code/MojaFirma/MojeZmiany/view/frontend/templates/email/items/order/default.phtml.
Tworzysz plik app/code/MojaFirma/MojeZmiany/view/frontend/layout/sales_email_order_items.xml z zawartością:
<?xml version="1.0"?> <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd"> <referenceBlock name="sales.email.order.items"> <action method="setTemplate"> <argument name="template" xsi:type="string">MojaFirma_MojeZmiany::email/items/order/default.phtml</argument> </action> </referenceBlock> </layout>
Pamiętaj! Nazwa bloku (sales.email.order.items) musi być poprawna. Musisz ją znaleźć w oryginalnym pliku layoutu.
Podsumowanie
Powtórzmy najważniejsze punkty:
- Layout Handle to identyfikator pliku XML z definicją layoutu.
- Pliki layoutu dla e-maili znajdują się w modułach, w katalogach view/frontend/layout.
- Szukaj bloków (<block>) z atrybutami name, class i template.
- Template to plik PHTML z kodem HTML.
- Aby zmienić szablon, skopiuj plik PHTML i nadpisz definicję bloku w swoim module.
- Pamiętaj o wyczyszczeniu cache!
Mam nadzieję, że to pomogło! Pamiętaj, ćwicz, eksperymentuj. Powodzenia na egzaminie!
