CMS en Symfony : quelles fonctionnalités ?
Tags: webdev, symfony, cms, drupal
Published: 2022-02-23 22:00:05

Bon maintenant qu'on a bien critiqué les CMS et leur stack super lourde, on fait comment ?
Et si on devait faire un CMS, comment on ferait ?
On a besoin de quoi pour faire un CMS ?

On va essayer de répondre à ce questions dans ce post....

# Faire le tri dans les fonctionnalités

Voici ce que j'ai retenu des (macros) fonctionnalités de Drupal :
1. mise à disposition d'un backoffice de gestion du site
2. gestion de l'authentification des contributeurs et administrateurs
3. pouvoir créer des types de contenu (dans le backoffice)
4. pouvoir créer des contenus (page, article, ...) (dans le backoffice)
5. pouvoir gérer des "menus"
6. pouvoir modifier le template de la page (dans le code)
7. pouvoir créer des blocs de template (dans le code)
8. pouvoir créer des vues, transformées soit en bloc, soit en page. Les vues sont une liste de contenus filtrés. 
9. pouvoir "étendre" la plateforme avec des plugins

# Ce qu'on garde ou pas

## Mise à disposition d'un backoffice de gestion du site

Evidemment on garde. Il faut nécessairement ajouter cette fonctionnalité.

## Gestion de l'authentification

Idem, on garde, il faut que nos utilisateurs puisse accéder au backoffice et gérer des droits.

## Pouvoir créer des types de contenu

Dans Drupal par exemple, tous les contenus héritent de "Node", le type de base.

Sur le principe, on va garder la possibilité, évidemment, de pouvoir créer des types dérivés d'un type de base.
Mais laisser cette possibilité en backoffice, j'avoue que je ne comprends pas...

Quelle est la probabilité de laisser la possibilité à un client final (un contributeur) de créer des types de contenu à la volée ?
C'est complexe pour le modèle en base, nuit donc aux performances, et parfaitement inutile.

C'est justement ce qui va faire la différence, on va avoir une approche différente.

Mais sur le fond, on fera ça dans le code, vous verrez pourquoi.

## Pouvoir créer des contenus

Avoir un backoffice sans pouvoir créer de page ou d'article, ça n'a pas vraiment de sens.
Donc on garde (et on fera même mieux que Drupal ;-) )

## Pouvoir gérer des "menus"

Pas grand chose à dire, on garde (et on fera plus simple que Drupal)

## Pouvoir modifier le template de la page

Comme dans beaucoup de CMS, on va garder cette fonctionnalité. Mais aussi la laisser possible uniquement dans le code.

## Pouvoir créer des blocs de template

Les pages à créer, le contenu à créer, est de plus en plus complexe. Donc on est obligé de proposer des mises en pages qui ne sont pas uniquement rigides.

On va offrir cette possibilité, et elle va même devenir centrale !
Pouvoir créer des pages avec des blocs déjà constitués, pouvoir en créer comme on le veut, y attacher des données, des attributs, on va plutôt aller dans ce sens. 

## Pouvoir créer des vues

On ne garde pas. Trop complexe. On va faire plus simple et plus performant.

## Pouvoir "étendre" la plateforme avec des plugins

Cette fonctionnalité est native dans beaucoup de framework.
Donc il ne sert à rien de réinventer la roue !

On garde ! Mais on fait différent !

Dans le prochain épisode, on verra comment on transforme ces fonctionnalités en brique technique.

Bientôt la suite !