Vue d'ensemble

Le système de thèmes de Larapen vous permet de créer des designs front-end entièrement personnalisés. Chaque thème est un package autonome avec ses propres vues, feuilles de style, JavaScript et configuration. Ce guide vous accompagne dans la création d'un thème de zéro.

Vous ne souhaitez pas le construire vous-même ? BeDigit, la société derrière Larapen, propose des services de développement de thèmes personnalisés. Demandez un devis et notre équipe concevra et construira un thème sur mesure adapté à votre marque.

Prérequis

  • PHP 8.3+ et une installation fonctionnelle de Larapen.
  • Node.js 18+ et npm installés (pour la compilation des assets via Vite).
  • Connaissances de base en Laravel Blade, Bootstrap 5.3 et SCSS.
  • Un éditeur de code (VS Code, PhpStorm, etc.).

Étape 1 : Créer le répertoire du thème

Tous les thèmes se trouvent sous extensions/themes/. Créez un répertoire pour votre thème en utilisant un nom en minuscules :

extensions/themes/mon-theme/

Étape 2 : Créer le manifeste (theme.json)

Créez extensions/themes/mon-theme/theme.json: ce fichier indique à Larapen les informations sur votre thème :

{
    "name": "mon-theme",
    "display_name": "Mon Thème Personnalisé",
    "version": "1.0.0",
    "author": "Votre Nom",
    "license_type": "free",
    "description": "Un thème personnalisé pour mon site web",
    "thumbnail": "assets/images/thumbnail.png",
    "supports": ["pages", "portfolio", "blog", "shop"],
    "settings": {
        "primary_color": "#3b82f6",
        "layout_style": "wide"
    },
    "item_id": ""
}

Référence des champs du manifeste

ChampTypeDescription
namestringObligatoire. Nom machine unique: doit correspondre au nom du répertoire.
display_namestringObligatoire. Nom lisible affiché dans le panneau d'administration.
versionstringVersion sémantique (ex. 1.0.0).
authorstringNom de l'auteur.
license_typestring"free" ou "premium".
descriptionstringDescription courte pour le panneau d'administration.
thumbnailstringChemin relatif vers une capture d'écran de prévisualisation (recommandé : 1200×900px).
supportsarrayFonctionnalités supportées : pages, portfolio, blog, shop.
settingsobjectValeurs par défaut des paramètres (remplacées par config.php).
item_idstringID d'article Envato. Laisser vide pour les thèmes hors marketplace.

Étape 3 : Créer le fichier de paramètres (config.php)

Créez extensions/themes/mon-theme/config.php: ce fichier définit tous les paramètres personnalisables du thème avec leurs valeurs par défaut :

<?php

return [
    // Couleurs
    'primary_color'     => '#3b82f6',
    'secondary_color'   => '#1e40af',
    'accent_color'      => '#f59e0b',
    'text_color'        => '#1e293b',

    // Typographie
    'heading_font'      => 'DM Sans',
    'body_font'         => 'Inter',
    'base_font_size'    => '16px',

    // Mise en page
    'layout_style'           => 'wide',
    'container_width'        => '1320px',
    'wide_container_width'   => '1250px',

    // En-tête
    'header_wide'                => false,
    'header_style'               => 'default',
    'header_height'              => '',
    'header_bg_color'            => '',
    'header_bg_image'            => '',
    'header_text_color'          => '',
    // ... autres paramètres d'en-tête

    // Pied de page
    'footer_style'           => 'default',
    'footer_bg_color'        => '',
    // ... autres paramètres de pied de page

    // Comportement de l'interface
    'show_back_to_top'  => true,
    'default_mode'      => 'light',
    'allow_mode_toggle' => true,

    // Code personnalisé
    'custom_css' => '',
    'custom_js'  => '',
];

Ces paramètres sont modifiables par l'administrateur dans Apparence → Paramètres du thème. Vous pouvez ajouter vos propres clés personnalisées: elles seront disponibles dans toutes les vues du thème via le tableau $themeSettings.

Étape 4 : Créer la structure de répertoires

Voici la structure de répertoires recommandée pour un thème complet :

extensions/themes/mon-theme/
├── theme.json
├── config.php
├── assets/
│   ├── images/
│   │   └── thumbnail.png
│   ├── scss/
│   │   ├── theme.scss              ← Entrée SCSS principale (OBLIGATOIRE)
│   │   └── pages/                  ← SCSS spécifique par page (optionnel)
│   │       ├── home.scss
│   │       ├── contact.scss
│   │       └── ...
│   └── js/
│       ├── theme.js                ← Entrée JS principale (OBLIGATOIRE)
│       └── pages/                  ← JS spécifique par page (optionnel)
│           └── ...
└── views/
    ├── layouts/
    │   └── master.blade.php        ← Layout principal (OBLIGATOIRE)
    ├── partials/
    │   ├── header.blade.php
    │   ├── footer.blade.php
    │   └── seo.blade.php
    ├── sections/                   ← Templates de sections (constructeur de pages)
    ├── components/                 ← Composants Blade réutilisables
    └── pages/                      ← Vues de pages complètes
        ├── home.blade.php
        ├── page.blade.php
        ├── contact.blade.php
        └── ...
Fichiers obligatoires : Au minimum, votre thème doit avoir theme.json, assets/scss/theme.scss, assets/js/theme.js et views/layouts/master.blade.php. Sans ces fichiers, le thème ne peut pas être activé.

Étape 5 : Créer le layout principal

Le layout principal (views/layouts/master.blade.php) est le squelette HTML de chaque page. Consultez la version anglaise de cet article pour le code complet du layout de démarrage.

Variables disponibles dans toutes les vues

VariableTypeDescription
$themeSettingsarrayTous les paramètres du thème (valeurs par défaut de config.php + remplacements admin).
$activeThemestringNom du thème actuellement actif.
$isPreviewModebooltrue lors de l'utilisation du paramètre de requête ?theme=.
$currentLocalestringCode de la langue actuelle (ex. en, fr).
$availableLocalesCollectionToutes les langues disponibles pour le sélecteur de langue.

Étape 6 : Créer le fichier SCSS principal

Créez assets/scss/theme.scss: c'est le point d'entrée principal des styles. Importez Bootstrap, Bootstrap Icons, puis ajoutez vos styles personnalisés.

Conseil : Utilisez les classes utilitaires de Bootstrap 5.3 autant que possible. N'écrivez du SCSS personnalisé que pour les styles impossibles à réaliser avec les utilitaires.

Étape 7 : Créer le fichier JavaScript principal

Créez assets/js/theme.js: importez Bootstrap JS et les utilitaires partagés du cœur, puis ajoutez vos initialisations personnalisées.

Important : Larapen utilise uniquement du JavaScript natif: pas de jQuery, React ou Vue. Utilisez les API DOM natives et les fonctionnalités ES2022+.

Étape 8 : Créer les vues de pages

Les vues de pages vont dans views/pages/ et étendent le layout principal avec @extends('layouts.master'). Utilisez @section('content') pour le contenu et @push('styles') pour les CSS spécifiques à la page.

Étape 9 : Remplacer les vues des add-ons

Votre thème peut remplacer les vues de n'importe quel add-on en plaçant des fichiers au chemin correspondant :

extensions/themes/mon-theme/views/pages/blog/index.blade.php
extensions/themes/mon-theme/views/pages/shop/index.blade.php

L'ordre de résolution des vues est :

  1. Thème actif : extensions/themes/{thème-actif}/views/{vue}
  2. Thème par défaut (repli) : extensions/themes/default/views/{vue}
  3. Laravel standard : resources/views/{vue}

Étape 10 : Compiler les assets avec Vite

La configuration Vite de Larapen découvre automatiquement les assets des thèmes. Après avoir créé vos fichiers SCSS et JS, compilez-les :

# Compiler tous les assets des thèmes
npx vite build

# Ou utiliser la commande Artisan pour un thème spécifique
php artisan theme:build mon-theme
Critique : Vous DEVEZ exécuter npx vite build après avoir créé de nouveaux fichiers SCSS ou JS. Le manifeste Vite doit être reconstruit pour que les directives @vite() résolvent les assets de votre thème.

Étape 11 : Activer votre thème

  1. Allez dans Apparence → Thèmes dans le panneau d'administration.
  2. Cliquez sur « Synchroniser » pour découvrir les nouveaux thèmes.
  3. Votre thème devrait apparaître dans la liste.
  4. Cliquez sur « Activer » pour basculer vers votre thème.

Commandes Artisan utiles

CommandeDescription
php artisan theme:statusAffiche tous les thèmes avec leur statut de compilation.
php artisan theme:build {nom}Compile les assets d'un thème spécifique via Vite.
php artisan theme:publish {nom}Publie les assets statiques vers public/themes/.

Utiliser l'IA pour créer des thèmes

Larapen inclut un serveur MCP (Model Context Protocol) qui permet aux assistants IA de comprendre le système de thèmes et de générer des fichiers de thème valides. Au lieu de créer les fichiers manuellement, vous pouvez décrire votre thème en langage naturel et l'IA générera tous les fichiers nécessaires en respectant les conventions Larapen. Consultez l'article « Utiliser l'IA pour créer des thèmes » pour les instructions de configuration détaillées et les flux de travail.

Conseils pour des thèmes de qualité

  • Responsive d'abord: Concevez en mobile-first avec la grille responsive de Bootstrap.
  • Propriétés CSS personnalisées: Définissez toutes les couleurs et polices comme variables :root.
  • Utilitaires Bootstrap: Minimisez le CSS personnalisé en utilisant les utilitaires Bootstrap.
  • Accessibilité: Suivez les directives WCAG AA.
  • Mode sombre: Utilisez l'attribut data-bs-theme="dark" de Bootstrap.
  • Chaînes traduisibles: Jamais de texte en dur. Utilisez toujours {{ __('clé') }}.
Besoin d'aide ? Si vous préférez une assistance professionnelle, BeDigit propose des services de développement de thèmes personnalisés. Demandez un devis gratuit →

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket