Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Construire un CMS: phpPress

by
Difficulty:IntermediateLength:LongLanguages:

French (Français) translation by honeymmmm (you can also view the original English article)

Dans les tutoriels précédents, je vous ai montré comment créer un système de gestion de contenu (CMS) à l'aide de Go, Node.js et Ruby.

Dans ce tutoriel, je vais utiliser le même modèle de conception et créer un serveur utilisant PHP. Puisque PHP n’est pas un serveur en soi, mais qu’il est généralement associé au serveur Web Apache, je vais vous montrer comment configurer le serveur Web Apache dans un système virtuel Vagrant.

Configuration et chargement des bibliothèques

Pour commencer, vous devez avoir installé PHP sur votre système. Accédez au site Web de PHP et téléchargez la version correspondant à votre système. PHP est déjà installé sur la plupart des distributions Linux et sur tous les systèmes Mac OS X.

Ensuite, installez Composer, un gestionnaire de paquets pour PHP similaire à npm pour Node.js. Pour installer Composer, tapez ce qui suit dans un terminal:

Avec Composer installé, l’installation des bibliothèques du serveur est la suivante. Commencez par créer un répertoire pour le projet avec les fichiers de Construction d'un CMS: Structure et Styling ou extrayez le téléchargement de ce didacticiel. Une fois configuré, allez dans ce répertoire et tapez:

Ces lignes installent les quatre bibliothèques qui constituent le serveur: Slim Router est la bibliothèque de routage pour traiter les demandes entrantes du serveur, Parsedown traduit Markdown en HTML, Handlebars est la bibliothèque de modèles et la bibliothèque Jade est une forme abrégée de HTML qui J'utilise pour faire les pages d'index pour les messages.

Création du fichier index.php

En haut du répertoire du projet, créez le fichier index.php. Le serveur Apache s'attend à ce que la page principale du site porte ce nom. Dans ce fichier, placez le code suivant:

L'instruction require permet à PHP de savoir comment charger les différentes bibliothèques installées avec Composer. Ensuite, vous dites à PHP d'utiliser les bibliothèques LightnCandy et Jade.

Ensuite, vous configurez le routeur Slim en créant une instance de l'objet d'application Slim et en définissant le gestionnaire d'erreurs. Avec le gestionnaire d’erreur défini, vous n’obtenez jamais d’informations de débogage en cas d’erreur. Par conséquent, lors du développement, vous devez désactiver le gestionnaire d’erreur. Mais pour la production, commentez la dernière ligne avec unset.

La prochaine section de code est la création de la table de hachage $parts pour stocker les informations utilisées dans les modèles. Le programme ajoute ensuite tout ce qui se trouve dans le répertoire des pièces du site à la table de hachage. De cette façon, vous pouvez créer des éléments réutilisables à ajouter à n’importe quelle page.

La fonction SetBasicHeader() définit l'en-tête de retour pour toutes les pages. Ceci définit les fonctions de contrôle du cache et le nom du serveur. Si vous avez besoin de plus d’informations d’en-tête, c’est là que vous le définissez.

La table de hachage $shcodes contient toutes les fonctions de shortcode permettant de traiter des éléments dans une page Web. Les fonctions que j'ai écrites ici sont simples, mais elles peuvent être plus complexes si nécessaire. Cela vous permet d'intégrer du code plus dynamique dans vos pages Web.

La fonction processShortCodes() recherchera, exécutera et insérera les résultats d'un shortcode. Cette fonction trouve tous les codes courts dans une page en s’appelant récursivement sur le contenu inclus et le reste de la page.

Un shortcode a la syntaxe suivante:

Le nom correspond au nom du shortcode, arg aux arguments passés au shortcode et le contents à la partie de la page que le shortcode contient. Les -[et]- agissent exactement comme les < > en HTML.

La section suivante contient les fonctions d'assistance permettant d'ajouter des aides au moteur de modèle Guidons. Les fonctions d'assistance sont save, date et cdate. La fonction save prend un nom et du texte. Partout où le nom donné est dans une macro, le texte donné le remplacera. La fonction date prend la date actuelle et la formate en fonction de la chaîne de formatage donnée. La fonction cdate prend une date et une chaîne de formatage. Il mettra la date donnée au format donné.

La fonction suivante est ProcessPage(). Cette fonction prend la disposition de la page et le contenu de la page. Il les combinera à l’aide du moteur de modèle LightnCandy Handlebars. La page résultante est ensuite recherchée pour les codes courts. La page résultante qui suit est de nouveau exécutée dans LightnCandy. Le navigateur reçoit la sortie de LightnCandy.

La fonction page() détermine la page à envoyer à l'utilisateur. La fonction reçoit l'adresse de la page du routeur et appelle ProcessPage() pour créer la page.

La fonction posts() fonctionne exactement comme la fonction page() pour le contenu des publications. Le routeur transmet les valeurs de type de publication, blog et adresse de page de la route. Cette fonction utilise ensuite ProcessPage() pour créer la page à renvoyer.

La fonction figurePage() obtient le contenu correct de la page en fonction du nom donné. La fonction recherchera un fichier avec l'extension .html. S'il en existe un, il le lit et l'envoie à la routine d'appel.

Ensuite, la fonction recherche une extension .md. S'il en existe un, il le lit, convertit le Markdown en HTML et le renvoie à la routine d'appel. Ensuite, la fonction voit s’il en existe une avec l’extension .amber. S'il en existe un, il le lit, convertit la syntaxe Jade en HTML et le renvoie à la fonction appelante.

Cette fonction de route mappe la page principale ou la page d'accueil du site Web. Cela se déclenche pour toutes les demandes adressées au nom de domaine avec ou sans un '/ ’

