Glossaire

Définitions des termes spécifiques à Blackcube CMS

Ce glossaire définit les concepts et termes spécifiques à Blackcube. Chaque définition est volontairement courte et renvoie vers la documentation détaillée quand nécessaire.

Les termes sont organisés par thématique pour faciliter la compréhension du système. Blackcube utilise une terminologie précise pour distinguer clairement les concepts : Type vs BlocType, Node vs Composite, etc. Maîtriser ces termes permet de comprendre l'architecture et d'utiliser la documentation efficacement.

Concepts fondamentaux

Type

Définit comment un contenu sera rendu. Un Type associe un controller/action Yii2 à des contraintes sur les entités autorisées (Node, Composite, Tag, Category) et liste les BlocTypes autorisés pour ce Type. Configuration dans le backoffice.

BlocType (Type de bloc)

Définit la structure des données saisies via JSON Schema. Un BlocType décrit les champs disponibles pour la saisie de contenu : titre, texte, image, etc. Validation automatique des données selon le schéma. Configuration dans le backoffice.

Bloc

Instance concrète d'un BlocType. Un bloc contient les données réelles (titre, texte, image) pour un contenu spécifique. Un bloc appartient à un seul contenu. Créer 10 pages avec le BlocType "titre" crée 10 blocs différents.

JSON Schema

Standard pour décrire et valider des structures JSON. Utilisé par les BlocTypes pour définir les champs disponibles, leurs types, et les contraintes de validation. Blackcube valide automatiquement les blocs selon leur JSON Schema.

ElasticModel

Couche technique qui stocke des données structurées en JSON tout en les manipulant comme des propriétés PHP classiques. Combine flexibilité du JSON avec puissance des ActiveRecord Yii2. Permet l'évolution du modèle de données sans migration SQL.

Entités de contenu

Node (Rubrique)

Contenu organisé en arborescence hiérarchique. Utilisé pour les rubriques de site, la navigation structurée, les pages de liste. Un Node peut contenir des blocs et lister des Composites. Ordre manuel des Composites listés. Navigation ultra-rapide via Hazel Tree.

Composite (Article)

Contenu libre sans hiérarchie. Utilisé pour les articles de blog, actualités, études de cas, pages autonomes. Un Composite peut contenir des blocs et être lié à un Node pour apparaître dans une liste. Peut être taggué.

Tag (Étiquette)

Étiquette pour catégoriser les contenus de manière transversale. Un Tag peut contenir des blocs et lister les Composites ou Nodes taggués. Ordre automatique des listes. Utilisé pour organiser par thème, format, média, etc.

Category (Catégorie)

Regroupement de Tags par famille. Une Category peut contenir des blocs, lister ses Tags, et lister tous les contenus des Tags de la catégorie. Navigation à deux niveaux : Category → Tags → Contenus. Ordre automatique des listes.

Routing et URLs

Slug

URL unique associée à un contenu. Un slug définit le host (optionnel) et le path. Le couple (host, path) doit être unique. Blackcube cherche le slug correspondant à l'URL demandée, exécute le controller/action défini dans le Type, et injecte le contenu automatiquement.

Redirection

Slug spécial qui redirige vers une autre URL. Utilisé pour migrer d'anciennes URLs vers de nouvelles sans perdre le référencement. Code HTTP configurable (301, 302, etc.). Gestion via le backoffice.

BlackcubeController

Classe de base pour les controllers Blackcube. Fournit la propriété $this->element qui contient le contenu injecté automatiquement. Les controllers doivent étendre BlackcubeController ou implémenter BlackcubeControllerInterface.

Système de blocs

Ordre des blocs

Position d'un bloc dans la liste des blocs d'un contenu. Ordre géré manuellement dans le backoffice via des contrôles dédiés. Numérotation automatique et séquentielle (1, 2, 3, 4) recalculée à chaque sauvegarde.

Validation de bloc

Vérification automatique qu'un bloc respecte son JSON Schema. Un bloc invalide reste en brouillon (active = 0) et n'apparaît jamais sur le site public. Le contributeur doit corriger les erreurs avant publication.

Types autorisés

Liste des BlocTypes qu'un Type peut utiliser. Configuration dans le backoffice : un Type "page-standard" autorise les BlocTypes "titre", "texte", "image". Les contributeurs ne voient que les BlocTypes autorisés pour le Type du contenu en cours.

Techniques avancées

Hazel Tree

Système d'arborescence ultra-performant basé sur les fractions rationnelles. Récupère toute une branche d'arborescence en une seule requête. Navigation instantanée même avec des milliers de pages. Implémentation des travaux de Dan Hazel. Automatique, aucune action nécessaire.

Cache granulaire

Système de cache qui invalide uniquement les données modifiées. Blackcube utilise DbQueryDependency de Yii2 : chaque requête définit ses dépendances (tables à surveiller), le cache s'invalide automatiquement quand une table change. Modification d'un article invalide uniquement le cache de cet article.

Flysystem

Système de gestion de fichiers abstrait. Supporte stockage local et S3. Les fichiers uploadés ont un préfixe @blackcubefs/ et doivent être traités via les helpers Html::cacheFile() ou Html::cacheImage().

Helper

Classe utilitaire pour simplifier l'affichage et la manipulation du contenu. Blackcube fournit trois helpers principaux : Element (filtrage de blocs), Html (gestion fichiers uploadés), Quill (nettoyage HTML WYSIWYG).

Backoffice

RBAC

Role-Based Access Control. Système de permissions granulaires pour le backoffice. Permissions par module (Node, Composite, Tag, etc.) et par action (CREATE, UPDATE, DELETE, VIEW, EXPORT, IMPORT). Les permissions contrôlent uniquement l'accès au backoffice, pas le front-end.

Mode prévisualisation

Mode permettant aux administrateurs de voir tous les contenus (actifs, inactifs, hors dates, brouillons). Toggle via l'icône œil dans le header du backoffice. En mode normal, seuls les contenus actifs et dans leurs dates sont visibles.

Module Admin

Module Blackcube qui fournit l'interface d'administration. Configurable via adminTemplatesAlias pour personnaliser les templates et additionalAssets pour ajouter CSS/JS. Extensible pour ajouter des fonctionnalités métier.

Paramètres

Configuration stockée dans le CMS. Utilisée pour éviter de hardcoder les IDs de BlocTypes et autres valeurs. Accès via Parameters::get('DOMAINE', 'NOM'). Cache automatique en mémoire pour la durée de la requête HTTP.

Divers

Yii2

Framework PHP sur lequel Blackcube est construit. Blackcube s'intègre dans n'importe quelle application Yii2 (basic, advanced, personnalisée). Le routing Blackcube est prioritaire, passe la main à Yii2 si le slug n'existe pas.

BSD 3-clause

Licence open source permissive. Liberté totale d'utilisation, modification et redistribution. Trois clauses obligatoires : conserver le copyright, conserver la licence, ne pas utiliser le nom sans autorisation.

Module Core

Module Blackcube qui gère le contenu structuré, le routing automatique, et le système de cache granulaire. Configuration dans modules → blackcube. Obligatoire pour utiliser Blackcube.