Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Relever les défis techniques d'un site interne...

Relever les défis techniques d'un site internet multi-pays et multilingue (Liferay France Symposium 2018)

Avatar for Sébastien Le Marchand

Sébastien Le Marchand

June 06, 2018

More Decks by Sébastien Le Marchand

Other Decks in Programming

Transcript

  1. Relever les défis d’un site internet multi-pays et multilingue Sébastien

    Le Marchand @slemarchand Liferay France Symposium, 6 juin 2018
  2. #LRFRS18 Le programme 1. Contexte projet 2. Architecture générale 3.

    Chargement des contenus 4. Traduction 5. SEO / SMO
  3. #LRFRS18 #LRFRS18 Sébastien Le Marchand • 10 ans d’expérience sur

    Liferay (depuis la version 4.3 en 2007) • Dont 6 ans au sein d’un intégrateur “Gold Service Partner” • Co-organisateur du meetup Liferay France User Group Consultant Technique indépendant @slemarchand linkedin.com/in/slemarchand
  4. #LRFRS18 ATTENTION ! Cette session présente des pratiques qui se

    sont révélées pertinentes dans un certain contexte mais qui ne sont pas nécessairement adaptées à tous les projets. Vous êtes invités à faire usage de votre esprit critique plutôt que des les reproduire aveuglément.
  5. #LRFRS18 • Site Internet pour un acteur de l’agro-alimentaire •

    Cible les consommateurs (marketing) • Déployable sur un nombre croissant de pays • Fortes spécificités pour chaque pays • Evolutions importantes en continue • Début des développements en 2014 Projet
  6. #LRFRS18 Périmètre fonctionnel Page d’accueil Recherche de Recettes Recommandations de

    recettes Recettes favorites Formulaire de contact Catalogue Produits Contenu éditorial Coupons de réduction Missions &Points Boutique cadeaux …
  7. #LRFRS18 Organisation Direction marketing centrale Agence Digitale Direction Marketing Locale

    Direction Marketing Locale … Décideurs Décideurs Contributeurs contenus Equipe développement Direction marketing Locale
  8. #LRFRS18 Variations d’un pays à l’autre • Pages en plus

    ou en moins • La place de certaines pages dans les menus de navigation • La composition de certaines pages o Portlets en plus ou en moins o Positionnement des portlets au sein de la page • Privilège de contribution accordé par pays • …
  9. #FRS18 Choix structurants 1 pays = 1 site dans Liferay

    (Group) Pas de liaison avec un template de site (LayoutSetPrototype)
  10. #LRFRS18 Répartitions des assets entre pays Chaque site de pays

    disposent donc : • D’une arborescence de pages dédiée (Pages publiques) • D’un ensemble de contenus webs dédiés Les pays se partagent dans le site Global : • Structures de contenus webs • Templates de contenus webs
  11. #LRFRS18 Besoin : identifier des pages Les portlets développées spécfiquement

    sont truffées de redirections vers des pages autres que la page courante ! Comment identifier une même page (Layout) quel que soit le pays et quel que soit l’environnement technique (du poste de dévelopement à la production) ?
  12. #LRFRS18 Identifier des pages : solution - layoudId ? -

    plid ? - uuid ? - friendlyUrl ? Custom field ! nommé pageKey dans ce projet
  13. #LRFRS18 Retrouver une page via un custom field • Le

    plus facile à coder : recherche dans l’index • Le plus robuste : recherche dans la base données Pas de cache sur les dynamic queries = Cache à gérer soi-même
  14. #LRFRS18 Feature flags • L’activation des fonctionnalités par pays est

    définie pour l’essential par l’API REST consommé par le Liferay • Certaines fonctionnalités “pays” portées uniquement par le site web sont activables via des custom fields au niveau site • Ces feature flags sont exploités dans les portlets customs
  15. #LRFRS18 Types de données et responsabilités Contributeurs Agence Digitale Equipe

    développement Contenus « éditoriaux » Contenus « applicatifs » add / update add / update update STR STR TPL TPL Direction Marketing Locale
  16. #LRFRS18 Le casse-tête des contenus « applicatifs » Variations par

    pays Cycle des releases Environnements Mises à jours conjointes Co-existence avec les contenus « éditoriaux » SCM (Git)
  17. #LRFRS18 Custom data loader en bref • Point d’extension application.startup.events

    • Utilise les APIs standards Liferay : - LayoutSetLocalService - LayoutLocalService - JournalArticleLocalService - … • Les sites sont décrits en Java Exemples d’usage des APIs par Olaf https://goo.gl/Th5EYc
  18. #LRFRS18 Data loader : macro architecture DefaultSiteBuilder JapanSiteBuilder CanadaSiteBuilder FranceSiteBuilder

    flags_JP.properties flags_CA.properties flags_FR.properties pages_ja_JP.properties pages_fr_CA.properties pages_fr_FR.properties pages_en_CA.properties JP/*.xml feature flags libellés pages web contents CA/*.xml FR/*.xml
  19. #LRFRS18 Politique d’écrasement des données Identification des pages via la

    pageKey Préservation des propriétés des pages pré-existantes Ecrasement des web contents en version 1.0 uniquement
  20. #LRFRS18 Processus de traduction Nouveau pays = besoin de soumettre

    tous les libéllés pour de nouvelles traductions
  21. #LRFRS18 Excel en ambuscade… Qui va payer et/ou mettre en

    place la plateforme ? Quid de la gestion des accès dans la chaîne de sous- traitance ? Et les habitudes ont la vie dur…
  22. #LRFRS18 Et pour les web contents ? Mise à jour

    des fichiers *.xml de web contents à partir de fichiers properties… …outil en ligne de commande. Mapping XML-Properties !
  23. #LRFRS18 Recommandations SEO Recommandations standards • à appliquer systématiquement •

    souvent connues des développeurs Recommandations avancées par un consultant SEO • spécifiques au contexte du projet • difficiles à challenger… Magie noire ??
  24. #LRFRS18 Partage du nom de domaine www.monsite.com/ja-jp www.monsite.com/fr-fr www.monsite.com/fr-ca www.monsite.com/en-ca

    www.monsite.jp www.monsite.fr www.monsite.ca/fr www.monsite.ca/en www.monsite.com/web/jpn www.monsite.com/web/fra www.monsite.com/web/can/fr www.monsite.com/web/can/en
  25. #LRFRS18 <url> <loc>http://www.monsite.com/fr-fr/recettes</loc> <xhtml:link rel="alternate" hreflang="fr-ca" href="http://www.monsite.com/fr-ca/recettes" /> <xhtml:link rel="alternate"

    hreflang="en-ca" href="http://www.monsite.com/en-ca/recipes" /> <xhtml:link rel="alternate" hreflang="jp" href="http://www.monsite.com/jp/reshipi" /> </url> Références inter-sitemaps • 1 sitemap.xml par pays • Tous les sitemaps sont référencés dans le robots.txt Même PageKey
  26. #LRFRS18 1 2 3 Identifier les exigences Evaluer les fonctionnalités

    standards Développer en spécifique si nécessaire
  27. #LRFRS18 Merci ! Posez vos questions ! Partagez vos expériences

    ! linkedin.com/in/slemarchand @slemarchand Sébastien Le Marchand