Coder un CMS php (sans base de données). Des tutos ? des infos ?

Eléphanteau du PHP | 13 Messages

27 janv. 2016, 20:35

Bonjour,

J'utilise depuis pas mal de temps Wordpress pour créer des petits sites "vitrine". Je m'en sers comme un CMS (je n'utilise pas les fonctionnalités d'utilisateurs multiples, de commentaires, etc ...) pour "séparer" et gérer la maintenance du contenu des pages de manière plus pratique.

J'aimerais développer mon propre CMS en php sans utiliser de base de données. C'est surement un peu ambitieux, mais j'ai tellement "bricolé" mon thème Wordpress en php que je me dis qu'il ne doit pas être si compliqué de construire un CMS simple et clair de zéro.

Basiquement, j'imagine créer :
  • — un moteur en php
    — pas de page d'aministration (du moins dans un premier temps)
    — les données des posts et pages seraient dans des fichiers .txt (ou autre, je ne sais pas) qui contiendraient : des métadonnées, le contenu avec des "short_codes" à la WP.
Voila comment je vois la structure des fichiers .txt (ou autre) qui contiennent les données (il ne s'agit pas de code, juste pour expliquer rapidement mon idée)

<METAs>
	ID=59;
	TITLE="Mon premier Post";
	THUMB="/images/thumb.jpg";
</METAs>

<CONTENU>

<h1>Titre du Posr</h1>
<p> Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Maecenas sed diam eget risus varius blandit sit amet non magna. Vestibulum id ligula porta felis euismod semper. Cras justo odio, dapibus ac facilisis in, egestas eget quam. [INV] Etiam porta sem malesuada magna mollis euismod. [/INV] Etiam porta sem malesuada magna mollis euismod. Donec id elit non mi porta gravida at eget metus. </p>
[GALLERY image="test1.jpg" ]

</CONTENU>
J'aimerais savoir s'il existe des tutoriels sur le sujet, des sites parlant de ce type de création. J'ai vu qu'il existait plein de CMS simple du genre, mais je ne parviens pas à trouver de la documentation lisible sur le fonctionnement.

Ce que j'aimerais creuser :
  • — Comment coder les fichiers .txt (ou autre : quel format de fichier employer ?), des exemples ?
    — Comment coder des shortcodes (notamment lorsqu'ils s'imbriquent ...)
    — Etc
Si quelqu'un a des infos ....

Merci d'avance.

ViPHP
ViPHP | 4039 Messages

28 janv. 2016, 17:11

J'ai fait un projet semblable pour un intranet, un cms simple qui agissait plus comme un wiki.

La plupart des réponses vont dépendre de tes choix et préférences.

Pour ce qui est de l'écriture des pages, je pense qu'il est plus simple d'utiliser une librairie qui va t’offrir un environnement de rédaction complet, et du HTML tout fait (en exemple, CKeditor: http://ckeditor.com/).

Je n'utilisais pas de DB non plus (bien qu'il te faudra trouver quelque chose pour stocker les logins et d'autres metadonnées. C'est possible en sérialisant une structure de donnée PHP (object, liste, ...) ), les pages étant simplement stockés en texte brut.

Par ailleurs, et une opinion perso, apprendre à gérer un CMS (Drupal, wordpress,...) est un travail en soi, qu'il peut être intéressant d'apprendre. Faire son propre CMS est une expérience très utile, mais peu praticable dans le professionnel :wink:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 13 Messages

05 févr. 2016, 20:09

Merci Berzemus,
Effectivement, ce qui m'intéresserait le plus c'est d'avoir des idées et des exemples sur comment structurer les données, sans base de donnée.
Je n'envisage pas d'utiliser de login ou autre ... aucun autre utilisateur que moi. C'est vraiment pour séparer le contenu du site du moteur que cela me tente ... (pas pour créer un concurrent à Wordpress ! ;))

ViPHP
ViPHP | 4039 Messages

08 févr. 2016, 14:44

Imaginons que pour une page, tu dispose de ton article, en html dans un fichier distinct, et de quelques métadonnées, le tout dans un tableau PHP, pour faire facile:
$page_meta = [
    "auteur" => "Henri",
    "date" => "2018-03-30",
    "commentaires?" => false,
    "titre" => "L'art de la pelouse de 1793 à aujourd'hui",
    "fichier" => "./page.html"
    ];
