Aller au contenu

Articles de blog

Les articles de blog permettent de publier du contenu éditorial organisé par catégories et tags. ArtisanCMS offre un système de blog complet avec pagination, commentaires et génération de flux RSS.

Le modèle Post (App\Models\Post) partage de nombreuses fonctionnalités avec le modèle Page grâce aux traits communs :

class Post extends Model
{
use HasContentFeatures; // Révisions, taxonomies, champs personnalisés
use HasSiteScope; // Filtrage multi-site automatique
use SoftDeletes; // Corbeille
}
ChampTypeDescription
titlestringTitre de l’article
slugstringIdentifiant URL unique
contentjsonContenu structuré (arbre de blocs)
excerpttextExtrait affiché dans les listes
featured_imagestringImage mise en avant
statusstringStatut de publication
comment_statusbooleanActive/désactive les commentaires
publish_atdatetimeDate de publication programmée
author_idintegerAuteur de l’article

Le Front\BlogController gère l’affichage du blog cote visiteur :

// Routes publiques du blog
Route::get('/blog', [BlogController::class, 'index']); // Liste paginée
Route::get('/blog/{slug}', [BlogController::class, 'show']); // Article unique

La liste des articles supporte :

  • Pagination : nombre d’articles par page configurable dans les paramètres
  • Filtrage par catégorie : /blog?category=tutoriels
  • Filtrage par tag : /blog?tag=laravel
  • Recherche : filtrage par mots-clés dans le titre et le contenu

Chaque article peut avoir une image mise en avant qui sera affichée :

  • En haut de l’article (vue détaillée)
  • Comme vignette dans la liste du blog
  • Dans les balises Open Graph pour le partage sur les réseaux sociaux

L’image est automatiquement optimisée en WebP avec des variantes responsives (voir la section Médias).

Les articles utilisent le système de taxonomies pour leur organisation :

  • Catégories : taxonomie hiérarchique pour la classification principale
  • Tags : taxonomie plate pour le marquage transversal
// Récupérer les articles d'une catégorie
$posts = Post::whereHas('taxonomyTerms', function ($query) {
$query->where('slug', 'tutoriels');
})->published()->paginate(12);

Les commentaires peuvent etre activés ou désactivés individuellement sur chaque article via le champ comment_status :

$post->comment_status = true; // Commentaires ouverts
$post->comment_status = false; // Commentaires fermés

Consultez la section Commentaires pour le détail du système de modération.

Le Front\RssController génère automatiquement un flux RSS pour le blog :

Route::get('/rss', [RssController::class, 'index']);

Le flux inclut les derniers articles publiés avec leur titre, extrait, auteur et date de publication. Le format respecte la spécification RSS 2.0.

La gestion des articles en back-office passe par Admin\PostController :

L’interface d’administration offre :

  • Un éditeur basé sur le Page Builder pour le contenu
  • La sélection de catégories et tags
  • Le choix de l’image mise en avant via le gestionnaire de médias
  • Les champs SEO (meta title, meta description)
  • La planification de publication
  • L’activation/désactivation des commentaires

Les articles suivent le meme workflow que les pages :

StatutDescription
draftBrouillon en cours de rédaction
reviewSoumis pour relecture
approvedValidé par un relecteur
publishedPublié et visible sur le blog

Grace au trait HasContentFeatures, chaque article bénéficie automatiquement :

  • D’un historique de révisions complet permettant de revenir à une version antérieure
  • De champs personnalisés pour ajouter des métadonnées supplémentaires (source, auteur invité, etc.)

Les articles disposent des champs SEO standard :

  • meta_title : titre optimisé pour les moteurs de recherche
  • meta_description : description pour les résultats de recherche
  • meta_keywords : mots-clés associés

Les balises Open Graph et Twitter Card sont générées automatiquement pour un partage optimal sur les réseaux sociaux.