Skip to content

MelisCms

The CMS backoffice — sites, page tree, page editor, templates, styles and SEO. Composer package melisplatform/melis-cms.

Purpose

MelisCms is the content-management backoffice of Melis Platform. It provides the site tree explorer, the page editor (Edition, Properties, SEO, Languages tabs), the drag-and-drop plugin zones used to compose page content, and the administration tools for sites, templates, styles, languages, platform IDs, domains and site redirects. It writes the page/site data that melis-engine reads and melis-front renders. For the end-to-end story see Build a site.

Enable it

MelisCms is a standard Laminas module. It ships enabled in the skeleton — its name is listed in config/melis.module.load.php:

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

It requires melisplatform/melis-core, melisplatform/melis-engine and melisplatform/melis-front (declared in its composer.json). It has no install SQL of its own; the CMS tables are part of the platform schema (defined via melis-engine, see below).

Key services

Registered under service_manager in config/module.config.php. Resolve them with $sm->get('<alias>').

Service aliasRole
MelisCmsPageServiceSave a page and its parts: savePage(), savePagePublished(), savePageSaved(), savePageSeo(), savePageLang(), savePageStyle(), savePageTree(), duplicatePage(), saveProperties().
MelisCmsSiteServiceManage sites: saveSite(), getSitePages(), getAllSites(), getSiteById(), getSiteByModule(), getModulePath().
MelisCmsPageGetterServicegetPageContent($pageId) — return the full HTML of a page (uses the page cache under /cache; the page must have been generated at least once).
MelisCmsRightsService (alias MelisCmsRights)Resolve user access to interface elements: isAccessible(), getRightsValues(), createXmlRightsValues(), isActionButtonActive().
MelisCmsSitesDomainsServicePer-environment domains: getEnvironments(), getDomainsBySiteId(), getDomainBySiteIdAndEnv(), saveSiteDomain().
MelisCmsSitesPropertiesServiceSite properties (key/value site settings).
MelisCmsSiteModuleLoadServicePer-site module loading.
MelisCmsMiniTemplateService / MelisCmsMiniTemplateGetterServiceMini-templates (reusable backoffice content blocks) and their categories: createMiniTemplate(), saveCategory(), getTree(), getMiniTemplates().
MelisCmsPageExportService / MelisCmsPageImportServiceExport a page tree to a ZIP and re-import it.

Backoffice

MelisCms adds the CMS section of the backoffice. The interface tree lives in config/app.interface.php / config/app.tools.php; tools are addressed by melisKey. Main entries:

melisKeyTool
meliscms_sitetreeThe site tree explorer (left menu + center page editor).
meliscms_site_toolsSite administration group.
meliscms_tool_sitesSites tool.
meliscms_tool_templatesTemplates tool (ToolTemplate controller).
meliscms_tool_stylesStyles tool (ToolStyle).
meliscms_tool_languageLanguages tool.
meliscms_tool_platform_idsPlatform IDs tool.
meliscms_tool_site_301Site redirect (301) tool.
meliscms_mini_template_managerMini-template manager.

The page editor controllers include PageController, PageEditionController, PagePropertiesController, PageSeoController, PageLanguagesController and PageDuplicationController. FrontPluginsController powers the in-editor plugin menu and the plugin-configuration modal used by the drag-and-drop zones.

Dashboard plugin

MelisCmsPagesIndicatorsPlugin (module meliscms, action pageIndicators) is a backoffice dashboard widget that surfaces page indicators. See Plugins for the dashboard plugin model.

Front office

MelisCms is a backoffice module and ships no templating plugins or view helpers of its own — front rendering is handled by melis-engine and melis-front. What it provides on the editing side is the plugin authoring surface: editors drop content blocks into a page's MelisDragDropZone, and FrontPluginsController renders the plugin menu, modal forms and saves the chosen parameters into the page content. Form-element factories such as MelisCmsPluginSiteSelect and MelisCmsPluginSiteModuleSelect are reused by other modules' plugin forms.

Database tables

MelisCms operates on the core CMS schema (the table gateways are defined in melis-engine and consumed by the CMS services):

TableHolds
melis_cms_siteSites.
melis_cms_site_configPer-site configuration.
melis_cms_site_domainPer-environment domains.
melis_cms_site_homeSite home page mapping.
melis_cms_site_langsLanguages enabled per site.
melis_cms_page_treeThe page tree (hierarchy).
melis_cms_page_savedSaved (draft) page content.
melis_cms_page_publishedPublished page content.
melis_cms_page_langPage language links.
melis_cms_page_seoPer-page SEO.
melis_cms_page_stylePer-page styles.
melis_cms_page_default_urlsDefault/canonical page URLs.
melis_cms_templateTemplates.
melis_cms_styleStyles.
melis_cms_langCMS languages.
melis_cms_platform_idsPlatform IDs (environments).
melis_cms_mini_tpl_category, melis_cms_mini_tpl_site_category, melis_cms_mini_tpl_category_templateMini-template categories and links.

Example

Save a page and read back its rendered HTML:

php
// In a controller / service with the service manager available
$pageSrv = $sm->get('MelisCmsPageService');
$pageId  = $pageSrv->savePage($pageTree, $pagePublished, $pageSaved, $pageSeo, $pageLang, $pageStyle);

$pageGetter  = $sm->get('MelisCmsPageGetterService');
$pageContent = $pageGetter->getPageContent($pageId); // full HTML (page must have been generated once)

Key files

ConcernPath
Module config (services, controllers, dashboard plugin)vendor/melisplatform/melis-cms/config/module.config.php
Backoffice interface treevendor/melisplatform/melis-cms/config/app.interface.php
Tools (templates, styles, …)vendor/melisplatform/melis-cms/config/app.tools.php
Page servicevendor/melisplatform/melis-cms/src/Service/MelisCmsPageService.php
Site servicevendor/melisplatform/melis-cms/src/Service/MelisCmsSiteService.php
Page getter (HTML/cache)vendor/melisplatform/melis-cms/src/Service/MelisCmsPageGetterService.php
Rights servicevendor/melisplatform/melis-cms/src/Service/MelisCmsRightsService.php
Page editor plugin controllervendor/melisplatform/melis-cms/src/Controller/FrontPluginsController.php
Dashboard pluginvendor/melisplatform/melis-cms/src/Controller/DashboardPlugins/MelisCmsPagesIndicatorsPlugin.php
Event listenersvendor/melisplatform/melis-cms/src/Listener/

See also