Skip to content

MelisCmsSlider

Backoffice slider / carousel manager with a front-office templating plugin to display sliders on pages. Package melisplatform/melis-cms-slider.

Purpose

MelisCmsSlider provides a back-office tool to build sliders (named carousels of ordered slides — image, title, subtitles, link) and a MelisCmsSliderShowSliderPlugin content block that renders a chosen slider on any front-office page. It also ships a reusable slider picker form element that other modules (News, Blog) embed to attach a slider to a content item.

Enable it

Add to config/melis.module.load.php:

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

Requires: melis-core, melis-engine, melis-front, melis-cms (^5.2). The module ships dbdeploy: true so its tables are created/updated by melis-dbdeploy.

Key services

AliasRole
MelisCmsSliderServiceBusiness logic for sliders and slides; fires meliscmsslider_* events.
MelisCmsSliderTableTable gateway for melis_cms_slider.
MelisCmsSliderDetailTableTable gateway for melis_cms_slider_details.

MelisCmsSliderService extends MelisGeneralService and exposes:

MethodRole
getSlider($sliderId, $status)One slider with its slides; pass 1 to return active slides only.
getSliderByPageId($pageId, $status)Slider linked to a page id, with its slides.
getSliderList($start, $limit, $order, $search)Paginated/searchable list of sliders.
getSliderDetails($sliderDetailId)A single slide row.
saveSlider($data, $sliderId)Create or update a slider; returns the slider id.
saveSliderDetails($slideData, $detailId)Create or update a slide.
updateSliderDetailsOrdering($detailId, $newOrder)Reorder a slide.
deleteSlider($sliderId)Delete a slider and all its slides.
deleteSliderDetails($sliderDetailId)Delete a single slide.

getSlider() / getSliderByPageId() return a MelisCmsSlider\Entity\MelisCmsSlider entity whose getSlider() gives the container row and getSliderDetails() gives the slides.

Event naming note: each method fires meliscmsslider_service_*_start / _end events, but several write methods reuse another method's event names in the current source. Specifically, saveSlider fires the get_slider_details events, and deleteSliderDetails / updateSliderDetailsOrdering reuse deleteSlider's delete_details events — so a listener on meliscmsslider_service_delete_details_end also fires on reorders.

Micro-services (config/app.microservice.php) expose getSliderList, getSlider, getSliderDetails, getSliderByPageId.

Backoffice

The Slider manager is available in the back-office left menu under CMS tools. It works as a three-level drill-down:

LevelControllerRole
Slider listMelisCmsSliderListControllerLists all sliders platform-wide; create / rename modal.
Slider slidesMelisCmsSliderDetailsControllerLists a slider's slides; add / edit / delete / reorder; image upload to /media/sliders/.
SetupMelisSetupControllerFirst-time module setup.

Tool and DataTable configuration lives in config/app.tools.php (two tables); the slide form (fields mcsdetail_title, mcsdetail_sub1sub3, mcsdetail_link, mcsdetail_img, mcsdetail_order) is in config/app.forms.php.

Front office

ItemRole
MelisCmsSliderShowSliderPlugin (controller plugin)Fetches the configured slider via MelisCmsSliderService and renders it through the chosen template. Config: config/plugins/MelisCmsSliderShowSliderPlugin.config.php — one Properties tab with template_path and sliderId. Default template: view/melis-cms-slider/plugins/showslider.phtml.
MelisCmsSliderPlugin (view helper)MelisCmsSliderHelper — renders the plugin from a phtml template.
CmsSliderSelect (form element)Select populated with available sliders; factory src/Form/Factory/CmsSliderSelectFactory.php. Used in the plugin option form and embedded by News / Blog.

Reusable picker interfaces: meliscmsslider_select_slider (renderSelectSliderAction) for News, meliscmsslider_select_slider_blog for Blog.

Consumers: MelisCmsNews persists the chosen slider in cnews_slider_id and ships a listener that detaches a deleted slider from any news using it; Blog uses cblog_slider_id.

Database tables

TableHolds
melis_cms_sliderA slider: mcslide_id, mcslide_name, mcslide_page_id, mcslide_date.
melis_cms_slider_detailsA slide: mcsdetail_id, FK mcsdetail_mcslider_id, mcsdetail_status, mcsdetail_title, mcsdetail_sub1sub3, mcsdetail_link, mcsdetail_img, mcsdetail_order.

Example

php
$slider = $this->getServiceManager()->get('MelisCmsSliderService');

// Fetch one slider with active slides only
$one    = $slider->getSlider($sliderId, 1);

// Fetch the slider tied to a page
$byPage = $slider->getSliderByPageId($pageId, 1);

// Paginated list
$list   = $slider->getSliderList(0, 10, 'mcslide_id', null);

// Create / update
$id     = $slider->saveSlider($data, $sliderId);
$did    = $slider->saveSliderDetails($slideData, $detailId);

// Reorder
$slider->updateSliderDetailsOrdering($detailId, $newOrder);

// Delete slider + all its slides
$slider->deleteSlider($sliderId);

Listening to a service event:

php
$sharedEvents->attach(
    'MelisCmsSlider',
    'meliscmsslider_service_delete_details_end',
    $fn,
    50
);

Key files

ConcernPath
Module wiringvendor/melisplatform/melis-cms-slider/config/module.config.php
Backoffice interface / toolsvendor/melisplatform/melis-cms-slider/config/app.interface.php · app.tools.php
Slide formvendor/melisplatform/melis-cms-slider/config/app.forms.php
Micro-service configvendor/melisplatform/melis-cms-slider/config/app.microservice.php
Templating plugin configvendor/melisplatform/melis-cms-slider/config/plugins/MelisCmsSliderShowSliderPlugin.config.php
Servicevendor/melisplatform/melis-cms-slider/src/Service/MelisCmsSliderService.php
Entityvendor/melisplatform/melis-cms-slider/src/Entity/MelisCmsSlider.php
Table gatewaysvendor/melisplatform/melis-cms-slider/src/Model/Tables/
Slider picker factoryvendor/melisplatform/melis-cms-slider/src/Form/Factory/CmsSliderSelectFactory.php
View helpervendor/melisplatform/melis-cms-slider/src/View/Helper/MelisCmsSliderHelper.php
Default front templatevendor/melisplatform/melis-cms-slider/view/melis-cms-slider/plugins/showslider.phtml

See also: Module reference · Plugins · Build a site