Skip to content

MelisCmsCategory2

Catégories de contenu multi-sites et multilingues pour le CMS — paquet melisplatform/melis-cms-category2.

Présentation

MelisCmsCategory2 fournit un système de catégories hiérarchique dans le backoffice Melis. Les catégories forment un arbre (chaque nœud pointe vers un parent), portent des traductions par langue (nom et description), peuvent être associées à un ou plusieurs sites, disposent d'une période de validité et d'un statut, et peuvent contenir des fichiers médias. Le module embarque un plugin de templating front-office pour afficher un arbre de catégories dans une page, ainsi qu'un sélecteur de catégorie réutilisable intégré par d'autres modules (par ex. News, Commerce) pour classer leurs enregistrements.

Activation

Ajouter dans config/melis.module.load.php :

php
return [
    'MelisCmsCategory2',
];

Nécessite melis-core et melis-cms (^5.2). Le module est compatible dbdeploy, ses tables sont donc créées au déploiement. melis-engine est également requis pour le rendu front.

Services principaux

Alias de serviceRôle
MelisCmsCategory2ServiceService principal des catégories : créer/lire les nœuds, récupérer l'arbre, gérer les traductions et les liens de site.
MelisCmsCategory2MediaServiceStockage des fichiers par catégorie sur le disque et en base de données.

Méthodes notables de MelisCmsCategory2Service :

  • getCategoryTreeview($fatherId, $langId, $onlyValid, $siteId) — arbre récursif.
  • getCategoryById($categoryId, $langId, $onlyValid) — nœud de catégorie complet.
  • getCategoryNameById($categoryId, $langId) — recherche du nom.
  • getCategoryListByIdRecursive(...) — liste récursive à plat.
  • getCategoryTranslationById(...) — ligne de traduction unique.
  • getFirstLevelCategoriesPerSite($siteId, $langId), getCategoriesPerSite($siteId, $langId).
  • getCategoryMediaById(...) — lignes de médias pour un nœud.
  • saveCategory(...) — créer ou mettre à jour un nœud.
  • saveCategoryTexts($categoryId, $catLangId, $postData, $id) — enregistrer une ligne de traduction.
  • saveCategorySites($categoryId, $siteId, $id, $toDelete) — lier ou délier un site.
  • reOrderCategories($parentId, $currentOrder) — persister le glisser-déposer pour réordonner.
  • validateDates($dateStart, $dateEnd).

MelisCmsCategory2MediaService gère la partie système de fichiers : uploadFile, deleteFile, getMediaFilesByCategoryId, getFilesInDir, removeCategoryDir.

Back-office

Le gestionnaire de catégories est accessible depuis la section des outils CMS du menu gauche du back-office (icône fa-th-list). Il affiche les catalogues sous forme d'accordéon, chacun contenant son jsTree de catégories, avec une barre de recherche et un filtre par site. Contrôleurs :

ContrôleurUtilisation
MelisCmsCategoryListControllerListe des catégories, vue en arbre, filtre par site, recherche, ajout de catalogue/catégorie.
MelisCmsCategoryControllerLe formulaire d'édition de catégorie (traductions, statut, dates de validité, sites).
MelisCmsCategoryMediaControllerL'onglet Média — parcourir, téléverser, supprimer les médias d'une catégorie.
MelisCmsCategorySelectControllerLa modale de sélection de catégorie, réutilisée par d'autres modules.

L'élément de formulaire MelisCmsCategorySelect (factory MelisCmsCategorySelectFactory) permet à tout module d'intégrer un sélecteur de catégorie dans ses propres formulaires.

Front office

  • Plugin de templating MelisCmsCategoryDisplayCategoriesPlugin — affiche un arbre de catégories dans une page. La configuration (config/plugins/MelisCmsCategoryDisplayCategoriesPlugin.config.php) expose un onglet Propriétés avec trois champs : template_path, site_id, category_start. Template par défaut : MelisCmsCategory2/default (view/.../plugins/default.phtml).
  • Aide de vue renderTreeRec — affiche récursivement un tableau d'arbre de catégories dans une vue.

Utilisation directe dans le code :

php
$display = $this->MelisCmsCategoryDisplayCategoriesPlugin();
echo $display->render([
    'template_path' => ['MelisCmsCategory2/default'],
    'site_id'        => 1,
    'category_start' => 1,
]);

Tables de base de données

TableContenu
melis_cms_category2Nœud de catégorie : cat2_id, cat2_father_cat_id, ordre, statut, référence, dates de validité, audit.
melis_cms_category2_transTraduction par langue : nom et description, indexée par catt2_id.
melis_cms_category2_sitesLien catégorie-site, indexé par cats2_id.
melis_cms_category2_mediaMédia attaché à une catégorie : catm2_type, catm2_path, catm2_cat_id.

Un nœud racine de départ (cat2_id = 1, "My catalog" / "Mon catalogue") est inséré à l'installation.

Exemple

Récupérer et afficher l'arbre de catégories depuis n'importe quel contrôleur ou service :

php
$cat = $this->getServiceManager()->get('MelisCmsCategory2Service');

// Recursive tree — valid categories only, scoped to a site
$tree = $cat->getCategoryTreeview($fatherId, $langId, true, $siteId);

// Single node with translations
$node = $cat->getCategoryById($categoryId, $langId, false);

// Name lookup
$name = $cat->getCategoryNameById($categoryId, $langId);

// All categories for a site
$site = $cat->getCategoriesPerSite($siteId, $langId);

Fichiers clés

ÉlémentChemin
Config du module (services, contrôleurs, plugin, aide de vue)vendor/melisplatform/melis-cms-category2/config/module.config.php
Arbre des outils / interfaces back-officevendor/melisplatform/melis-cms-category2/config/app.interface.php
Service principalvendor/melisplatform/melis-cms-category2/src/Service/MelisCmsCategoryService.php
Service médiavendor/melisplatform/melis-cms-category2/src/Service/MelisCmsCategoryMediaService.php
Factory de l'élément de formulaire sélecteur de catégorievendor/melisplatform/melis-cms-category2/src/Form/Factory/MelisCmsCategorySelectFactory.php
Plugin de templatingvendor/melisplatform/melis-cms-category2/src/Controller/Plugin/MelisCmsCategoryDisplayCategoriesPlugin.php
Config du pluginvendor/melisplatform/melis-cms-category2/config/plugins/MelisCmsCategoryDisplayCategoriesPlugin.config.php
SQL d'installationvendor/melisplatform/melis-cms-category2/install/sql/

Voir aussi : melis-cms, melis-core, melis-cms-news