Archiwum

All posts for the month Sierpień, 2013

Magento daje nam możliwość tworzenia własnych szablonów email, w których możemy wykorzystać dynamiczne parametry jakie są do nich przekazywane. Przykładem takiego parametru jest np. imię i nazwisko klienta wywoływane w następujący sposób {{var customer.name}}. Po wpisaniu takiej linijki w szablonie email klienta, który otrzyma maila z tym szablonem ujrzy w jego treści swoje imię i nazwisko.

Parametrów tego typu jest więcej i każdy z nich przekazuje odpowiednią mu wartość. Jednak ich liczba jest dość ograniczona i może być niewystarczająca dla osób chcących mieć szerszy zakres danych do wykorzystania. Dlatego opiszę tu w jaki sposób rozszerzyć możliwości jednej z funkcji magento tak aby zakres ten zwiększyć.

Opis ten będzie dotyczyć dodania danych adresowych do wiadomości potwierdzającej rejestrację. Zabieramy się więc do pracy.
Pierwszą rzeczą jaką należy zrobić to zaczytać szablon email, do którego dopiszemy nasze parametry. Tak więc logujemy się do panelu magento i wybieramy System -> Emaile transakcyjne. Klikamy „Dodaj nowy szablon„. Jako szablon wybieramy „Nowe konto” i wciskamy „Load Template„. Wpisujemy nazwę szablonu i klikamy „Zapisz szablon„.
Aby szablon był użyty podczas wysyłania maila potwierdzającego rejestracje musimy go jeszcze zaczytać w ustawieniach magento. Przechodzimy więc do System -> Konfiguracja -> Klienci -> Konfiguracja klienta -> Opcje tworzenia nowego konta i jako „Domyślny e-mail powitalny” ustawiamy nasz szablon.
Szablon mamy już przygotowany. Potem dopiszemy do niego nasze parametry.

Teraz zajmiemy się częścią właściwą czyli dodaniem interesujących nas parametrów do funkcji, która przekaże je do naszego szablonu.
Funkcja ta nazywa się

i znajduje się w klasie

w pliku app/code/core/Mage/Customer/Model/Customer.php

Kopiujemy więc ten plik do lokalizacji app/code/local/Mage/Customer/Model i rozpoczynamy jego edycję.
Odnajdujemy linijkę

i nad nią dopisujemy

Dzięki temu w zmiennej $address będziemy mieć obiekt zawierający dane adresowe rejestrującego się klienta.

Teraz musimy jeszcze te dane przekazać do naszego szablonu email. Robimy to zmieniając linię

na

Od tej pory do naszego szablonu w parametrze params będą przekazywane dane adresowe klienta.

Pozostaje nam już tylko jedna rzecz, dopisanie kilku linijek kodu do naszego szablonu odpowiedzialnych za ich wyświetlanie. Może to wyglądać tak

Parametr {{var params.street2}} objąłem znacznikiem {{depend}} ponieważ jako jedyny w mojej konfiguracji magento jest on niewymagany podczas rejestracji. Jeżeli masz więcej pól, które nie są obowiązkowe to umieść je właśnie w tych znacznikach.

I to by było na tyle. Poniżej jeszcze screen przedstawiający efekt naszej pracy.

Często pracując na plikach modelu czy kontrolera lub jakichkolwiek plikach nie tworzących treści po stronie widoku sklepu potrzebujemy mieć wgląd do tego jakie parametry czy zmienne są przekazywane w interesujących nas funkcjach. Potrzeba ta zachodzi zazwyczaj w przypadku wyszukiwania błędu lub tworzeniu nowych czy też modyfikowaniu istniejących funkcji. Aby sprawdzić więc co jest przekazywane w interesującym nas parametrze wystarczy zapisać jego zawartość do logu. Aby tego dokonać należy dopisać do pliku jedną prostą linijkę:

Po wykonaniu się skryptu z powyższym kodem w katalogu var/log zostanie zapisany plik .log o nazwie jaką zadeklarowaliśmy, a w nim zawartość jaką podaliśmy do zapisu. Rozwiązanie to jest bardzo pomocne gdy zachodzi potrzeba odczytania pewnych wartości, których wyświetlenie bezpośrednio na ekranie nie jest możliwe.

UWAGA! Aby powyższe rozwiązanie działało poprawnie, tzn. aby było możliwe zapisywanie log’ów należy w panelu magento mieć włączony zapis logów. Można to zrobić wybierając System -> Konfiguracja -> Programista -> Ustawienia logów.

W tym artykule opiszę jak dodać klasę do do znacznika <body>.

Samo dodanie klasy jest bardzo proste i wykonuje się je dodając taką linijkę w pliku xml layotu strony:

Linijka ta powinna się znaleźć między znacznikami:

Całość może więc mieć postać:

 

Przykładowo jeżeli chcielibyśmy dodać klasę do body na każdej podstronie konta klienta to należałoby w pliku customer.xml umieścić kod:

lub dopisać linię dodającą klasę do istniejących już znaczników <customer_account><reference>.

Poniższe dwie linijki kodu usuną wszystkie produkty jakie znajdują się w koszyku, koszyk zostanie wyczyszczony.

 

Pobranie kolekcji produktów w magento jest bardzo proste. Wystarczy wywołać model produktu z dwiema metodami:

W zmiennej $collection otrzymamy kolekcję produktów.

 

Niejednokrotnie jednak potrzebujemy filtrować kolekcję po widoczności czy dostępności produktów. Jest to możliwe po dodaniu odpowiednich filtrów do pobierania kolekcji.

I tak odpowiednio możemy tego dokonać:

Filtrowanie po dostępności w magazynie

 Filtrowanie po ilości w magazynie

Filtrowanie po widoczności

Filtrowanie po statusie

Filtrowanie po kategorii

 Ustawianie limitu kolekcji

 

Mała uwaga odnośnie filtrowania po kategorii. Aby filtr ten zadziałał prawidłowo w zmiennej $category musi znajdować się obiekt pobranej wcześniej kategorii. Aby pobrać kategorię należy użyć kodu:

 

Całość wygląda tak: