# Module Posts Types de contenus configurables via variables d'environnement. Chaque projet déclare ses propres types (blogue, CVE, emploi, événement...) avec les champs dont il a besoin, sans toucher au code. --- ## Configuration Copier les variables de [`.env.example`](.env.example) dans votre `.env`. Si aucun label n'est fourni (`ZEN_MODULE_POSTS_TYPES=blogue`), le nom affiché sera la clé avec la première lettre en majuscule. ### Types de champs | Type | Syntaxe `.env` | Description | |---|---|---| | `title` | `nom:title` | Champ texte principal, génère le slug automatiquement | | `slug` | `nom:slug` | Slug unique par type, pré-rempli depuis le titre | | `text` | `nom:text` | Zone de texte libre | | `markdown` | `nom:markdown` | Éditeur Markdown avec prévisualisation | | `date` | `nom:date` | Sélecteur de date (YYYY-MM-DD) | | `datetime` | `nom:datetime` | Date et heure (ISO 8601, UTC) | | `color` | `nom:color` | Sélecteur de couleur, stocke un code hex `#rrggbb` | | `category` | `nom:category` | Menu déroulant lié à la table des catégories | | `image` | `nom:image` | Upload d'image vers le stockage Zen | | `relation` | `nom:relation:type_cible` | Sélection multiple vers des posts d'un autre type | Chaque type doit avoir au moins un champ `title` et un champ `slug`. Si un type utilise le champ `image`, configurer le stockage Zen dans le `.env` principal : `ZEN_STORAGE_REGION`, `ZEN_STORAGE_ACCESS_KEY`, `ZEN_STORAGE_SECRET_KEY`, `ZEN_STORAGE_BUCKET`. ### Accès public aux images Par défaut, les images d'un type nécessitent une session authentifiée. Pour les rendre accessibles publiquement (ex. images de blogue affichées sur le site) : ```env ZEN_MODULE_POSTS_TYPE_BLOGUE_PUBLIC=true ``` Les images sont stockées sous `posts/{type}/{id}/{filename}` et servies via `/zen/api/storage/posts/{type}/...`. L'accès public est déclaré dans le module. Aucune variable d'environnement globale n'est nécessaire. --- ## Base de données Les tables sont créées automatiquement avec `npx zen-db init`. --- ## Interface d'administration | Page | URL | |---|---| | Liste des posts | `/admin/posts/{type}/list` | | Créer un post | `/admin/posts/{type}/new` | | Modifier un post | `/admin/posts/{type}/edit/{id}` | | Liste des catégories | `/admin/posts/{type}/categories` | --- ## Documentation - [API publique](docs/api.md) — endpoints, paramètres, réponses JSON - [API d'administration](docs/admin-api.md) — routes authentifiées - [Intégration Next.js](docs/integration.md) — liste, détail, SEO - [Usage programmatique](docs/programmatic.md) — `upsertPost`, cron jobs, imports