Skip to content

MelisFront

Le moteur front-office qui affiche les sites Melis aux visiteurs — routage, rendu, SEO, zones de glisser-déposer et les principaux view helpers du front. Paquet melisplatform/melis-front.

Objectif

MelisFront est le runtime qui transforme une page Melis publiée en réponse HTML. Il fait correspondre l'URL entrante à une page, construit le layout de la page, exécute les plugins de templating qu'un éditeur a déposés dans les zones de glisser-déposer de la page, puis en restitue le rendu. Il prend aussi en charge les préoccupations transversales du front-office : routage & méta SEO, le sitemap, les bannières RGPD, la minification des assets, les traductions de site et les view helpers MelisTag / MelisDragDropZone / MelisMenu utilisés dans les templates de site. C'est le pendant de melis-cms (édition en backoffice) et de melis-engine (services de page/données). Voir le guide Construire un site pour le workflow côté éditeur.

Activation

MelisFront est un module Laminas standard listé dans config/melis.module.load.php (il est activé par défaut dans le skeleton) :

php
return [
    // …
    'MelisFront',
    // …
];

Il requiert melisplatform/melis-core et, à l'exécution, les services de page/données de melis-engine ainsi que les données CMS de melis-cms. Son config/module.load.php charge les composants Laminas dont il a besoin (Laminas\Navigation, Laminas\I18n, Laminas\Router, Laminas\Form, Laminas\Db, …).

Services clés

Enregistrés comme alias service_manager dans config/module.config.php :

Alias de serviceRôle
MelisFrontHeadMet à jour le <title> / la méta description à partir du contenu généré (updateTitleAndDescription($idPage, $contentGenerated)) et injecte les ressources CSS/JS des plugins (updatePluginsRessources($content)).
MelisSiteConfigServiceLit la configuration par site — getSiteConfigByKey($key, $pageId, $section, $language), getSiteConfigByPageId($pageId, $langLocale), getSiteConfig($siteId, $returnAll), getConfig($siteName).
MelisSiteTranslationServiceCRUD + recherche des clés/textes de traduction par site (getSiteTranslation(), getText(), saveTranslation(), cacheTranslations($siteId), …). Lit via MelisSiteTranslationTable (fourni par la couche CMS).
MelisTranslationServiceTraductions backoffice/locale — getTranslationsByLocale($locale), translateByLocale($key, $locale), boTranslate($key).
MinifyAssetsBundle & minifie les CSS/JS d'un site — minifyAssets($siteId), minifySitesVendorAssets(), getSiteBundleData($siteId).
MelisFrontNavigationFabrique qui construit l'arbre de navigation du front (Navigation\Factory\MelisFrontNavigationFactory).

Backoffice

MelisFront est un module front-office : il n'ajoute aucun outil de backoffice propre (pas d'entrée app.toolstree). Sa surface côté backoffice est le mode de rendu éditeur — lorsqu'une page est ouverte dans l'éditeur de page du CMS, MelisFront la restitue en renderMode=melis (et preview) afin que les plugins affichent leurs contrôles d'édition en place. Les endpoints de glisser-déposer (/dnd-layout, /dnd-remove, /dnd-update-order) et la route AJAX /melispluginrenderer desservent l'interface de l'éditeur.

Front office

Plugins de templating (controller plugins)

Blocs de contenu intégrés que les éditeurs déposent dans une MelisDragDropZone, enregistrés sous controller_plugins et configurés dans config/plugins/*.config.php :

PluginBloc
MelisFrontTagHtmlPlugin / MelisFrontTagTextareaPlugin / MelisFrontTagMediaPluginBalises de contenu éditables en place (HTML, texte, média) — la famille MelisTag.
MelisFrontDragDropZonePluginUne zone de dépôt qui héberge d'autres plugins (le conteneur de layout).
MelisFrontMenuPluginRestitue un menu de site à partir de l'arbre des pages.
MelisFrontBreadcrumbPluginRestitue un fil d'Ariane.
MelisFrontShowListFromFolderPluginListe les éléments d'un dossier média.
MelisFrontBlockSectionPluginUn bloc/section partagé et réutilisable.
MelisFrontGenericContentPluginBloc de contenu générique configurable.
MelisFrontGdprBannerPlugin / MelisFrontGdprRevalidationPluginBannière de consentement RGPD & revalidation.
MiniTemplatePluginMini-template léger en ligne.

Ces plugins étendent MelisEngine\Controller\Plugin\MelisTemplatingPlugin ; voir Plugins pour écrire les vôtres. (MelisFrontSearchResultsPlugin existe mais est commenté en attendant un backend de recherche Laminas.)

View helpers

Enregistrés comme alias view_helpers — à utiliser dans les .phtml d'un site :

Alias du helperUsage
MelisDragDropZoneRestitue une zone de glisser-déposer où sont placés les plugins.
MelisTagRestitue une balise de contenu éditable en place.
MelisMenuRestitue un menu de navigation.
MelisLink / MelisPageLangLink / MelisHomePageLinkConstruisent les URL de page (lien, version de langue, accueil).
siteTranslateTraduit une clé de traduction de site.
boTranslateTraduit une clé backoffice/locale.
SiteConfigLit une valeur de la configuration du site.
MelisGdprBannerPlugin / MelisListFromFolderPluginRestituent la bannière RGPD / la liste de dossier.

Routage & listeners

config/module.config.php définit les routes du front — la route de page (Regex sur .../id/{idpage}), les routes de sitemap (sitemap.xml / sitemap_index / par langue), /melispluginrenderer, /minify-assets et les endpoints de glisser-déposer. Le pipeline de rendu est assemblé par les listeners attachés dans src/Module.php, notamment MelisFrontLayoutListener, MelisFrontPluginsToLayoutListener, les listeners SEO (MelisFrontSEORouteListener, MelisFrontSEOMetaPageListener, MelisFrontSEODispatchRouterRegularUrlListener), MelisFront404CatcherListener / MelisFront404To301Listener, MelisFrontPageCacheListener, MelisFrontMinifiedAssetsCheckerListener, MelisFrontHomePageRoutingListener et MelisFrontXSSParameterListener.

Tables de base de données

MelisFront ne livre aucun script SQL d'installation et ne possède aucune table melis_*. Les tables de pages, sites, langues et traductions qu'il lit (par ex. MelisSiteTranslationTable) sont fournies par melis-cms / melis-engine.

Exemple

Usage typique dans un template front (dans un .phtml d'un module de site) :

php
<?php // un template de page de site ?>
<title><?= $this->SiteConfig('site_title', $idPage) ?></title>

<?= $this->MelisMenu($idPage) ?>

<main>
    <?= $this->MelisDragDropZone('main_zone', $idPage) ?>
</main>

<footer><?= $this->siteTranslate('footer_copyright') ?></footer>

Fichiers clés

SujetChemin
Config du module (routes, services, plugins, helpers, caches)vendor/melisplatform/melis-front/config/module.config.php
Config app du front (RGPD, layouts DnD)vendor/melisplatform/melis-front/config/app.interface.php
Configs de pluginsvendor/melisplatform/melis-front/config/plugins/
Listeners (rendu / SEO / cache)vendor/melisplatform/melis-front/src/Module.php, vendor/melisplatform/melis-front/src/Listener/
Servicesvendor/melisplatform/melis-front/src/Service/
Plugins de templatingvendor/melisplatform/melis-front/src/Controller/Plugin/
View helpersvendor/melisplatform/melis-front/src/View/Helper/
Contrôleurs du frontvendor/melisplatform/melis-front/src/Controller/