# Homepage Grid Plugin for Craft CMS 5

Plugin Craft CMS 5 permettant de gérer une grille de blocs sur la page d'accueil avec une interface d'administration Vue 3.

## Fonctionnalités

- **Grille 12 colonnes** : Système de grille responsive (grid-cols-1 md:grid-cols-12)
- **3 tailles configurables** : Petit (col-span-X), Moyen, Grand - configurables dans les settings
- **Hauteurs fixes** : Petite et grande hauteur pour aligner les blocs côte à côte
- **Blocs catégories** : Autant de blocs que de catégories, avec nombre d'articles configurable
- **Blocs édito** : 2 blocs dédiés (édito1, édito2) pour du texte simple
- **Drag & Drop** : Réorganisation visuelle des blocs dans l'admin
- **Interface Vue 3** : IHM moderne dans le CP Craft

## Installation

### Installation locale recommandée

1. Copier le dossier `homepage-grid` dans le dossier `plugins/` du projet Craft :
   ```bash
   mkdir -p plugins
   cp -R /chemin/vers/homepage-grid plugins/homepage-grid
   ```
2. Ajouter le repository local dans le `composer.json` du projet Craft :
   ```bash
   composer config repositories.homepage-grid path plugins/homepage-grid
   ```
3. Installer le plugin avec Composer :
   ```bash
   composer require "rosengart/homepage-grid:*"
   ```
4. Installer le plugin dans Craft :
   ```bash
   php craft plugin/install homepage-grid
   ```
5. Aller dans **Homepage Grid** dans le panneau de contrôle Craft pour configurer les blocs.

### Mise à jour locale

Après modification du plugin, lancer depuis le projet Craft :

```bash
composer update rosengart/homepage-grid
php craft clear-caches/all
```

## Configuration

### Settings du plugin (CP)
- **Column Size 1-3** : Valeurs Tailwind `col-span-X` (défaut : 2, 4, 6)
- **Small/Large Height** : Hauteurs fixes en rem (défaut : 12rem, 24rem)

### IHM d'administration
1. Aller dans **Homepage Grid** dans le menu CP
2. Ajouter des blocs :
   - **Category Block** : Sélectionner une catégorie, définir le label et le nombre d'articles
   - **Édito Block** : Bloc de texte simple
3. Choisir la taille de chaque bloc (Small/Medium/Large)
4. Glisser-déposer pour réorganiser l'ordre
5. Sauvegarder

## Utilisation dans les templates

### Template de la homepage
```twig
{% include 'homepage-grid/homepage' %}
```

Ou copier le contenu de `templates/homepage.twig` dans votre template de homepage.

## Structure des blocs

- **Mobile** : Chaque bloc prend toute la largeur (grid-cols-1)
- **Desktop** : Grille 12 colonnes avec les tailles configurées
- **Hauteurs** : 2 blocs petite hauteur = 1 bloc grande hauteur (côte à côte)

## Dépendances

- Craft CMS 5.x
- PHP 8.2+
- Tailwind CSS (utilitaires classes)
- Vue 3 + SortableJS (chargés via CDN dans l'admin)

## Sécurité et accès

- Les actions d'administration exigent un utilisateur connecté avec la permission `accessCp`.
- Les blocs sauvegardés sont normalisés côté serveur : type autorisé, taille bornée, limite d'articles bornée, texte nettoyé et nombre maximal de blocs.
- Le template frontend échappe les sorties Twig par défaut. Les contenus édito sont enregistrés comme texte simple, sans HTML.

## Développement

Structure du plugin :
```
homepage-grid/
├── src/
│   ├── Plugin.php
│   ├── models/Settings.php
│   ├── services/HomepageGridService.php
│   └── controllers/HomepageController.php
├── templates/
│   ├── _cp/index.twig (IHM admin Vue 3)
│   ├── homepage.twig (template frontend)
│   └── settings.twig
├── composer.json
└── README.md
```

## Licence

Propriétaire - EO
