
Créer un blog – présentation
La meilleure façon d’apprendre un framework est la pratique, c’est pour cette raison que je présente dans ce blog plusieurs cas concrets, le dernier était la réalisation d’une boutique en ligne. Auparavant j’avais présenté un site d’annonce et un album photo. Dans cette nouvelle série pratique je vous propose la réalisation d’un blog. C’est à la fois simple et délicat, tout dépend les fonctionnalités qu’on désire implémenter. Je vais partir avec des objectifs suffisamment ambitieux pour que ça soit intéressant et instructif sans faire une usine à gaz. C’est un projet suffisamment riche pour couvrir l’ensemble des possibilités de Laravel. On va utiliser la dernière version actuelle qui est la 8. La version 9 est programmée pour septembre 2021. J’avais déjà présenté un projet de blog mais il commence à dater.
Le frontend
Le thème
Que va permettre ce blog ? Évidemment une page d’accueil avec un diaporama des derniers articles et une photo et un texte introductif des derniers articles parus avec une pagination.
Pour ce premier point incontournable il faut évidemment faire un choix de technologie frontend et les possibilités sont vastes ! Après réflexion j’ai opté pour un thème gratuit créé par Styleshout, en l’occurrence Calvin.
C’est un thème qui a un CSS spécifique et qui utilise quelques plugins classiques basés sur JQuery. Même si ce n’est pas de la technologie récente, on est loin de Tailwind et autres nouveautés, c’est une base solide et élégante. Il faudra évidemment un peu de travail pour intégrer ce thème à Laravel.
Comme on en aura besoin vous pouvez déjà le télécharger (il y a un gros bouton DOWNLOAD sur la page du thème). Vous pouvez ainsi l’explorer en local.
Les commentaires
On ne peut pas imaginer un blog sans commentaires et on va donc en prévoir. Si vous explorez le thème Calvin vous allez voir que les commentaires sont prévus avec une hiérarchisation et présence d’avatars :
On va respecter cette organisation pour notre blog. Pour le projet je vais utiliser un minimum de packages mais pour les commentaires on a une structure hiérarchique un peu délicate à gérer et il existe un excellent package pour s’occuper de ça. Il en existe un autre que j’aimais bien mais il a été malheureusement abandonné. On verra comment mettre ça en œuvre quand on s’occupera des commentaires.
Pour cette partie on utilisera aussi un package pour les avatars.
L’organisation
Pour l’organisation des articles on va utiliser :
- des catégories (sans aller jusqu’à des sous-catégories)
- des étiquettes
Là ça sera très classique.
En plus des articles on aura aussi une partie CMS pour gérer des pages distinctes, par exemple pour l’affichage des données légales.
Les medias
Il y aura forcément des médias à gérer, essentiellement des images : image réduite pour le résumé de l’article, image haute définition pour le diaporama et l’article, et évidemment images dans les articles. Pour cette partie on utilisera le package Laravel-Media-Manager. Il comporte tout ce qu’il faut pour une gestion facilitée.
Les utilisateurs
Il nous faudra un système d’authentification et on sait que c’est un peu le bazar en ce moment. Pour faire simple on partira avec le package Laravel Breeze. On aura ainsi tous les contrôleurs et routes en place et on fera nos propres vues intégrées au thème.
Pour les permissions et rôles on peut très bien gérer ça sans package, on aura :
- l’administrateur qui peut tout faire
- les rédacteurs qui peuvent gérer leurs articles et commentaires associés
- les utilisateurs enregistrés qui peuvent laisser des commentaires
- les utilisateurs non enregistrés qui ne peuvent que consulter
On mettra aussi en place un formulaire de contact accessible à tout le monde.
Les langues
Par défaut on va prévoir tous les textes en anglais mais on ajoutera toutes les traductions pour le français.
Le backend
Pour le backend aussi il y a du choix mais on va se passer de packages pour l’apparence, par contre on va utiliser AdminLTE que j’aime bien. Pour cette partie le seul package qu’on utilisera c’est l’incontournable Laravel Datatable. Mais on s’intéressera à cette partie quand on aura bouclé le frontend et que tout fonctionnera.
On se prépare
Si ce programme vous convient on va commencer par installer un Laravel tout neuf :
composer create-project laravel/laravel monblog --prefer-dist
Je pars du principe que vous avez un serveur en place, votre Laravel doit déjà fonctionner :
On va ajouter l’authentification :
composer require laravel/breeze --dev
Puis :
php artisan breeze:install npm install
Là allez boire un café, à votre retour tout est en place et il ne reste plus qu’à générer :
npm run dev
On ne se servira pas par la suite des assets générés mais au moins on a une application qui fonctionne pour le moment.
Conclusion
On sait maintenant à peu près ce qu’on veut faire et on a une idée précise des moyens à utiliser. On a un Laravel de base pour démarrer correctement. Dans le prochain article on mettra en place le système de données nécessaire pour que notre blog fonctionne.


