Retour vers Articles

Nous avons testé l'approche CMS d'Odoo

Nous nous tenons régulièrement au courant des évolutions du marché des CMS, composante non négligeable du web d’aujourd’hui. Spade a récemment eu la chance de réaliser le design et l’intégration d’un site web utilisant Odoo.

Une excellente opportunité pour nous de tester ce poids lourd des solutions ERP.

odoo

Anciennement appelé « OpenERP« , le rebranding en « Odoo » s’accompagne d’une promesse d’un système innovant proposant de gérer un panel encore plus large de contenus et modules :

  • Bien entendu la composante initiale, l’ERP (Enterprise Resource Planning, en français Progiciel de gestion intégré pour les entreprises)
  • Un Site Builder en soit la partie CMS (Content Management System, en français Gestionnaire de contenu)
  • Un shop en ligne (fonctionnalités E-commerce)
  • Blog, forum, CRM (Customer Relationship Management)…

La connexion front-end d’une entreprise sur ses modules de gestion opérationnelle devient stratégique dans un nombre de secteurs. Pouvoir connecter ses clients, ses prospects et même ses employés (points de ventes) avec des processus internes (gestion de stock pour un e-commerce, demandes de rendez-vous pour une agence immobilière, …)  est une étape incontournable en 2015.

En ces temps d’Uberisation, certaines organisations établies peuvent s’adapter rapidement en intégrant cette composante Web directement sur leurs processus de gestion interne. Ce qui pourrait dans certains cas venir contrer l’arrivée de nouveaux entrants court-circuitant certains intermédiaires. La vitesse des « nouveaux barbares » repose souvent sur une intégration digitale complète.

Notre question stratégique?

Odoo peut-il faire de la concurrence à WordPress, Drupal, Expression Engine, Typo3 sur le marché des CMS ?

Témoins de la tendance à la multiplication des thèmes et frameworks proposant des fonctionnalités de live editors et de drag and drop, nous étions assez curieux de voir de quelle manière Odoo allait gérer la compétition.

Petit passage en revue de notre expérience.


Odoo est bien plus qu’un simple ERP : il comprend de nombreux modules (tels que CRM, CMS, e-Commerce, Blogs, Forums, News, Événements, LiveChat, Job offers, etc.) et permet véritablement de gérer tous les aspects informationnels d’une entreprise.

Dans cet article, nous nous focaliserons sur l’implémentation de la partie CMS étant donné que c’est celle que nous avons testée et qui nous intéresse le plus comme agence de communication contemporaine.

Il s’agit donc du module Website Builder.
Capture d'écran de la page d'accueil d'Odoo - cliquer pour agrandir.

Installation

L’installation locale est relativement technique et laborieuse, en tout cas sur Mac.

Python est déjà inclus par défaut.  Il faut ensuite se procurer postgresql.app pour utiliser une base de données locale, installer les dépendances Python listées dans un fichier et prier pour ne pas obtenir d’erreurs. Il faut aussi un outil de compilation pour les fichiers LESS (que ce soit via un package npm ou une application de type Codekit).

Lancement

Pour le lancement, difficile de se passer de la ligne de commande :

./odoo.py --addons-path=addons,../mymodules --db-filter=mydb$

Nous sommes ensuite redirigés vers une page où nous pouvons créer la base de données. Une fois celle-ci créée, nous pouvons installer tous les modules nécessaires.

Theming

Pour créer un thème, autant suivre les instructions de la documentation d’Odoo.

Fonctionnalités principales

  • Basic layouts for pages, blog and eCommerce
  • Website Builder integration
  • Basic Snippets
  • Automatic Less/Sass compiling
  • Automatic JS and CSS minification and combination

Technologies

Nous naviguons en terres connues, a priori du tout cuit pour nous. La documentation d’Odoo annonce même :

Don’t worry, after following the tutorial, you’ll be able to create your first theme with only basic knowledge of HTML.

D’après notre expérience, cela requiert tout de même quelques connaissances supplémentaires pour obtenir un résultat personnalisé : un peu de Python pour les modèles et contrôleurs, xpath et qWeb pour les templates.

Style

Odoo includes Bootstrap by default. This means that you can take advantage of all Bootstrap styles and layout functionalities out of the box.