Cette définition d'itinéraire correspond à la demande spécifique: /favicon.ico. Cela donne le favicon pour le site web. Il renvoie l'image /images/favicon.ico dans le répertoire du site.

Cet itinéraire récupère la feuille de style compilée et la renvoie au demandeur. La feuille de style compilée est toujours “/css/final/final.css”.

Cette route renvoie toujours le fichier JavaScript compilé se trouvant dans /js/final/final.js.

Cet itinéraire traite toutes les demandes d'images. {Image} indique au code du routeur de donner le nom de l'image à la fonction. L'appel à la fonction $request->getAttribute () récupère la valeur.

Cette route reçoit toutes les demandes de vidéos et les envoie au navigateur.

Cet itinéraire renvoie une liste d'entrées de blog et leurs résumés. La variable {blog} sera le nom du blog pour lequel lister les entrées.

Cet itinéraire reçoit une entrée de blog individuelle. {blog} est le nom du blog et {post} est l'entrée de blog à obtenir.

Les demandes de routeur de news fonctionnent comme les demandes de routeur de blog.

C'est la route de page générique. Toutes les demandes qui ne correspondent à aucune des demandes précédentes déclencheront cette demande.

Ce dernier bit de code démarre le serveur. Cette fonction effectuera tout le traitement de la demande. À son retour, l’interprète PHP met fin à la connexion avec le navigateur de l’utilisateur.

Ce serveur PHP fonctionne complètement différemment des autres serveurs de cette série. Cette routine commence et se termine pour chaque demande, tandis que les autres serveurs continuent à traiter les demandes. Par conséquent, ce serveur PHP prend plus de temps à traiter les requêtes en raison du chargement et du déchargement des routines.

Mise en place du serveur

Maintenant, configurez le serveur. L’un des moyens les plus simples d’obtenir une pile Apache et PHP consiste à utiliser Vagrant. Pour installer sur un Mac, utilisez Homebrew avec cette commande:

Si vous avez un système Windows ou Linux, utilisez les programmes d’installation du site Web Vagrant. Le site Web dispose également d’un programme d’installation autonome pour Mac, mais en l’installant avec Homebrew, vous pouvez obtenir des mises à jour automatiques en exécutant:

Une fois installé, créez un fichier nommé Vagrant dans le répertoire du projet. Dans ce fichier, placez le code suivant:

Ceci est le fichier de configuration de Vagrant. Il indique à Vagrant sur quelle machine virtuelle la machine doit être construite, le script à exécuter pour configurer la machine pour votre serveur, les ports de la machine virtuelle à mapper sur les ports de votre ordinateur principal et le dossier à synchroniser avec le dossier / vagrant dans la machine virtuelle. Vous devez définir le chemin complet du répertoire sur votre ordinateur au lieu de /full/path/to/code/directory.

Ensuite, créez le fichier bootstrap.sh et ajoutez-y ce script:

Ce script se chargera sur le serveur Web Apache et le configurera. Apache étant configuré, il installe ensuite la version 5 de PHP, configure le répertoire racine du serveur et lance le service Apache. Tout cela configurera la machine virtuelle selon les besoins pour ce projet et le répertoire racine du serveur obtiendra les fichiers du répertoire de votre projet. Toutes les modifications apportées dans votre répertoire de projet sont immédiatement disponibles pour le serveur.

Dans le répertoire du projet, créez un fichier nommé .htaccess et placez ce code:

Cela indique au serveur Apache comment gérer les requêtes pour ce site et pour la mise en cache automatique des requêtes. Le fichier index.php obtient toutes les requêtes adressées au serveur.

Lancer le serveur

Pour démarrer le serveur, exécutez la commande suivante dans le répertoire du projet:

Cela téléchargera la machine virtuelle si elle n’est pas déjà installée sur votre système, exécutera le script de provisioning et lancera le serveur. Pour afficher le site, ouvrez votre navigateur à http://localhost:8080.

phpPress Main Page
phpPress Page principale

Le navigateur devrait afficher la page ci-dessus. Le serveur est maintenant en ligne et prêt pour vos ajouts.

Si le site Web ne peut pas être visualisé, vous devez vérifier les autorisations pour tous les fichiers du site. OS X les a souvent configurés pour être lisibles uniquement. Vous devez les rendre lisibles pour tout le monde avec la commande suivante dans le répertoire du projet:

Cela garantira que le serveur Apache de la machine virtuelle peut lire les fichiers.

Pour arrêter le serveur, exécutez la commande suivante dans le répertoire du projet:

Pour en savoir plus sur l’utilisation de Vagrant, veuillez lire la documentation Vagrant. Vous pouvez également consulter les nombreux tutoriels Vagrant ici sur Envato Tuts +. J'ai utilisé l'outil Hobo pour créer mes fichiers Vagrant. C'est un excellent outil pour configurer, exécuter et gérer les systèmes Vagrant sous OS X.

Conclusion

Maintenant que vous savez construire un serveur Web simple mais puissant en utilisant le langage PHP, il est temps de faire des expériences. Créez de nouvelles pages, publications, pièces intégrables et codes courts. Cette plate-forme simple est beaucoup plus rapide que d'utiliser WordPress, et elle est totalement sous votre contrôle.

Contrairement aux autres serveurs Web de cette série, ce CMS basé sur PHP peut s'exécuter sur n'importe quel compte d'hébergement partagé. Je l’utilise pour le site Web de mon ministère sur DreamHost. Je n’ai pas optimisé les images, mais ça marche quand même assez bien. Parlez-moi de votre serveur dans les commentaires ci-dessous.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.