Frontend - gulp, themes, JS, cookies
Node 22.x (nvm use 22.12.0). Build via gulp (src/Web/gulpfile.js).
Commandes
bash
cd src/Web
npm install
npm run build # gulp build : compileSCSS + bundleJS (parallele)
npm run dev # gulp watch : recompile a chaque changementSCSS (themes)
- Entrees :
styles/themes/**/main.scss(3 themes : default, icogne, l-info). - Pipeline : Dart Sass ->
postcss([cssnano])(minification) + sourcemaps ->wwwroot/css/{theme}/main.css. - Structure d'un theme :
main.scss,_variables.scss,_bootstrap_custom.scss,_utilities.scss, et dossiersbase/,layout/,pages/,elements/,sections/. Bootstrap 5 personnalise par theme ; couleur d'accent differente par site.
JavaScript
- Entree unique :
scripts/index.js. - Pipeline : browserify + babelify (
@babel/preset-env) + uglify + sourcemaps ->wwwroot/js/main.js. - Modules (
scripts/modules/) :activityGallery,blogPage,cookiesConsent,featuredTestimonials,geolocatedMap,glightbox,header,maps,mobileMenu,multimediaBlock,newsletter,search,socialShare.cookiesConsentetglightboxsont charges en import dynamique.
Image pleine largeur dans le RTE (contenu local)
Option d'affichage disponible dans le Rich Text Editor (RTE) local d'Umbraco (backoffice), pour afficher une image sans crop sur toute la largeur du contenu. Ne concerne que le contenu local (RTE des pages) : ni les articles headless, ni le imageBlock (image recadree via crops).
- Plugin TinyMCE :
App_Plugins/Backoffice/tinymce/plugins/imagefullwidth/plugin.js(miroir du pluginstickytoolbar). Ajoute un bouton basculeimagefullwidthbtn(« Pleine largeur ») dans la barre d'outils contextuelle qui apparait quand une image est selectionnee dans le RTE ; il ajoute/retire la classe CSSrte-img-fullsur la balise<img>. - Enregistrement : declare dans
appsettings.json, cleUmbraco:CMS:RichTextEditor:CustomConfig:external_plugins, meme pattern questickytoolbar. - Rendu front (les 3 themes) : partial SCSS partage
styles/base/elements/_rteImage.scss(regle.rte img.rte-img-full { display:block; width:100%; height:auto; }), importe via@use "../../base/elements/rteImage";dans lemain.scssde chaque theme (default, icogne, l-info). - Apercu backoffice : regle equivalente ajoutee dans
wwwroot/css/rte.csspour que l'editeur voie le rendu pleine largeur directement dans l'iframe TinyMCE.
Consentement cookies (regle importante)
Tout outil tiers non essentiel (analytics, marketing) ne doit se charger qu'apres acceptation du consentement non-fonctionnel.
- Banniere : partial
Views/Partials/layout/_cookiesConsent.cshtml, traductions issues du dictionnaire Umbraco (JSON#cc_translations), inclus dans_MasterLayout.cshtml(et layouts par skin). - Librairie :
cookieconsent.umd.js(categoriesnecessary/analytics). - Module
scripts/modules/cookiesConsent.js:init()configure la librairie ;updateGTMConsent()met a jour l'etat de consentement GTM (gtag('consent', 'update', { analytics_storage: ... })) selon la categorie analytics.
Ajouter un outil marketing/analytics
- Creer un partial dans
Views/Partials/layout/marketing/. - L'inclure conditionnellement dans
_MasterLayout.cshtml(selon le cookie de consentement). - Mettre a jour
cookiesConsent.js(acceptCookies()/updateGTMConsent()) pour injecter le script a l'acceptation (sinon il ne s'activera qu'au prochain reload).
Note : verifier que GA4 (marketing/_googleAnalytics4.cshtml) est bien conditionne au consentement et non charge inconditionnellement.
Contributors
No contributors
Changelog
No recent changes