Concernant le style, Odoo utilise donc le framework Bootstrap.

  • On ne sait pas exactement quelle version, ni si elle sera mise à jour et comment?
  • Que se passe-t-il si l’on ne veut pas utiliser Bootstrap ?
  • Doit-on overrider les styles que l’on ne souhaite pas ?
  • Selon la documentation, il suffit de créer un fichier style.less que l’on va placer dans un dossier /less dans notre répertoire /static pour ensuite l’appeler dans le header.

Il sera donc chargé après la feuille de styles de Bootstrap (même si tout sera minifié en un seul et même fichier).

Approche très discutable car il est normalement bon d’avoir la main sur la compilation des fichiers less en amont. Afin de pouvoir optimiser les styles en désactivant par exemple tous les composants qui ne sont pas nécessaires pour le rendu visuel du site.

Mais dans le cas d’Odoo, cette désactivation est à déconseiller car le système utilise lui-même Bootstrap. Pas évident de savoir ce qui est « désactivable » sans mettre en péril son fonctionnement des interfaces internes. Une approche découplée entre les deux parties serait une bonne recommandation (si jamais les core dev nous lisent :-).

Un choix intégré, qui laisse malheureusement moins de libertés par rapport à la « bonne concurrence » des autres CMS.

Sur WordPress par exemple, c’est l’équipe technique d’intégration qui fait le choix des technologies front-end :

  • le framework (il n’y a pas que Bootstrap sur le marché et tous les projets ne nécessitent pas de déployer une usine à gaz comme telle),
  • les librairies JS…

Selon nous, ces choix technologiques, pour gérer l’interface, doivent être validés en fonction du scope du projet et non imposé par la solution CMS.

Code Injecté

Comme beaucoup d’autres frameworks CMS, Odoo rajoute ses classes qu’il faut parfois overrider (neutraliser).

Exemple dans le code suivant :

La propriété "widget": "image" ajoute la classe .img-responsive et le style qui va avec.

Pourquoi ce contrôle sur certains objets? Pour les développeurs front-end qui, comme nous, aiment avoir le contrôle total du code qui est généré, cela crée des surprises et ralenti nos efforts de travail.

Ce que nous avons apprécié avec Odoo

  • Le Site Builder avec son Live Editor est vraiment impressionnant :
    • Création de snippets à glisser, déposer, éditer
    • Ce qui donne une grande liberté au niveau de la mise en page.
    • Et tout cela se fait en « frontend » donc directement
  • Le système s’avère puissant
    • et malgré plusieurs passages à vide propres à la courbe d’apprentissage de l’outil,
    • nous avons quasi à chaque fois trouvé des solutions pour mettre en place les éléments tels que prévus par les étapes de design.
    • Nous avons pu respecter notre approche méthodologique
  • Le choix de Bootstrap permet évidemment de mettre en place facilement une approche de Responsive Design souple et confortable

Ce qui nous pose problème avec Odoo

  • La nécessité de mettre à jour à chaque fois que l’on fait des modifications dans les templates XML (grosse perte de temps)
  • L’obligation d’utiliser une version de Bootstrap complète (on utilise rarement l’entièreté du framework, pourquoi charger les modules inutilisés (CSS + JS) ?)
  • L’ajout de code (classes et styles) par le CMS
  • L’impossibilité d’utiliser du SVG à part sous la forme
  • La complexité de l’extension ou du remplacement des templates existants via xpath (exemple : )
  • Les logs d’erreur pas assez explicites pour résoudre certaines actions. (exemple)

En conclusion sur la configuration module CMS

Après notre expérience sur ce premier projet avec Odoo, nous considérons qu’il manque encore de maturité sur les approches CMS. Une série de fonctionnalités gagneraient à évoluer pour assurer la rapidité d’implémentation de gros projets web.

Il reste néanmoins intéressant notamment par sa facilité d’utilisation pour ceux qui gèrent le contenu au quotidien (drag and drop, live editor), et ce, dans le cadre d’une utilisation basique.

Et c’est sans doute là que se situe l’équilibrage à faire : maintenir le choix stratégique d’un CMS facile à installer et à utiliser tout en offrant aux développeurs un environnement de travail plus souple.

Vous avez des questions pour un projet avec le CMS Odoo?

N’hésitez pas à prendre contact avec Spade, nous serons heureux de répondre à vos questions pour vous aider à réussir votre projet.

Et de vous mettre en contact si besoin avec nos partenaires techniques qui implémentent Odoo.