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.