Wprowadzenie
Tworząc rozwiązania do Shopify stykamy się z pewnymi trudnościami teoretycznie nie do obejścia. Problemy te dotyczą np. modyfikowania ceny oraz ilości poszczególnych produktów przy dodawaniu ich do koszyka, bądź wpływania na kupony oraz koszty wysyłek oraz blokowania produktów konkretnym grupom użytkowników.
Brak dostępu do możliwości modyfikowania funkcjonalności sklepu wiązała się z komplikacjami. Wprowadzanie wielu takich samych produktów ale w różnych cenach nie wchodziło w grę.
Po wielu analizach najlepszym rozwiązaniem dla naszych barier okazało się wykorzystanie Shopify Scripts. Rozwiązanie to możemy spotkać tylko w sklepach Plus.
Co to jest Shopify Scripts?
Shopify Scripts są to skrypty pisane w języku Ruby, które rozwijają się w aplikacji Script Editor. Jest to aplikacja stworzona przez Shopify i przez sklep wspierana. Można również kontaktować się z supportem w razie potrzeb w celu uzyskania pomocy. Bardzo chętnie pomagają i nawet wspierają rozwiązanie problemów programistycznych poprzez analizę i rekomendowanie alternatywnych rozwiązań.
Skrypty działają na zasadzie filtrów - otrzymują dane wejściowe (Input), które można dowolnie modyfikować. Następnie trafiają one jako dane wyjściowe (Output). Prostym przykładem takiego filtru jest skrypt, posiadający w Input listę wszystkich elementów koszyka, za pomocą którego ograniczamy quantity produktu do jednego i zwracamy jako Output.
Przykładem bardzo prostego skryptu jest np:
Output.cart = Input.cart
Tyle wystarczy, żeby posiadać już własny skrypt - pomijając fakt iż powyższy skrypt nie wnosi nic sensownego, chodzi tylko o zobrazowanie zasad.
(Źródło: https://apps.shopify.com/script-editor)
W aplikacji jest możliwość wykonywania skryptów dla 3 grup:
- Line items - wpływają na elementy zamówienia w koszyku i mogą zmieniać ceny oraz udzielać rabatów. Są uruchamiane po wprowadzeniu zmiany w koszyku.
- Shipping rates - zmieniają metody wysyłki oraz udzielają rabatów na stawki wysyłki. Są uruchamiane podczas składania zamówienia po przejściu do opcji wysyłki.
- Payment gateways - zmieniają nazwy i kolejność bramek płatniczych oraz je ukrywają. Są uruchamiane podczas składania zamówienia po przejściu do strony płatności.
Ograniczenia Shopify Scripts
Oprócz wspomnianym wcześniej wymaganiem jakim jest fakt posiadania “plusa” są jeszcze pewne ograniczenia:
- Każda z trzech grup może posiadać tylko jeden aktywny skrypt, a pozostałe muszą zostać zapisane jako szkice. Obejściem tego ograniczenia jest utrzymywanie w swoim repozytorium wszystkich źródeł oraz stworzenie narzędzia do buildowania wielu skryptów do jednego pliku, który finalnie zostaje przekopiowany do aplikacji Script Editor.
- Brak wersjonowania czyli brak informacji dotyczących historii zmian. Jednak stosując obejście z punktu 1 wyklucza się problem.
- Limit znaków dla skryptów - każdy ze skryptów może mieć max 24,576 znaków - przy dużej ilości skryptów lub ich większym zaawansowaniu może to być znaczne ograniczenie. Ponownie obejście z punktu 1 rozwiązuje problem poprzez dodatkowe wykorzystanie kompresji.
- Ograniczenia językowe - wynikają z wprowadzonych przez Shopify ograniczeń takich jak wyłączenie wielu bibliotek w języku Ruby.
- Maksymalna liczba skryptów Shopify Scripts to 100.
- Shopify Scripts nie działają z Draft Orderami.
- Brak możliwości używania cart attributes.
- Brak możliwości podnoszenia cen produktów.
- oraz… największym ograniczeniem dla wielu programistów jest brak dostępu do metafieldów. Jednak z tą trudnością również można sobie poradzić. Na końcu artykułu znajdziecie sposób na obejście trudności.
Wszelkie ograniczenia i ich aktualizacje można znaleźć na stronie Script requirements and limitations.
Możliwości Shopify Scripts
Podczas tworzenia skryptów, Shopify udostępnia kilka szablonów, które można modyfikować według własnych potrzeb wprowadzając odpowiednie dane:
- procentowa zniżka na produkt
- kwotowa zniżka na produkt
- procentowa i kwotowa zniżka na produkt
- zniżki hurtowe
- buy one get one free (BOGO)
- modyfikacja ceny rodzaju wysyłki
- modyfikacja nazwy rodzaju wysyłki
- ukrywanie rodzajów wysyłki
- zmiana kolejności rodzaju wysyłki
- modyfikacja nazwy rodzaju płatności
- ukrywanie rodzaju płatności
- zmiana kolejności bramek płatności
Szablony udostępniane przez Shopify są bardzo skromne i nie pokazują zaawansowanych funkcji Shopify Scripts.
BONUS
Oto sposób jak sprytnie ominąć brak możliwości korzystania z Metafields w Shopify Scripts.
Do obejścia wykorzystano fakt, że Shopify Scripts pozwala na dostęp do tagów produktów oraz customera. Oznacza to, że tagi można wykorzystać jako… zmienne! Dla przykładu zmienna “discount_value” - reprezentuje informacje o wartości zniżki. Każdy z produktów może mieć inną zniżkę - np.: discount_value=5, discount_value=10 co oznacza zniżkę 5% dla pierwszego produktu i 10% dla drugiego produktu.
Oznacza to, że w Shopify Scripts jest dostęp do tych informacji - ale jak je wykorzystać?
Definiując prostą funkcję:
oraz proste użycie kodu:
Daje nam to wiele możliwości na przekazywanie do Shopify Scripts danych. Niestety generuje to nieprzejrzyście tagi - warto zaznaczyć, że nie jest to ustawiane ręcznie tylko poprzez odpowiednio przygotowane UI - kliknięcia w checkboxy, wybór np. produktów lub innych opcji generuje tagi i zapisuje je za pośrednictwem API.