Réponses aux questions
Qui est responsable du formatage des données, par exemple les prix. API Magento et infrastructure frontale?
L'API Magento fournit un accès aux données et à la logique métier . Le formatage des données / prix fait partie de la logique de présentation . Ainsi, vous avez plus de flexibilité pour présenter les informations comme vous le souhaitez (sans être obligé de le faire de la manière Magento).
Par exemple, vous pouvez utiliser JavaScript pour détecter les paramètres régionaux et fournir les données appropriées. Vérifiez les éléments suivants:
navigator.language
toLocaleString ()
Vous pouvez également choisir d'importer les prix de Magento vers un système tiers ou un outil d'analyse des données. De plus, le formatage des prix en fonction du format de la devise interromprait le processus d'importation jusqu'à ce que vous résolviez la "conversion de devise".
Qui est responsable du redimensionnement des images de produits et de leur mise en cache? Parce que dans l'API native Magento 2, il n'y a pas de système de redimensionnement ou de cache.
Exactement. Comme je l'ai dit plus haut, Magento fournit un accès aux données (sans logique de présentation). C'est à vous de choisir comment vous allez l'utiliser.
Par exemple, vous pouvez opter pour le redimensionnement adaptatif des images http://adaptive-images.com/details.htm , afin de pouvoir facilement utiliser l'image originale et faire ce que vous voulez.
Vous pouvez choisir la manière dont vous allez mettre en cache les images, voulez-vous utiliser la compression avec ou sans perte pour réduire les images, etc.
Dois-je créer une nouvelle API isolée personnalisée ou une extension native pour une mise à niveau ultérieure?
Je vous recommande de créer votre API qui sera utilisée pour la logique de présentation et vous serez à 99,9% (à mon avis) certain de ne pas être affecté par une future mise à niveau de l'API Magento2.
Recommandez-vous d'utiliser une couche supplémentaire pour combiner le CMS et l'API Magento?
Hautement recommandé. Mais, la couche supplémentaire ne doit pas nécessairement être une application supplémentaire; cela peut aussi être un module Magento2. La bonne chose à ce sujet est le fait que vous êtes libre de le combiner comme vous le souhaitez. vous pouvez construire votre couche proxy en utilisant le langage / la technologie de votre choix.
Je vous remercie de partager votre retour d'expérience.
Il existe de nombreuses approches que vous pouvez utiliser ici. Je vais partager mon opinion à ce sujet.
Mon approche sans tête
Premièrement, je le scindais en deux couches: la couche proxy et la couche présentation .
Couche de proxy
La première chose à considérer concerne la construction de la couche proxy. En coulisse, vous pouvez utiliser l'API Magento, l'API CMS, l'API ERP, l'API x, tout ce que vous voulez ...
Dans la couche proxy, vous êtes libre d'utiliser et d'organiser les données comme vous le souhaitez. Vous pouvez y implémenter la couche de mise en cache, ainsi que des fonctionnalités supplémentaires pour le formatage des données, le suivi des clients, diverses automatisations, etc. En général, tout ce dont vous avez besoin pour jongler facilement dans la couche de présentation.
La couche proxy n'a pas besoin d'être codée en PHP; il peut être codé en Java, NodeJS, ou vous pouvez même utiliser AWS API Gateway, AWS SQS et Lambda pour fournir une couche de proxy entière ou une partie de celle-ci.
L'une des approches que vous pouvez utiliser est décrite par Fabrizio Branca à l' adresse http://fbrnc.net/blog/2015/10/super-scaling-magento.
Couche de présentation
La couche de présentation dépend de la plate-forme cliente. si vous envisagez de l'utiliser pour une application mobile, la manière dont vous devriez utiliser l'API proxy est assez claire.
Pour une application Web, les possibilités sont nombreuses. Vous pouvez utiliser:
- Solution PHP standard (optimisée par n'importe quel framework) où vous pouvez utiliser n'importe quel moteur de modélisation PHP (comme Smarty, Twig, Dwoo ...) pour générer une sortie HTML
- Java / NodeJS / quelle que soit la langue avec laquelle vous vous sentez familier
- Solution purement basée sur javascript, qui rendrait tout le code HTML et appellerait les API appropriées via ajax pour le remplir avec des données
- Toute combinaison / combinaison de ces approches ci-dessus
Ce n'est pas dans la liste des livres , je viens de partager quelques combinaisons. En réalité, votre imagination est la seule limite.
Dernières pensées
Utilisez autant que possible une solution basée sur JavaScript, car elle peut offrir une meilleure expérience au client, une charge utile plus réduite pour les charges de page, vous pouvez même effectuer une charge de données spéculative si vous pouvez prévoir les actions à venir du client.
MAIS, le problème avec la solution purement javascript est le référencement. Si toutes vos données sont chargées via Ajax, Google ne serait probablement pas en mesure de les analyser.
La solution consiste à créer une application hybride qui servira une page HTML entière lors du premier chargement, par exemple lorsque vous frappez / catalog / shoes. Pour toute navigation ultérieure sur le site, vous pouvez utiliser ajax pour ne récupérer que les blocs nécessaires.
Une des approches serait de créer des instantanés de votre page, par exemple en utilisant PhantomJS . Il existe également peu de solutions payantes pour cela, comme: