This glossary defines concepts and terms specific to Blackcube. Each definition is deliberately short and refers to detailed documentation when necessary.
Terms are organized by theme to facilitate system understanding. Blackcube uses precise terminology to clearly distinguish concepts: Type vs BlocType, Node vs Composite, etc. Mastering these terms allows understanding architecture and using documentation effectively.
Fundamental concepts
Type
Defines how content will be rendered. A Type associates a Yii2 controller/action with constraints on authorized entities (Node, Composite, Tag, Category) and lists authorized BlocTypes for this Type. Configuration in backoffice.
BlocType (Block Type)
Defines data structure entered via JSON Schema. A BlocType describes available fields for content entry: title, text, image, etc. Automatic data validation according to schema. Configuration in backoffice.
Bloc (Block)
Concrete instance of a BlocType. A block contains real data (title, text, image) for specific content. A block belongs to single content. Creating 10 pages with "title" BlocType creates 10 different blocks.
JSON Schema
Standard for describing and validating JSON structures. Used by BlocTypes to define available fields, their types, and validation constraints. Blackcube automatically validates blocks according to their JSON Schema.
ElasticModel
Technical layer that stores structured data in JSON while manipulating them like classic PHP properties. Combines JSON flexibility with power of Yii2 ActiveRecord. Allows data model evolution without SQL migration.
Content entities
Node (Section)
Content organized in hierarchical tree. Used for site sections, structured navigation, list pages. A Node can contain blocks and list Composites. Manual order of listed Composites. Ultra-fast navigation via Hazel Tree.
Composite (Article)
Free content without hierarchy. Used for blog articles, news, case studies, autonomous pages. A Composite can contain blocks and be linked to Node to appear in list. Can be tagged.
Tag (Label)
Label for cross-categorizing content. A Tag can contain blocks and list tagged Composites or Nodes. Automatic list order. Used to organize by theme, format, media, etc.
Category
Grouping of Tags by family. A Category can contain blocks, list its Tags, and list all content of category Tags. Two-level navigation: Category → Tags → Content. Automatic list order.
Routing and URLs
Slug
Unique URL associated with content. A slug defines host (optional) and path. The (host, path) pair must be unique. Blackcube searches for slug corresponding to requested URL, executes controller/action defined in Type, and automatically injects content.
Redirection (Redirect)
Special slug that redirects to another URL. Used to migrate old URLs to new ones without losing SEO. Configurable HTTP code (301, 302, etc.). Management via backoffice.
BlackcubeController
Base class for Blackcube controllers. Provides $this->element property containing automatically injected content. Controllers must extend BlackcubeController or implement BlackcubeControllerInterface.
Block system
Block order
Position of block in content's block list. Order managed manually in backoffice via dedicated controls. Automatic and sequential numbering (1, 2, 3, 4) recalculated at each save.
Block validation
Automatic verification that block respects its JSON Schema. Invalid block remains draft (active = 0) and never appears on public site. Contributor must correct errors before publication.
Authorized types
List of BlocTypes a Type can use. Configuration in backoffice: "standard-page" Type authorizes "title", "text", "image" BlocTypes. Contributors only see BlocTypes authorized for current content Type.
Advanced techniques
Hazel Tree
Ultra-performant tree system based on rational fractions. Retrieves entire tree branch in single query. Instant navigation even with thousands of pages. Implementation of Dan Hazel's work. Automatic, no action necessary.
Granular cache
Cache system that only invalidates modified data. Blackcube uses Yii2's DbQueryDependency: each query defines its dependencies (tables to monitor), cache automatically invalidates when table changes. Modifying article invalidates only that article's cache.
Flysystem
Abstract file management system. Supports local and S3 storage. Uploaded files have @blackcubefs/ prefix and must be processed via Html::cacheFile() or Html::cacheImage() helpers.
Helper
Utility class to simplify content display and manipulation. Blackcube provides three main helpers: Element (block filtering), Html (uploaded file management), Quill (WYSIWYG HTML cleaning).
Backoffice
RBAC
Role-Based Access Control. Granular permission system for backoffice. Permissions per module (Node, Composite, Tag, etc.) and per action (CREATE, UPDATE, DELETE, VIEW, EXPORT, IMPORT). Permissions control only backoffice access, not front-end.
Preview mode
Mode allowing administrators to see all content (active, inactive, out of dates, drafts). Toggle via eye icon in backoffice header. In normal mode, only active content within dates is visible.
Admin Module
Blackcube module providing administration interface. Configurable via adminTemplatesAlias to customize templates and additionalAssets to add CSS/JS. Extendable to add business features.
Parameters
Configuration stored in CMS. Used to avoid hardcoding BlocType IDs and other values. Access via Parameters::get('DOMAIN', 'NAME'). Automatic memory cache for HTTP request duration.
Miscellaneous
Yii2
PHP framework on which Blackcube is built. Blackcube integrates into any Yii2 application (basic, advanced, custom). Blackcube routing is priority, passes to Yii2 if slug doesn't exist.
BSD 3-clause
Permissive open source license. Total freedom of use, modification and redistribution. Three mandatory clauses: keep copyright, keep license, don't use name without authorization.
Core Module
Blackcube module managing structured content, automatic routing, and granular cache system. Configuration in modules → blackcube. Required to use Blackcube.