Sklep Internetowy na Drupal 8
W listopadzie 2018 minie trzy lata od premiery Drupal 8. Zdążyliśmy się już przyzwyczaić do różnic między 7 a 8, powstało także sporo serwisów na D8. Wiele stron na Drupal 7 to aplikacje korzystające z modułu e-commerce o nazwie Drupal Commerce. Spora część aplikacji była instalowana z dystrybucji Commerce Kickstart, która oparta jest o ten dodatek. Jak to wygląda na D8? Przez długi czas moduł był w wersji alfa, później beta. 20 września 2017 ukazała się wersja 2.0. Na dzień pisania artykułu aktualna wersja to 2.9. Sprawdzimy, co nowego oferuje oraz jak spisuje się DC na D8. Do testów użyjemy DC w wersji 2.9 oraz Drupala 8.5.9 z dystrybucją Droopler (rozwiązanie dedykowane tworzeniu stron korporacyjnych).
Instalacja i wymagania
Według instrukcji zalecana jest instalacja przez Composer oraz wymagana wersja Drupala od 8.5 w górę. Instalacja przebiegła u nas bez problemów. Aby zainstalować DC najnowszej wersji, używamy następującego polecenia:
composer require "drupal/commerce"
DC wymaga kilku dodatkowych modułów (Address, Entity, Datatime, Inline Entity Form, Entity Reference Revisions, Profile, State Machine), używając Composer nie musimy instalować ich ręcznie, dodane zostaną automatycznie. Po udanej instalacji lista modułów zwiększa się o 12 pozycji.
Funkcjonalność, moduły i nowości
Do prowadzonych testów uruchomiliśmy wszystkie moduły. W naszym głównym menu pojawia się ikonka Commerce. Na pierwszy rzut oka widać kilka opcji, których nie było w standardowej wersji na D7. Między innymi:
- Store types,
- Product attributes,
- Promotions,
- Order types,
- Order item types,
- Checkout flows,
- Product variation types.
Store i Store types
Pozwala zdefiniować typy sklepów na naszej stronie, standardowo dodawany jest jeden o nazwie "online". Dodanie większej ilości może się to przydać, jeżeli ktoś ma sieć sklepów stacjonarnych lub posiada oddziały w różnych krajach. Sklepy te mogą zachować specyficzną ofertę dla danego kraju, ale trzymać bazę wszystkich produktów w jednym miejscu. Należy pamiętać, iż produkt może należeć do jednego lub kilku sklepów. Natomiast zamówienie złożone przez użytkownika zawsze przypisane jest do jednego sklepu.
Ciekawą opcją jest możliwość tworzenia swoich sklepów przez użytkowników naszego portalu. Sprzedawcy mogą otwierać swoje e-sklepy na naszej stronie oraz tworzyć i sprzedawać własne produkty, podobnie jak w ETSY. Więcej informacji na ten temat znajdziecie na Drupal Commerce.
Product attributes
Pozwala dodawać atrybuty do naszych produktów. Mamy dostępne 3 warianty wyświetlania: Select listę, Radio button oraz Rendered attribute. Atrybuty te możemy przypisywać do typów i korzystać z nich przy dodawaniu nowych produktów.
Promotions
W DC dostajemy moduł pozwalający dodawać bonusy i rabaty. Obniżkę możemy ustawić na produkty lub całe zamówienie. Rabat może być kwotowy lub procentowy. Rabaty można przypisać do roli, adresu wysyłki czy adresu e-mail. Ograniczyć promocje możemy także do maksymalnej wartości zamówienia, metody płatności lub waluty. Dodatkowo mamy opcję dodania daty startu i zakończenia, limitu użyć oraz czy rabat może łączyć się z innymi promocjami. Trzeba przyznać, że jest to duże udogodnienie. Biorąc za wyznacznik inne systemy e-commerce są to rzeczy, które powinny być standardem. W D7 nie było takie oczywiste i potrafiło to sprawić wiele problemów.
Order types
Nowością jest także inne podejście do zamówień. Możemy stworzyć kilka typów zamówień, które różnią się od siebie ścieżką zakupową, a nawet pokazują koszyk w inny sposób. Dość ciekawe rozwiązanie i na pewno przyda się przy bardziej złożonych projektach, gdzie produkty wymagają innego podejścia biznesowego. Każdy typ może posiadać swoje unikalne pola i metody renderowania.
Checkout flows
Tak jak wspomniałem wyżej, oprócz typów zamówień, możemy ustawić wiele ścieżek zakupowych. Mogą się one różnić w zależności od typu zamówienia, jakie aktualnie składamy. Cały proces zamówienia do wyświetlania wykorzystuje pluginy. Na start mamy dostępny Multistep. Natomiast możemy dopisać swój własny i użyć go np. w jednej z kilku ścieżek zakupowych. Ciekawe podejście, dzięki któremu nie musimy alterować jednej domyślnej ścieżki. Jak stworzyć swój własny flow plugin możecie sprawdzić tutaj: https://docs.drupalcommerce.org/commerce2/developer-guide/checkout/create-custom-checkout-flow
Order item types
Można powiedzieć, że jest to trochę ‘Line item’ z D7, Jest to pozycja, gdzie przechowywane są dane o zamówieniu, produkty, można definiować także swoje pola do przechowywania innych informacji.
Commerce 8 w praktyce
Zobaczmy jak Commerce spisuje się w praktyce.
Dodawanie produktu
Jak widać mamy do dyspozycji atrybuty i wariacje produktów, które utworzyliśmy wcześniej. Dodajmy produkt z kilkoma opcjami do wyboru.
Karta produktu
Koszyk
Standardowy koszyk podobnie jak w D7 jest blokiem z views, który możemy dowolnie konfigurować.
Płatności
Do testów włączyliśmy testowe płatności dołączone do modułu. Jeżeli ktoś chce używać gotowych bramek, to dostępne są:
Paypal - https://www.drupal.org/project/commerce_paypal
Tpay - https://www.drupal.org/project/commerce_tpay
Wysyłki
Moduł odpowiedzialny za wysyłki - Commerce Shipping.
https://www.drupal.org/project/commerce_shipping
Zintegrowany jest z modelem physical, przez co zyskujemy automatyczne przeliczanie rozmiarów i wag do ceny wysyłki.
Jeżeli chodzi o integracje wysyłek to znalazłem tylko Fedex w wersji Alpha4.
https://www.drupal.org/project/commerce_fedex
Dodatkowo twórcy DC wykorzystali moduł Address.
Pola z adresem wspierane są dla ponad 200 krajów. Zawierają lokalizacje, podstrefy, województwa, landy itp. z większości krajów świata. Dodatkowo możemy stworzyć swoje "Address zones" i nadać im specjalne właściwości, takie jak inne ceny wysyłki, podatków itp.
Podsumowanie
Drupal Commerce posiada wiele usprawnień i nowości, a podstawowe funkcje działają dużo lepiej niż w poprzedniej wersji, co jest oczywiście na plus. Twórcy dodatkowo dali więcej opcji konfiguracji od samego początku w porównaniu do wersji z D7. Dla typowego site buildera, plusem będzie duża ilość modułów, których ilość ciągle rośnie. Dla zaawansowanych programistów atutem jest możliwość korzystania z Composera oraz rozszerzeń i możliwości, jakie daje framework Symfony. Gdy zdarzy się, że nie ma modułu do wersji 8, możemy bez problemów napisać je samemu, korzystając API Drupala oraz Symfony.
Dużym plusem dla początkujących jest to, że bez większych problemów udało się skonfigurować i ustawić podstawowe funkcje sklepu w niedługim czasie. Pojawia się coraz więcej modułów, a duża ich część posiada już stabilne wersje. Dlatego połączenie Drupala 8 oraz Drupal Commerce to narzędzie dające dużo możliwości dla ciekawych projektów. Szczególnie, jeżeli mamy duże zaplecze programistów, którzy mogą skupić się na dostosowaniu sklepu do danego usera, gdyż wszystkie podstawowe funkcje dostaliśmy gotowe. Na pewno Drupal Commerce jest dobrą bazą do budowania dużych i skomplikowanych systemów e-commerce.
Pytanie, czy wybrać sprawdzonego, ale starego już Commerce z D7 czy obiektowego, opartego na nowych technologach D8?
To zależy od projektu, jakie mamy możliwości programistyczne, budżet. Warto dodać, że strony oparte na Drupal Commerce regularnie otrzymują nagrody SPLASH AWARDS. Plebiscyt wyróżnia od 2014 roku najlepsze strony na Drupalu. Więcej o tym: https://www.emerce.nl/wire/frmwrk-wint-tweede-prijs-drupal-splash-awards
Wygląda to zachęcająco i trzymamy kciuki za dalszy rozwój DC. Jeżeli ktoś potrzebuje więcej informacji na temat DC to zapraszam na https://docs.drupalcommerce.org/
Zapraszamy także do przeczytania innych naszych wpisów na blogu Droptica!