Відповіді на запитання
Хто несе відповідальність за форматування даних, наприклад ціни. API Magento та фронтенд?
API Magento забезпечує доступ до даних та логіки бізнесу . Форматування даних / ціни є частиною логіки презентації , тому на цьому шляху ви маєте більше гнучкості представляти інформацію в потрібному вам режимі (не змушуючи це робити на Magento).
Наприклад, ви можете використовувати javascript для виявлення налаштувань локалі та надання відповідних даних. Перевірте наступне:
navigator.language
toLocaleString ()
Або ви навіть можете імпортувати ціни з Magento до сторонньої системи чи інструменту аналізу даних, а форматування цін відповідно до формату валюти лише порушить процес імпорту, поки ви не вирішите "конвертацію валюти".
Хто несе відповідальність за зміну розмірів зображень продуктів та їх кешування? Оскільки в рідному API Magento 2 немає системи зміни розміру чи кешу.
Саме так. Як я вже говорив вище, Magento забезпечує доступ до даних (без логіки презентації). Саме від вас залежить, як ви будете ним користуватися.
Наприклад, ви можете вибрати адаптивний розмір зображення http://adaptive-images.com/details.htm , так що ви можете легко використовувати оригінальне зображення та робити все, що завгодно.
Ви можете вибрати спосіб кешування зображень, чи бажаєте ви стиснення втрат чи втрат для зменшення зображень тощо.
Чи потрібно мені створити новий індивідуальний ізольований API або розширити нативну для подальшого оновлення?
Я рекомендую зробити свій API, який буде використовуватися для логіки презентації, і ви будете впевнені, що на 99,9% (наскільки я здогадуюся) майбутнє оновлення API Magento2 не вплине на вас.
Чи рекомендуєте ви використовувати додатковий шар для комбінування API CMS та Magento?
Настійно рекомендується. Але додатковий шар не повинен бути додатковим додатком; це може бути і модуль Magento2. Хороша річ у цьому - той факт, що ви вільні комбінувати його, як тільки захочете; ви можете створити проксі-шар, використовуючи будь-яку мову / технологію, яку ви хочете.
Дякую вам, щоб поділитися своїм досвідом.
Тут ви можете скористатися багатьма підходами. Я поділюсь своєю думкою з цього приводу.
Мій підхід без голови
По-перше, я б розділив його на два шари: проксі-шар та презентаційний шар .
Проксі-шар
Перше, що вам доведеться врахувати, - це створення проксі-шару. За лаштунками ви можете використовувати Magento API, CMS API, ERP API, x API, що завгодно ...
У проксі-шарі ви можете користуватися та впорядковувати дані так, як вам потрібно. Ви можете реалізувати там кешовий шар, а також додаткові функції для форматування даних, відстеження клієнтів, різних автоматизацій тощо. Загалом, все, що потрібно для легкого жонглювання в презентаційному шарі.
Проксі-рівень не повинен кодуватися в PHP; його можна кодувати в Java, NodeJS або навіть можна використовувати шлюз API AWS, AWS SQS і Lambda для надання цілого проксі-шару або просто його частини.
Один із підходів, якими ви можете скористатися, описаний Fabrizio Branca на веб-сайті http://fbrnc.net/blog/2015/10/super-scaling-magento
Презентаційний шар
Презентаційний шар залежить від платформи клієнта; якщо ви збираєтеся використовувати його для мобільних додатків, тут досить зрозуміло, як слід використовувати API проксі.
Для веб-програми існує багато можливостей. Ви можете використовувати:
- Стандартне рішення PHP (працює на будь-якій основі), де ви можете використовувати будь-які двигуни шаблонів PHP (наприклад, Smarty, Twig, Dwoo ...), щоб забезпечити вихід HTML
- Java / NodeJS / якою б мовою ви не знайомі
- Суто рішення на основі JavaScript, яке візуалізує весь HTML і викликає відповідні API через ajax, щоб заповнити його даними
- Будь-який гібрид / комбінація цих підходів зверху
Це не за списком книг , я лише поділився кількома комбінаціями. Насправді ваша уява - єдина межа.
Заключні думки
Використовуйте рішення на базі javascript якнайбільше, оскільки це може забезпечити кращий досвід для Клієнта, менший корисний навантаження для завантаження сторінки, ви навіть можете робити спекулятивне завантаження даних, якщо ви можете передбачити наступні дії клієнта.
АЛЕ, проблема з чисто JavaScript рішенням є SEO. Якщо всі ваші дані завантажуються через Ajax, Google, ймовірно, не зможе їх проаналізувати.
Рішення полягає в тому, щоб зробити гібридний додаток, який буде обслуговувати всю сторінку HTML при першому завантаженні, наприклад, при натисканні / каталогу / взуття. Для подальшої навігації по сайту ви можете використовувати ajax для отримання лише необхідних блоків.
Одним із підходів було б створення знімків вашої сторінки, наприклад, за допомогою PhantomJS . Для цього також є мало платних рішень, наприклад: