Drupal Commerce

Sklep Internetowy na Drupal 8, czyli Drupal Commerce

26.09.2018

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.

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.

Drupal 8 commerce Modules

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.

Atrykuły 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.

Ustawianie promocji w Drupal 8

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.

Drupal commerce order

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

Drupal Commerce checkout flows

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

Commerce add product

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

Karta produktu

 

Koszyk

Koszyk drupal commerce

 

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

Tpayhttps://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.

Drupal Commerce Shipment

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

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!

Porozmawiajmy o Twoich projektach

Napisz do nas!