Tu pourrais enregistrer le tout dans un fichier en utilisant la serialization:
file_put_contents("page_meta.txt",serialize($page_meta));
Les données seraient lisibles avec l’opération inverse:
$page_meta = unserialize(file_get_contents("page_meta.txt"));
Il te faudrait juste un moyen de générer un nom de fichier qui sera propre à la page concernée.
C'est un peu simple, mais c'est un début :)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 13 Messages

08 févr. 2016, 15:20

Merci Berzemus, je vais tenter de comprendre ce qu'est la "serialization"

ViPHP
ViPHP | 4039 Messages

16 févr. 2016, 10:17

C'est bien de marquer un temps d'arrêt, de retrouver une harmonie. On ignore trop souvent les bienfaits du zazen en informatique.

Si lors de ta méditation, a un stade supérieur de conscience, d'abstraction, une pensée qui voit la sérialisation comme un procédé transformant une structure de données quelconque en flux d'octets permettant d'être enregistré ou transmis se forme, surtout, ne perd pas le fil, tu es sur la bonne voie :wink:

Image
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 13 Messages

16 févr. 2016, 11:12

On se moque ?? :)
Je n'ai malheureusement pas la possibilité de passer le temps que j'aimerais à zazeniser la serialisation ... mais je n'ai pas laché l'affaire ...

ViPHP
ViPHP | 4039 Messages

16 févr. 2016, 17:20

Certainement pas, je ne me moque que de moi-même. J'ai aimé ta réponse, justement. Le smiley qui médite est un peu grand, c'est le seul que j'ai trouvé, malheureusement.

Sinon, pour replonger dans le sérieux, et pour reprendre l'expression de php.net:
serialize — Génère une représentation stockable d'une valeur

C'est une technique pratique pour stocker ou passer des valeurs PHP entre scripts, sans perdre leur structure ni leur type.
http://php.net/manual/fr/function.serialize.php

C'est ce qu'il y a de plus pratique pour enregistrer une donnée éphémère comme une liste/tableau php sans s'embarrasser de tout une base de données. Tu peux aussi créer toi-même une méthode de stockage binaire de données, c'est très intéressant, mais un peu inutile.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
AB
ViPHP | 5818 Messages

17 févr. 2016, 01:20

Salut,

Perso je suis pas fan de l'exercice, je veux dire que réaliser un CMS sans base de donnée c'est quand même un très gros handicap.

Je l'ai fait une fois pour m'amuser mais bon je n'ai pas renouvelé l'expérience et vite abandonné le code même si le site a été en ligne et a fonctionné correctement plusieurs années. Trop de contraintes et puis pourquoi faire puisque tous les hébergeurs proposent une bdd. Et surtout quitte à investir du temps, autant que le projet puisse être évolutif et sans bdd c'est vite limité :|

Mammouth du PHP | 1967 Messages

17 févr. 2016, 09:49

Trop de contraintes et puis pourquoi faire puisque tous les hébergeurs proposent une bdd. Et surtout quitte à investir du temps, autant que le projet puisse être évolutif et sans bdd c'est vite limité :|
Je me permet de te contredire, plusieurs hebergeur offre avec un nom de domaine un espace minimum pour mettre une page d'acceuil il y a PHP mais pas de BDD (chez OVH par ex il y a 10mo). Ce n'est pas grand chose, mais suffisant pour un petit site vitrine. J'y ai installé CMSimple qui est léger et sans BDD et permet quelques modifications et personnalisation bien pratique
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

ViPHP
AB
ViPHP | 5818 Messages

18 févr. 2016, 00:32

Oui effectivement ça peut rendre des services. En fait, je ne dis pas que les CMS sans bdd n'ont aucun intérêt, je voulais dire plus plus exactement que ce n'est pas un exercice très utile d'en développer un. Quitte à développer quelque chose autant que cela ne soit pas très vite limité, et par ailleurs le développement d'un CMS avec bdd est un exercice autrement plus utile/enrichissant ;)

ViPHP
ViPHP | 4039 Messages

18 févr. 2016, 11:18

On en a un pour l'intranet, une sorte d'hybride cms/wiki. C'est élémentaire, mais efficace: ça fait son boulot. Facile à déployer, facile à intégrer avec un système de versionnage :)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Luke
Invité n'ayant pas de compte PHPfrance

19 mars 2016, 14:16

Tu devrais te lancer je suis fan de se genre de cms pour en développer un tu devrais regarder comment sont fait les cms déjà existant genre http://zwiicms.com ou http://www.pluxml.org :D