Trả lời các câu hỏi
Ai chịu trách nhiệm định dạng dữ liệu, ví dụ giá cả. API Magento và khung frontend?
API Magento cung cấp quyền truy cập vào dữ liệu và logic kinh doanh . Định dạng dữ liệu / giá là một phần của logic trình bày , vì vậy theo cách này, bạn có thể linh hoạt hơn để trình bày thông tin theo cách bạn muốn (mà không bị buộc phải thực hiện theo cách Magento).
Ví dụ: bạn có thể sử dụng javascript để phát hiện cài đặt ngôn ngữ và cung cấp dữ liệu phù hợp. Kiểm tra sau:
navigator.l
Language toLocaleString ()
Hoặc, bạn thậm chí có thể chọn nhập giá từ Magento sang hệ thống bên thứ 3 hoặc công cụ phân tích dữ liệu và việc định giá theo định dạng tiền tệ sẽ chỉ phá vỡ quy trình nhập cho đến khi bạn giải quyết "chuyển đổi tiền tệ".
Ai chịu trách nhiệm thay đổi kích thước hình ảnh sản phẩm và lưu trữ chúng? Bởi vì trong API Magento 2 gốc không có hệ thống thay đổi kích thước hoặc bộ đệm.
Chính xác. Như tôi đã nói ở trên, Magento cung cấp quyền truy cập vào dữ liệu (không có logic trình bày). Tùy bạn sử dụng nó như thế nào.
Ví dụ: bạn có thể chọn thay đổi kích thước hình ảnh thích ứng http://adaptive-images.com/details.htm , để bạn có thể dễ dàng sử dụng hình ảnh gốc và làm bất cứ điều gì bạn muốn.
Bạn có thể chọn cách bạn sẽ lưu trữ hình ảnh, bạn muốn sử dụng tính năng nén mất dữ liệu hoặc không mất dữ liệu để giảm hình ảnh, v.v.
Tôi có cần tạo API cô lập tùy chỉnh mới hoặc mở rộng nguồn gốc cho mục đích nâng cấp trong tương lai không?
Tôi khuyên bạn nên tạo API sẽ được sử dụng cho logic trình bày và bạn sẽ chắc chắn 99,9% (theo phỏng đoán của tôi) rằng bạn sẽ không bị ảnh hưởng bởi bản nâng cấp API Magento2 trong tương lai.
Bạn có khuyên nên sử dụng một lớp bổ sung để kết hợp API CMS và Magento không?
Rat khuyen khich. Nhưng, lớp bổ sung không phải là một ứng dụng bổ sung; nó có thể là một mô-đun Magento2. Điều tốt về điều này là thực tế là bạn có thể tự do kết hợp nó theo cách bạn muốn; bạn có thể xây dựng lớp proxy của mình bằng bất kỳ ngôn ngữ / công nghệ nào bạn muốn.
Tôi đánh giá cao bạn để chia sẻ lợi nhuận của bạn trong kinh nghiệm.
Có nhiều cách tiếp cận bạn có thể sử dụng ở đây. Tôi sẽ chia sẻ ý kiến của tôi về nó.
Cách tiếp cận của tôi không đầu
Đầu tiên, tôi sẽ chia nó thành hai lớp: lớp proxy và lớp trình bày .
Lớp proxy
Điều đầu tiên bạn sẽ phải xem xét là về việc xây dựng lớp Proxy. Đằng sau, bạn có thể sử dụng Magento API, CMS API, ERP API, x API, bất cứ điều gì bạn muốn ...
Trong lớp proxy, bạn có thể tự do sử dụng và sắp xếp dữ liệu theo cách bạn muốn. Bạn có thể triển khai lớp bộ đệm ở đó, cũng như các chức năng bổ sung để định dạng dữ liệu, theo dõi khách hàng, tự động hóa khác nhau, v.v. Nói chung, bất cứ điều gì bạn cần để dễ dàng tung hứng trong lớp trình bày.
Lớp proxy không cần phải được mã hóa bằng PHP; nó có thể được mã hóa bằng Java, NodeJS hoặc thậm chí bạn có thể sử dụng AWS API Gateway, AWS SQS và Lambda để cung cấp toàn bộ lớp proxy hoặc chỉ là một phần của nó.
Một trong những cách tiếp cận bạn có thể sử dụng được mô tả bởi Fabrizio Branca tại http://fbrnc.net/blog/2015/10/super-scaling-magento
Lớp trình bày
Lớp trình bày phụ thuộc vào nền tảng máy khách; nếu bạn sẽ sử dụng nó cho Ứng dụng di động, mọi thứ khá rõ ràng về cách bạn nên sử dụng API proxy.
Đối với một ứng dụng web, có rất nhiều khả năng. Bạn có thể dùng:
- Giải pháp PHP tiêu chuẩn (được cung cấp bởi bất kỳ khung công tác nào) trong đó bạn có thể sử dụng bất kỳ công cụ tạo khuôn mẫu PHP nào (như Smarty, Twig, Dwoo ...) để cung cấp đầu ra HTML
- Java / NodeJS / bất kỳ ngôn ngữ nào bạn cảm thấy quen thuộc
- Giải pháp hoàn toàn dựa trên javascript, sẽ kết xuất tất cả HTML và sẽ gọi các API phù hợp thông qua ajax để điền dữ liệu vào đó
- Bất kỳ kết hợp / kết hợp của những cách tiếp cận từ trên
Đây không phải là bởi cuốn sách danh sách, tôi vừa chia sẻ vài kết hợp. Trong thực tế, trí tưởng tượng của bạn là giới hạn duy nhất.
Suy nghĩ cuối cùng
Sử dụng giải pháp dựa trên javascript càng nhiều càng tốt, vì nó có thể cung cấp trải nghiệm tốt hơn cho Khách hàng, tải trọng nhỏ hơn cho tải trang, thậm chí bạn có thể tải dữ liệu đầu cơ nếu bạn có thể dự đoán các hành động tiếp theo của khách hàng.
NHƯNG, vấn đề với giải pháp javascript hoàn toàn là SEO. Nếu tất cả dữ liệu của bạn được tải thông qua Ajax, Google có thể sẽ không thể phân tích cú pháp.
Giải pháp là tạo một ứng dụng lai sẽ phục vụ toàn bộ trang HTML trong lần tải đầu tiên, ví dụ như khi bạn nhấn / catalog / giày. Đối với bất kỳ điều hướng nào khác thông qua trang web, bạn có thể sử dụng ajax để chỉ tìm nạp các khối cần thiết.
Một trong những cách tiếp cận sẽ là tạo ảnh chụp nhanh trang của bạn, ví dụ như bằng cách sử dụng PhantomJS . Cũng có một vài giải pháp trả phí cho việc này, như: