Odpowiedzi na pytania
Kto jest odpowiedzialny za formatowanie danych, na przykład cen. Magento API i frameworki?
Magento API zapewnia dostęp do danych i logiki biznesowej . Formatowanie danych / cen jest częścią logiki prezentacji , więc w ten sposób masz większą elastyczność w prezentowaniu informacji w pożądany sposób (bez konieczności robienia tego w Magento).
Na przykład możesz użyć javascript do wykrywania ustawień regionalnych i dostarczania odpowiednich danych. Sprawdź następujące elementy:
navigator.language
toLocaleString ()
Lub możesz nawet zaimportować ceny z Magento do systemu zewnętrznego lub narzędzia do analizy danych, a sformatowanie cen zgodnie z formatem waluty przerwałoby proces importowania tylko do momentu rozwiązania „przeliczenia waluty”.
Kto jest odpowiedzialny za zmianę rozmiaru zdjęć produktów i buforowanie ich? Ponieważ w natywnym interfejsie API Magento 2 nie ma systemu zmiany rozmiaru ani pamięci podręcznej.
Dokładnie. Jak powiedziałem powyżej, Magento zapewnia dostęp do danych (bez logiki prezentacji). Od Ciebie zależy, jak będziesz go używać.
Na przykład możesz wybrać adaptacyjną zmianę rozmiaru obrazu http://adaptive-images.com/details.htm , abyś mógł łatwo użyć oryginalnego obrazu i robić, co chcesz.
Możesz wybrać sposób buforowania obrazów, chcesz zastosować kompresję stratną lub bezstratną w celu zmniejszenia obrazów itp.
Czy muszę utworzyć nowy niestandardowy izolowany interfejs API lub rozszerzyć go w celu przyszłej aktualizacji?
Polecam, abyś stworzył interfejs API, który będzie używany do logiki prezentacji, a będziesz miał 99,9% (przypuszczam), że nie będzie to miało wpływu na przyszłe uaktualnienie interfejsu API Magento2.
Czy zalecamy użycie dodatkowej warstwy do połączenia CMS i Magento API?
Wysoce rekomendowane. Ale dodatkowa warstwa nie musi być dodatkową aplikacją; może to być również moduł Magento2. Dobrą rzeczą jest to, że możesz dowolnie łączyć to, co chcesz; możesz zbudować swoją warstwę proxy za pomocą dowolnego języka / technologii, którą chcesz.
Dziękujemy za podzielenie się swoim doświadczeniem.
Można tu zastosować wiele metod. Podzielę się swoją opinią na ten temat.
Moje podejście do Bezgłowego
Najpierw podzieliłbym go na dwie warstwy: warstwę proxy i warstwę prezentacji .
Warstwa proxy
Pierwszą rzeczą, którą musisz wziąć pod uwagę, jest zbudowanie warstwy proxy. Za kulisami możesz używać Magento API, CMS API, ERP API, x API, cokolwiek chcesz ...
W warstwie proxy możesz dowolnie wykorzystywać i porządkować dane tak, jak chcesz. Możesz zaimplementować tam warstwę buforowania, a także dodatkowe funkcje formatowania danych, śledzenia klientów, różnych automatyzacji itp. Ogólnie wszystko, czego potrzebujesz do łatwego żonglowania w warstwie prezentacji.
Warstwa proxy nie musi być kodowana w PHP; można go zakodować w Javie, NodeJS, a nawet użyć AWS API Gateway, AWS SQS i Lambda do zapewnienia całej warstwy proxy lub tylko jej części.
Jedno z podejść, które możesz zastosować, opisano przez Fabrizio Branca na stronie http://fbrnc.net/blog/2015/10/super-scaling-magento
Warstwa prezentacji
Warstwa prezentacji zależy od platformy klienta; jeśli zamierzasz używać go do aplikacji mobilnej, jest całkiem jasne, w jaki sposób powinieneś korzystać z proxy API.
W przypadku aplikacji internetowej istnieje wiele możliwości. Możesz użyć:
- Standardowe rozwiązanie PHP (oparte na dowolnym frameworku), w którym można wykorzystać dowolny z silników szablonów PHP (takich jak Smarty, Twig, Dwoo ...), aby uzyskać wyjście HTML
- Java / NodeJS / w jakimkolwiek języku, który znasz
- Rozwiązanie oparte wyłącznie na javascript, które renderuje cały HTML i wywołuje odpowiednie interfejsy API poprzez ajax, aby zapełnić je danymi
- Każda hybryda / połączenie tych podejść z góry
To nie jest lista książek , udostępniłem kilka kombinacji. W rzeczywistości twoja wyobraźnia jest jedynym ograniczeniem.
Końcowe przemyślenia
Używaj jak najlepiej rozwiązania opartego na javascript, ponieważ może ono zapewnić lepszą obsługę klienta, mniejszy ładunek przy ładowaniu stron, możesz nawet spekulacyjnie ładować dane, jeśli możesz przewidzieć kolejne działania klienta.
ALE problemem z rozwiązaniem czysto javascript jest SEO. Jeśli wszystkie dane zostaną załadowane przez Ajax, Google prawdopodobnie nie będzie w stanie ich przeanalizować.
Rozwiązaniem jest stworzenie aplikacji hybrydowej, która będzie obsługiwać całą stronę HTML przy pierwszym ładowaniu, na przykład po naciśnięciu / katalog / buty. W celu dalszej nawigacji po witrynie możesz użyć ajax, aby pobrać tylko potrzebne bloki.
Jednym z podejść byłoby tworzenie migawek strony, na przykład za pomocą PhantomJS . Istnieje również kilka płatnych rozwiązań, takich jak: