Skip to content

nopCommerce

Nos boutiques en ligne tournent sur nopCommerce, une solution e-commerce open-source écrite en ASP.NET Core. On en a une bonne dizaine en production, et elles se ressemblent toutes parce qu'on part toujours de la même base et qu'on applique les mêmes recettes. Cette section décrit ces recettes : comment on transforme un nopCommerce "sorti de la boîte" en projet Spektrum, comment il cohabite avec un site Umbraco, et comment on le règle.

Le principe : un shop greffé sur un site Umbraco

Chez nous, une boutique est rarement seule au monde. Le montage classique, c'est un site Umbraco (en version 13 ou 17 sur nos projets actuels) pour tout ce qui est éditorial (pages, contenu, header, footer, SEO) et un shop nopCommerce branché en sous-application de ce site, typiquement sous une URL comme /shop.

Tout l'enjeu est de faire oublier au visiteur qu'il y a deux applications derrière. On y arrive en partageant deux choses entre les deux mondes :

  • Le header et le footer. Le site Umbraco les expose sur des pages dédiées, et le shop va les chercher pour les afficher tels quels. Le client édite son menu une seule fois, dans Umbraco, et il apparaît partout.
  • Le référencement. On présente aux moteurs de recherche un seul sitemap.xml et un seul robots.txt, qui agrègent le contenu des deux applications.

Le détail de ces branchements vit dans Intégration avec Umbraco.

Comment s'y prendre

Selon là où tu en es, voici le bon point d'entrée :

Se repérer dans le code

nopCommerce a une arborescence stable d'une version à l'autre. Dans la pratique, on passe presque tout notre temps dans src/Presentation/Nop.Web : c'est l'application web. Les appsettings sont dans son sous-dossier App_Data, le thème du client dans Themes, et tout le back-office dans Areas/Admin. Le cœur (configuration, helpers bas niveau) est dans src/Libraries/Nop.Core. Quand une doc te parle d'un fichier à modifier, c'est presque toujours quelque part là-dedans.

Côté infrastructure, une boutique suit la convention nop_<skin>_<env> pour son conteneur et sa base de données, voir Convention de nommage et Docker Compose.

Contributors

The avatar of contributor named as Clément Favre Clément Favre

Changelog