24 commentaires
qanielutis
Salut,
Etant debutant avec laravel, je me pose beaucoup de questions quand a mon apprenstissage. L’une d’elle concerne tes cours qui m’aident enormement. Mais voila je voudrais savoir si en suivant les TP notament en copiant ce que tu fais, je pourrais mieux m’ameliorer.
Je suis chacun des TPs, en copiant ce que tu fais mais aussi en cherchant, mais je me dis que le fait de juste copier de m’avancera pas beaucoup dans mon apprentissage.
Stp j’aimerai avoir ton avis sur ma methode et tes conseils au cas ou je me tromperais.
bestmomo
Salut,
On apprend de plusieurs manières. Les articles que je publie donnent une méthodologie et je ne prétends pas que ce soit la meilleure. Si on se contente de copier-coller ce n’est pas très intéressant, il faut comme tu le fais se poser des questions, essayer d’anticiper le code, chercher à comprendre…
Mais la manière la plus efficace d’apprendre est certainement de se lancer dans un projet, quel qu’il soit. C’est quand on est directement confronté à la page blanche qu’on est obligé d’élaborer sa propre compréhension et ses propres stratégies.
La base c’est de suivre un cours, comme le mien, pour voir tout ce que le framework a à offrir. Ensuite suivre un cas pratique comme le blog. Et ensuite se lancer un défi personnel.
qanielutis
Merci.
qanielutis
Merci pour tes cours ils sont tres bien expliques.
J’ai tenu a faire un petit recap des packages dont aura besoin d’installer pour dev meme en offline:
– composer require laravel/breeze –dev (
php artisan breeze:install
npm install
npm run dev
)
– composer require kalnoy/nestedset
– composer require unisharp/laravel-filemanager (
php artisan vendor:publish –tag=lfm_config
php artisan vendor:publish –tag=lfm_public
php artisan storage:link
)
– composer require creativeorange/gravatar ~1.0
– composer require yajra/laravel-datatables
🙂
Boubacar
Bonjour M.
en fait pour le téléchagement du template, il me faut un compte ou bien car j’arrive toujours pas à le téléchager à travers le gros bouton download
Merci de me répondre !
bestmomo
Bonjour,
Je viens de refaire un essai et ça fonctionne pour moi.
Boubacar
ok merci davantage
je vais réessayer .
Boubacar
jusqu’à ça ne marche pas
Pouvez-vous faire un zip afin que je puisse le récupérer
Boubacar
jusqu’à ça ne marche pas. J’ai même essayer avec un autre Pc.
Pouvez-vous faire un zip afin que je puisse le récupérer
Boubacar
merci monsieur et désolé pour tout.
J’ai finalement téléchargé
KABA
Malheureusement, moi je ne trouve pas ce bouton download de calvin, j’ai essayé sur navigateurs differents, mais c’est toujours la meme chose.
bestmomo
C’est pour ça que je mets le code à télécharger, il faudrait comparer les fichiers.
gil
Hello, dans « On se prépare » : composer create-project laravel-laravel monblog –prefer-dist
=> laravel/laravel
bestmomo
Merci,
C’est corrigé !
webwatson
Et aussi avec fortify, il es difficile de casser l’appel des controlleurs de fortify quand on souhaite crée ses propres controlleurs
webwatson
Merci encore Pour ce beau tuto. Désolé pour ceux qui n’aime pas la lecture.
Ma question est de savoir si on peut utiliser fortify et breeze dans un même projet sachant que les deux ont la même fonction principale.
bestmomo
Salut,
Breeze comporte tout ce qu’il faut : contrôleurs et vues. De son côté Fortify ne comporte que les contrôleurs (ou actions ce qui revient au même) et aucune vues. Donc on peut très bien récupérer les veus générées par Breeze et les utiliser avec Fortify.
webwatson
Très claire! Merci Monsieur
Nyleor
Hello,
Cool j’attendais avec impatience un nouveau post sur ce blog, où j’apprends à chaque fois de nouvelles astuces pour mettre en place de bonnes pratiques, je me réjouis donc de ce projet.
Dommage toutefois de ne pas aller jusqu’aux sous-catégories, j’aurais été curieux de voir comment tu les aurais gérées (i.e. quelle est la bonne manière de faire pour les gérer haha).
À+
bestmomo
Salut,
Les sous-catégories sont faciles à gérer avec le package Laravel NestedSet que je vais justement utiliser pour les commentaires. Mais je n’ai pas jugé utile d’en créer parce que le projet va être déjà bien chargé et accessoirement je n’avais pas envie de modifier le layout pour faire apparaîre des sous-menus dans la barre de navigation 🙂
Boubacar
bonjour monsieur Bestmomo ! franchement parlant merci davantage pour tes tutos si riches. j’ai beau appris en s’inspirant de votre philosophie.
Merci encore
Que la chance vous sourit davantage dans tous vos projets.
bestmomo
Merci pour ce retour sympathique et encourageant !
oksam
Bonjour Bestmomo! je te remercie pour ce nouveau projet, j’ai déjà une question pour toi, comment changer le logo de laravel au dessus du formulaire de connexion.
bestmomo
Salut,
On ne va pas conserver ces vues pour le blog mais pour répondre avec Laravel Breeze le logo est un fichier SVG placé dans le composant resources/views/components/application-logo.blade.php.