Découpage Logique

Prérequis : Initialisation du Projet

Objectif

Identifier et lister tous les composants nécessaires au projet avant de commencer le développement. Cette étape d'analyse permet de planifier l'architecture et d'anticiper les développements.

Info

Cette étape ne crée aucun code. On identifie et liste uniquement les composants à développer.

Identifier les Types de Pages

D'après l'analyse des créas, le site comprend 3 types de pages différentes.

Page d'Accueil

Rôle : Présenter Blackcube CMS et ses fonctionnalités principales

  1. Hero pleine largeur avec image
  2. Features en grille 3 colonnes
  3. CTA de conversion
Caractéristiques :

Type Blackcube : Home

Pages de Documentation

Rôle : Contenu technique avec navigation complète

  1. Layout 3 colonnes (Sidebar + Contenu + TOC)
  2. Breadcrumb et navigation prev/next
  3. Blocs de contenu variés
Caractéristiques :

Type Blackcube : Documentation

Page de Contact

Rôle : Formulaire de contact avec informations

  1. Formulaire de saisie
  2. Cards informatives en sidebar
  3. Confirmation après envoi
Caractéristiques :

Type Blackcube : Contact

Identifier les Widgets de Layout

Les widgets de layout structurent les pages et gèrent la navigation.

Widgets Systématiques

  1. Logo
  2. Menu principal
  3. Language switcher (FR/EN)
  4. Menu mobile
Header : Présent sur toutes les pages

  1. Copyright
  2. Menu secondaire
  3. Liens externes
Footer : Présent sur toutes les pages

Widgets Conditionnels

  1. Arborescence Nodes/Composites
  2. Highlight page active
  3. Navigation hiérarchique
Sidebar : Pages de documentation uniquement

  1. Table des matières
  2. Liste des titres H2/H3
  3. Liens d'ancrage
TOC : Pages de documentation uniquement

  1. Fil d'ariane
  2. Hiérarchie des Nodes parents
  3. Page courante
Breadcrumb : Pages de documentation uniquement

  1. Lien précédent
  2. Lien suivant
  3. Entre Composites d'un même Node
Navigation : Pages de documentation uniquement

Récapitulatif : 6 widgets de layout identifiés

Identifier les Widgets de Contenu

Les widgets de contenu affichent les blocs créés dans le back-office.

Widgets Principaux

  1. En-tête principal
  2. Variantes selon type de page
  3. Champs : title, description, lang, image, CTA, breadcrumbTitle
Hero : Toutes les pages

  1. Mise en avant avec icône
  2. Affichage grille 3 colonnes
  3. Groupement automatique
Feature : Page d'accueil

  1. Titres H2, H3, H4
  2. Génération d'ancres
  3. Alimentation TOC
Title : Pages de documentation

  1. Contenu riche WYSIWYG
  2. Paragraphes et listes
Content : Pages de documentation

  1. Blocs de code avec coloration
  2. Support multi-langages
  3. Bouton copier
Code : Pages de documentation

  1. Alertes colorées (info, warning, error)
  2. Encadrés informatifs
Info : Pages de documentation

  1. Call-to-action
  2. Liens internes
CTA : Page d'accueil et documentation

  1. Cards informatives
  2. Icônes SVG
  3. CTA optionnels
Card : Page de contact

  1. Configuration formulaire
  2. Messages de retour
Contact : Page de contact

Récapitulatif : 9 widgets de contenu identifiés

Composants Spéciaux

Dispatcher de Blocs

Rôle : Détecter le type de chaque bloc et appeler le widget approprié

  1. Parcourt l'array de blocs
  2. Détecte Bloc individuel ou Array de blocs groupés
  3. Appelle le widget correspondant
Fonctionnement :

Nom : Blocs.php

Groupement de Blocs

Rôle : Regrouper les Blocs consécutifs pour un affichage en grille

  1. Détecte les Blocs consécutifs ayant le même blocTypeId
  2. Regroupe en array
Fonctionnement :

Exemple : Widget SectionFeatures.php (en plus de BlocFeature.php)

Architecture Planifiée

Structure des Fichiers

Info

Cette structure est un exemple d'organisation. Blackcube n'impose aucune structure particulière : adapte l'arborescence selon les besoins de ton projet.

    common/
├── admin/
│   ├── bloc_card.php
│   ├── bloc_cta.php
│   └── bloc_hero.php
├── helpers/
│   ├── Parameters.php
│   └── CmsHelper.php
└── models/
    └── MailContact.php

webapp/
├── behaviors/
│   └── HrefLangBehavior.php
├── controllers/
│   ├── CmsController.php
│   └── RedirectController.php
├── views/
│   └── cms/
│       ├── home.php
│       ├── documentation.php
│       ├── contact.php
│       └── contact-success.php
└── widgets/
    ├── Blocs.php                    # Dispatcher
    ├── BlocHero.php                 # + 3 vues
    ├── BlocFeature.php
    ├── SectionFeatures.php
    ├── BlocTitle.php
    ├── BlocContent.php
    ├── BlocCode.php
    ├── BlocInfo.php
    ├── BlocCta.php
    ├── BlocCard.php
    ├── Header.php
    ├── Footer.php
    ├── Sidebar.php
    ├── Toc.php
    ├── Breadcrumb.php
    └── Navigation.php
    

Dépendances entre Composants

  1. Parameters : Utilisé par tous les widgets et controllers
  2. CmsHelper : Utilisé par controllers et dispatcher
Helpers :

  1. Utilisent les helpers
  2. Passent les données aux vues
Controllers :

  1. Appellent les widgets
  2. Pas de logique métier
Vues :

  1. Utilisent les helpers
  2. Peuvent appeler d'autres widgets
Widgets :

Validation

Avant de continuer, vérifier que tous les composants sont identifiés :

  1. Home
  2. Documentation
  3. Contact
Types de pages :

  1. Header
  2. Footer
  3. Sidebar
  4. TOC
  5. Breadcrumb
  6. Navigation
Widgets de layout :

  1. Hero
  2. Feature (+ SectionFeatures)
  3. Title
  4. Content
  5. Code
  6. Info
  7. CTA
  8. Card
  9. Contact
  10. Blocs (dispatcher)
Widgets de contenu :

  1. Parameters
  2. CmsHelper
Helpers :

  1. HrefLangBehavior
Behaviors :

  1. CmsController
  2. RedirectController
Controllers :

  1. MailContact
Modèles :

Total : 6 widgets layout + 10 widgets contenu + 2 helpers + 1 behavior + 2 controllers + 1 modèle