BACKPACKER CMS - SITE DE VOYAGE WEB vv1.0

Backpacker CMS

Cette documentation explique l'installation, la configuration, les dépendances techniques, les fonctionnalités disponibles et les bonnes pratiques d'utilisation du thème.

Mise à jour le 1 juin 2026 DOCUMENTATION
Documentation du thème LNLab's Backpacker CMS

Documentation complète du thème LNLab's Backpacker CMS

LNLab's Backpacker CMS est un thème PHP natif conçu pour créer un site de voyage, de backpacking, de guides pratiques ou de média éditorial autour des destinations. Il inclut un site public complet, un back-office d'administration, un theme builder, une gestion SEO, une carte interactive, des guides, des articles, des bonnes adresses, des partenaires, une newsletter, un module de contact et un système de rôles et permissions.

Cette documentation explique l'installation, la configuration, les dépendances techniques, les fonctionnalités disponibles et les bonnes pratiques d'utilisation du thème.

1. Présentation générale

Le thème permet de publier un site voyage structuré autour de plusieurs types de contenus: destinations, articles, guides, bonnes adresses, pages légales et partenaires. Il a été pensé pour un rendu éditorial premium avec grandes images, contenus riches, informations pratiques, carte interactive et administration simple.

Le projet fonctionne sans framework lourd. Il repose sur une architecture PHP maison avec un routeur, des contrôleurs, des vues, des modèles, une connexion PDO MySQL, une authentification administrateur et des services SMTP/IMAP intégrés.

Fonctionnalités principales

  • Site public responsive pour blog voyage, guides et destinations.
  • Accueil éditorial configurable avec blocs activables ou désactivables.
  • Pages destinations avec budget, saison, sécurité, transports et quartiers recommandés.
  • Articles avec catégorie, auteur, destination liée, temps de lecture, image, SEO et date de publication.
  • Guides de voyage avec durée, budget, étapes, contenu et fichier PDF optionnel.
  • Bonnes adresses avec type, adresse, coordonnées GPS, note, prix, image et galerie.
  • Carte interactive alimentée par les bonnes adresses géolocalisées.
  • Planner voyage avec deux modes: génération gratuite depuis les contenus du CMS ou génération IA optionnelle via une clé API.
  • Pages légales administrables.
  • Partenaires et liens sponsorisés avec compteur de clics prévu en base.
  • Newsletter avec inscription publique et envoi de campagnes depuis l'administration.
  • Formulaire de contact public et suivi des échanges dans le back-office.
  • Réponses aux contacts par SMTP et import des réponses entrantes par IMAP.
  • Gestion des utilisateurs, rôles et permissions.
  • SEO: titres, descriptions, image Open Graph, robots.txt et sitemap.xml.
  • Import SQL de démonstration avec contenus prêts à tester.
  • Mode démo automatique si la base de données n'est pas disponible.

2. Dépendances techniques

Le thème est prévu pour un hébergement PHP classique avec MySQL ou MariaDB. Aucune installation Composer ou Node.js n'est nécessaire dans l'état actuel du projet.

Serveur recommandé

  • Serveur web: Apache recommandé.
  • Réécriture d'URL: module Apache mod_rewrite recommandé.
  • Racine web idéale: dossier public/.
  • Alternative: si l'hébergement impose la racine du projet, le fichier index.php à la racine relaie vers l'application.

PHP

  • Version recommandée: PHP 8.1 ou supérieur.
  • Version minimale conseillée: PHP 8.0, car le code utilise des fonctionnalités modernes comme match, str_starts_with et les déclarations strictes.
  • Extensions PHP nécessaires: PDO, pdo_mysql, fileinfo, session, openssl.
  • Extension PHP optionnelle: curl, uniquement nécessaire pour le planner IA.
  • Fonctions utilisées pour les uploads: mime_content_type, getimagesize, move_uploaded_file.
  • Fonctions utilisées pour la sécurité: password_hash, password_verify, random_bytes, hash_equals.
  • Accès réseau sortant requis uniquement si vous utilisez l'envoi SMTP ou l'import IMAP.

Base de données

  • Base supportée: MySQL ou MariaDB.
  • Encodage: utf8mb4.
  • Moteur SQL: InnoDB.
  • MySQL recommandé: 5.7 ou supérieur.
  • MariaDB recommandé: 10.2 ou supérieur.
  • Le schéma utilise notamment des clés étrangères, des index, un champ JSON et un index FULLTEXT.

Dossiers devant être accessibles en écriture

  • storage/sessions/: stockage des sessions PHP.
  • storage/logs/: fichiers de logs applicatifs.
  • public/uploads/: images, logos, PDF de guides et médias uploadés depuis l'administration.

3. Structure du projet

Le thème est organisé de manière simple afin de pouvoir être compris, adapté et déployé facilement.

Dossier ou fichier Rôle
index.php Point d'entrée racine. Il relaie vers public/index.php si la racine web n'est pas configurée sur public/.
public/index.php Front controller principal. Il déclare les routes publiques et administrateur.
install.php Installateur web: import SQL et création du compte Super Admin.
public/install.php Relais vers l'installateur si la racine web pointe sur public/.
.env.example Exemple de configuration environnement: URL, base de données, SMTP, carte.
config/ Configuration PHP de l'application et de la base de données.
database/schema_mysql.sql Schéma SQL complet avec tables, rôles, permissions, réglages et contenus de démonstration.
app/Core/ Noyau de l'application: routeur, contrôleur de base, authentification, connexion database et logger.
app/Controllers/ Contrôleurs public et admin.
app/Models/ Repositories de contenu et données de démonstration.
app/Services/ Services SMTP et IMAP.
app/Views/ Layouts et vues HTML du site public et de l'administration.
public/assets/ Feuilles de style et JavaScript publics/admin.
public/uploads/ Dossier de destination des fichiers envoyés depuis le back-office.
storage/ Logs, sessions et fichiers internes.

4. Installation

Étape 1: envoyer les fichiers sur le serveur

Envoyez l'ensemble du projet sur votre hébergement. Si possible, configurez la racine web du domaine sur le dossier public/. C'est la configuration la plus propre car elle évite d'exposer les dossiers internes comme app/, config/, database/ et storage/.

Si votre hébergeur ne permet pas de pointer vers public/, vous pouvez placer le projet à la racine de l'hébergement. Le fichier index.php racine chargera l'application.

Étape 2: créer le fichier .env

Copiez le fichier .env.example vers un nouveau fichier nommé .env, puis adaptez les valeurs à votre serveur.

APP_NAME="LNLab's Backpacker"
APP_URL=https://www.votre-domaine.fr
APP_ENV=production
APP_DEBUG=false
APP_KEY=change-this-random-key

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lnl_backpackercms
DB_USERNAME=votre_utilisateur
DB_PASSWORD=votre_mot_de_passe

SMTP_HOST=
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM=noreply@example.com

MAP_PROVIDER=leaflet
MAP_API_KEY=

Étape 3: créer la base de données

Créez une base MySQL ou MariaDB vide avec l'encodage utf8mb4. Renseignez ensuite les accès dans le fichier .env.

Étape 4: importer le schéma SQL

Deux méthodes sont possibles.

  • Méthode recommandée en local ou avec accès SQL: importer le fichier database/schema_mysql.sql depuis phpMyAdmin, Adminer, MySQL CLI ou l'outil fourni par l'hébergeur.
  • Méthode web: ouvrir /install.php ou /public/install.php selon votre configuration serveur, puis lancer l'installation depuis le formulaire.

Le fichier SQL contient le schéma complet, les rôles, les permissions, les réglages par défaut et un contenu de démonstration: destinations, articles, guides, bonnes adresses, partenaires, pages légales, contacts et abonnés newsletter.

Étape 5: créer le compte administrateur

L'installateur permet de créer un compte Super Admin avec un mot de passe de 10 caractères minimum. Après installation, connectez-vous à l'administration depuis /admin/login.

Étape 6: supprimer ou désactiver l'installateur

Après validation de l'installation, supprimez ou bloquez l'accès à install.php. Par sécurité, l'installateur refuse normalement de se relancer si des utilisateurs existent déjà, sauf si la variable INSTALL_ALLOW_REINSTALL=true est définie volontairement.

Installation assistée

L'installateur web peut aussi créer le fichier .env, tester la connexion MySQL, importer le schéma et créer un compte Super Admin personnalisé.

5. Connexion au back-office

L'administration est accessible à l'adresse suivante:

/admin/login

Après import du fichier SQL, le compte administrateur par défaut est:

  • Email: admin@backpacker.fr
  • Mot de passe: password

Ce compte par défaut doit uniquement servir à la première connexion ou aux tests. Lorsque ce compte se connecte avec le mot de passe password, le back-office force le changement du mot de passe avant d'autoriser l'accès aux autres pages d'administration.

6. Après installation

Après une installation réussie, prenez quelques minutes pour finaliser la configuration avant d'ouvrir le site au public.

Checklist de première configuration

  1. Connectez-vous au back-office depuis /admin/login.
  2. Changez le mot de passe du compte administrateur si vous avez utilisé le compte par défaut.
  3. Ouvrez /admin/system et vérifiez l'état serveur: PHP, extensions, base de données, droits d'écriture et présence éventuelle de install.php.
  4. Supprimez ou bloquez install.php après validation de l'installation.
  5. Configurez le nom du site, l'URL publique, le logo, le favicon et l'image Open Graph dans les paramètres.
  6. Remplacez les textes de l'accueil, du footer, des pages publiques et du formulaire de contact.
  7. Personnalisez les pages légales: mentions légales, confidentialité, cookies, CGU et accessibilité.
  8. Supprimez les données de démonstration depuis /admin/system lorsque vous êtes prêt à repartir sur vos propres contenus.
  9. Ajoutez vos premières destinations, articles, guides, bonnes adresses et partenaires.
  10. Configurez le SMTP si vous souhaitez envoyer des newsletters ou répondre aux contacts depuis le back-office.
  11. Configurez l'IMAP uniquement si vous souhaitez importer les réponses aux contacts dans le back-office.
  12. Vérifiez /sitemap.xml, /robots.txt et les principales pages publiques.

Nettoyage du package avant livraison client

Si vous distribuez le thème à un client ou à un acheteur, préparez un ZIP propre contenant uniquement les fichiers nécessaires.

  • Ne livrez pas les fichiers de session contenus dans storage/sessions/.
  • Ne livrez pas les logs existants dans storage/logs/, sauf un fichier vide de conservation si nécessaire.
  • Ne livrez pas de fichiers uploadés de test dans public/uploads/.
  • Ne livrez pas de fichier .env prérempli avec vos propres accès.
  • Conservez .env.example comme modèle de configuration.
  • Conservez les fichiers .htaccess de protection.
  • Conservez la documentation, le changelog et le schéma SQL.

Conseil de sécurité

Le compte admin@backpacker.fr / password est pratique pour une démo ou une première installation, mais il ne doit pas rester actif tel quel en production. Le thème force le changement du mot de passe lors de la première connexion avec ces identifiants.

7. Configuration principale

Les paramètres essentiels sont répartis entre le fichier .env, les fichiers du dossier config/ et la table SQL settings. Les réglages éditoriaux et visuels sont modifiables depuis l'administration.

Variables du fichier .env

Variable Description
APP_NAME Nom de l'application.
APP_URL URL principale du site. Elle sert à générer les liens absolus, les assets, le sitemap et certains liens médias.
APP_ENV Environnement courant: local, production, etc.
APP_DEBUG Affichage détaillé des erreurs. À laisser sur false en production.
APP_KEY Clé applicative prévue pour identifier l'installation. Utilisez une valeur unique.
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD Connexion MySQL/MariaDB.
SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_FROM Configuration SMTP globale. Le module newsletter/contact utilise surtout les réglages SMTP enregistrés dans l'administration.
MAP_PROVIDER Fournisseur de carte. La valeur par défaut est leaflet.
MAP_API_KEY Clé API optionnelle si un fournisseur de carte externe l'exige.

Réglages modifiables depuis l'administration

  • Titre du site, slogan et méta-description.
  • URL publique du site.
  • Logo, favicon et image Open Graph.
  • Textes du héros de la page d'accueil.
  • Image principale de l'accueil.
  • Libellés des boutons de l'accueil.
  • Titres et introductions des sections destinations, articles, guides, carte et partenaires.
  • Titres et introductions des pages de listing.
  • Textes du formulaire de contact.
  • Textes du footer et de la newsletter footer.
  • Liens sociaux Instagram, TikTok et Facebook.
  • Couleurs publiques principales, secondaires, accent, fond, texte et texte des boutons.
  • Style visuel des boutons publics.
  • Réglages SMTP newsletter.
  • Réglages IMAP de suivi des réponses contacts.
  • Mode sombre.
  • Consentement analytics et consentement carte.

8. Pages publiques disponibles

Le thème expose plusieurs pages publiques prêtes à l'emploi.

URL Description
/ Page d'accueil éditoriale avec destinations, articles, carte, bonnes adresses, guides, partenaires et newsletter selon les blocs activés.
/destinations Liste paginée des destinations publiées.
/destinations/{slug} Page détaillée d'une destination.
/articles Liste paginée des articles publiés.
/articles/{slug} Page détaillée d'un article.
/guides Liste paginée des guides de voyage.
/guides/{slug} Page détaillée d'un guide.
/bonnes-adresses Liste des bonnes adresses actives.
/carte Carte interactive basée sur les adresses géolocalisées.
/page/{slug} Page légale ou page simple administrable.
/newsletter Route POST d'inscription à la newsletter.
/contact Route POST de soumission du formulaire de contact.
/sitemap.xml Sitemap XML généré automatiquement.
/robots.txt Fichier robots.txt généré automatiquement.

9. API publiques

Le thème fournit quelques endpoints JSON simples pour réutiliser les contenus dans une carte, un module externe ou une intégration front.

URL Données retournées
/api/articles Articles publiés.
/api/destinations Destinations publiées.
/api/guides Guides publiés.
/api/map-points Points de carte générés depuis les bonnes adresses actives.

10. Administration

Le back-office permet de gérer les contenus, les réglages du site, les utilisateurs, le SEO, la carte, la newsletter et les contacts.

Tableau de bord

Le tableau de bord affiche des statistiques synthétiques:

  • Nombre d'articles.
  • Nombre de destinations.
  • Nombre de contacts actifs.
  • Total des clics partenaires.
  • Nombre d'articles en brouillon.

Gestion des contenus

Les contenus administrables sont accessibles depuis les routes /admin/content/{type}. Les types actuellement pris en charge sont:

  • articles
  • destinations
  • places
  • guides
  • partners
  • pages

Theme Builder

Le theme builder permet de choisir un template et d'activer ou désactiver les blocs de la page d'accueil. Le thème contient déjà trois templates enregistrés en base:

  • editorial: rendu éditorial premium, grandes images et narration immersive.
  • backpacker: ambiance carnet de route et conseils terrain.
  • minimal: approche plus sobre centrée sur les guides et la carte.

Les blocs gérés par le theme builder sont notamment:

  • Hero immersif.
  • Recherche.
  • Top destinations.
  • Articles récents.
  • Carte interactive.
  • Bonnes adresses.
  • Guides.
  • Partenaires.
  • Newsletter.

Réglages globaux

La page des réglages permet de personnaliser l'identité, les textes, les images, le footer, les réseaux sociaux, les emails et certains consentements.

SEO

La page SEO permet de gérer les réglages globaux suivants:

  • Titre du site.
  • Slogan.
  • Méta-description globale.
  • Image Open Graph.
  • Instructions supplémentaires pour robots.txt.

Carte

La page carte permet de configurer:

  • Fournisseur de carte.
  • Clé API éventuelle.
  • Style de carte.
  • Latitude et longitude du centre.
  • Niveau de zoom.
  • Affichage des popups.
  • URL d'intégration Polarsteps optionnelle.

Utilisateurs

L'administration permet de créer et modifier des utilisateurs, d'associer un rôle, d'activer ou désactiver un compte et d'ajouter des permissions individuelles.

Compte personnel

Chaque administrateur peut modifier son nom, son email et son mot de passe depuis la page compte. Le mot de passe doit contenir au moins 10 caractères lorsqu'il est changé.

11. Types de contenus

Destinations

Les destinations servent à présenter des lieux ou pays. Elles peuvent être liées aux articles, aux guides et aux bonnes adresses.

Champs principaux:

  • Titre.
  • Slug.
  • Description courte.
  • Contenu long.
  • Image.
  • Pays.
  • Continent.
  • Meilleure saison.
  • Budget.
  • Conseils météo.
  • Sécurité.
  • Transports.
  • Quartiers recommandés.
  • Statut: brouillon, publié, planifié ou archivé.
  • Ordre d'affichage.
  • Titre SEO.
  • Description SEO.
  • Image Open Graph.
  • URL canonique.
  • Indexation robots.
  • Date de publication.

Articles

Les articles sont destinés aux carnets de route, guides pratiques, conseils, retours d'expérience et contenus éditoriaux.

Champs principaux:

  • Catégorie.
  • Auteur.
  • Destination liée.
  • Titre.
  • Slug.
  • Extrait.
  • Contenu.
  • Image.
  • Temps de lecture.
  • Statut.
  • Titre SEO.
  • Description SEO.
  • Image Open Graph.
  • URL canonique.
  • Indexation robots.
  • Date de publication.

Bonnes adresses

Les bonnes adresses alimentent la page dédiée et la carte interactive. Elles peuvent représenter un restaurant, un café, un hébergement, un spot photo, une randonnée, un coworking, une adresse à éviter ou un autre lieu utile.

Champs principaux:

  • Destination liée.
  • Catégorie.
  • Nom.
  • Slug.
  • Type.
  • Description.
  • Adresse.
  • Latitude.
  • Longitude.
  • URL externe.
  • Prix.
  • Note.
  • Image.
  • Galerie.
  • Statut actif ou inactif.

Guides

Les guides regroupent des itinéraires, programmes ou contenus pratiques plus structurés.

Champs principaux:

  • Destination liée.
  • Titre.
  • Slug.
  • Durée.
  • Budget.
  • Étapes.
  • Contenu.
  • PDF optionnel.
  • Statut.
  • Titre SEO.
  • Description SEO.
  • Date de publication.

Partenaires

Les partenaires permettent d'afficher des marques, liens sponsorisés ou ressources recommandées.

Champs principaux:

  • Nom.
  • Logo.
  • URL.
  • Description.
  • Indication sponsorisée.
  • Statut actif.
  • Ordre d'affichage.

Pages légales et pages simples

Le thème inclut une gestion de pages simples utilisée notamment pour les pages légales.

Pages créées par défaut:

  • Mentions légales.
  • Politique de confidentialité.
  • Politique cookies.
  • CGU.
  • Accessibilité.
  • Contact.

12. Gestion des médias et uploads

Les fichiers envoyés depuis l'administration sont stockés dans public/uploads/, dans des sous-dossiers selon leur usage.

Dossiers d'upload

  • public/uploads/content/: images de contenus et images Open Graph.
  • public/uploads/guides/: PDF associés aux guides.
  • public/uploads/partners/: logos partenaires.
  • public/uploads/branding/: logo, favicon, image Open Graph globale et images de branding.

Formats acceptés

  • Images: JPG, PNG, WebP.
  • SVG: accepté avec vérification de sécurité basique.
  • ICO: accepté pour favicon.
  • PDF: accepté pour les guides et certains contenus autorisés.

Limites de taille

  • Uploads de contenu: 6 Mo maximum.
  • Uploads de branding: 2 Mo maximum.

Contrôles effectués

  • Vérification de l'erreur d'upload PHP.
  • Vérification de la taille.
  • Vérification que le fichier provient bien d'un upload HTTP.
  • Vérification MIME avec mime_content_type.
  • Vérification de cohérence extension/MIME.
  • Vérification image avec getimagesize pour JPG, PNG et WebP.
  • Vérification de l'en-tête %PDF- pour les PDF.
  • Filtrage basique des SVG dangereux: scripts, événements inline, iframe, object, embed, JavaScript et data URI.

13. Newsletter

Le thème inclut une newsletter simple avec inscription publique, liste d'abonnés et envoi de campagnes depuis le back-office.

Inscription publique

Les visiteurs peuvent s'inscrire via le formulaire newsletter. L'adresse email est enregistrée dans la table newsletter_subscribers avec le statut active. Si l'email existe déjà, son statut est réactivé.

Campagnes

Depuis l'administration, il est possible de saisir:

  • Sujet.
  • Préheader.
  • Contenu.
  • Libellé de bouton optionnel.
  • URL de bouton optionnelle.

L'envoi est réalisé par SMTP. Le thème génère une version HTML et une version texte de l'email.

Configuration SMTP newsletter

Les réglages SMTP sont administrables depuis le back-office:

  • Nom d'expéditeur.
  • Email d'expéditeur.
  • Email de réponse.
  • Hôte SMTP.
  • Port SMTP.
  • Chiffrement: TLS ou SSL.
  • Nom d'utilisateur SMTP.
  • Mot de passe SMTP.

Historique

Chaque campagne envoyée peut être enregistrée avec le sujet, le nombre d'emails envoyés, le nombre d'échecs, la dernière erreur et l'utilisateur ayant lancé l'envoi.

14. Contacts et réponses email

Le thème propose un formulaire de contact public et un espace de gestion des demandes dans l'administration.

Formulaire public

Le formulaire enregistre les champs suivants:

  • Nom.
  • Email.
  • Sujet.
  • Message.

Les libellés, placeholders, titre, introduction, bouton et image du bloc contact sont configurables depuis les réglages.

Gestion des contacts

Dans le back-office, les messages peuvent être consultés, assignés, passés en statut new, open, closed ou archived, supprimés ou enrichis avec des réponses.

Réponses sortantes

Si le SMTP est configuré, un administrateur peut répondre directement depuis le back-office. Le sujet de réponse contient un jeton de suivi de type [CONTACT-123], ce qui permet ensuite d'importer les réponses entrantes.

Import IMAP

Si l'IMAP est configuré, le thème peut consulter les emails non lus de la boîte configurée, repérer les sujets contenant un jeton [CONTACT-ID], importer la réponse dans le fil du contact puis marquer l'email comme lu.

Configuration IMAP

  • Hôte IMAP.
  • Port IMAP, généralement 993.
  • Chiffrement, généralement SSL.
  • Nom d'utilisateur.
  • Mot de passe.
  • Boîte à surveiller, par défaut INBOX.

15. SEO

Le thème intègre plusieurs éléments SEO utiles pour un site éditorial.

SEO global

  • Titre du site.
  • Slogan.
  • Méta-description globale.
  • Image Open Graph globale.
  • Instructions additionnelles pour robots.txt.

SEO par contenu

Les destinations, articles, guides et pages disposent de champs SEO dédiés selon le type de contenu:

  • Titre SEO.
  • Description SEO.
  • Image Open Graph pour les articles et destinations.
  • URL canonique pour les articles et destinations.
  • Option d'indexation robots pour articles et destinations.

Sitemap XML

Le sitemap est généré automatiquement à l'adresse /sitemap.xml. Il inclut les principales pages publiques, les destinations publiées, les articles publiés et les guides publiés.

Robots.txt

Le fichier /robots.txt est généré automatiquement. Par défaut, il autorise l'indexation du site public, bloque /admin et ajoute le lien vers le sitemap.

16. Carte interactive

La carte interactive utilise les bonnes adresses actives qui possèdent des coordonnées GPS. Chaque point peut contenir un nom, un type, une destination, une description, une adresse, un prix, une note, une URL externe et jusqu'à trois images.

Données utilisées pour un point de carte

  • Nom de l'adresse.
  • Type de lieu.
  • Destination associée.
  • Description.
  • Adresse.
  • Latitude.
  • Longitude.
  • Prix.
  • Note.
  • URL externe.
  • Image principale et images de galerie.

Réglages disponibles

  • Fournisseur de carte.
  • Clé API.
  • Style.
  • Centre par défaut.
  • Zoom par défaut.
  • Activation des popups.
  • Embed Polarsteps optionnel.

16 bis. Planner voyage

Le thème inclut un planner voyage accessible depuis la barre de l'accueil. L'administrateur peut choisir entre deux modes depuis les paramètres du site.

Mode gratuit

Le mode gratuit ne dépend d'aucune API externe. Il utilise les destinations, guides, articles et bonnes adresses publiés dans le CMS pour générer une proposition de voyage simple: résumé, budget estimé, rythme, itinéraire jour par jour, conseils et points à vérifier.

Mode IA optionnel

Le mode IA utilise les contenus du CMS comme contexte, puis appelle le fournisseur configuré par l'administrateur. Les fournisseurs prévus sont OpenRouter, OpenAI, Claude / Anthropic, Google Gemini et Mistral AI. Ce mode nécessite une clé API renseignée dans le back-office et l'extension PHP curl.

Réglages disponibles

  • Mode du planner: gratuit, IA optionnelle ou désactivé.
  • Fournisseur IA: OpenRouter, OpenAI, Claude / Anthropic, Google Gemini ou Mistral AI.
  • Modèle IA à utiliser.
  • Clé API du fournisseur.
  • Instruction complémentaire pour orienter le style des recommandations.

17. Rôles et permissions

Le thème contient une base de rôles et permissions permettant de limiter l'accès aux modules du back-office.

Rôles créés par défaut

  • Super Admin.
  • Administrateur.
  • Éditeur.
  • Rédacteur.
  • Modérateur.
  • Partenaire.

Permissions créées par défaut

  • manage_articles: gérer les articles.
  • publish_articles: publier les articles.
  • manage_destinations: gérer les destinations.
  • manage_map: gérer la carte et les bonnes adresses.
  • manage_partners: gérer les partenaires.
  • manage_seo: gérer le SEO.
  • manage_theme: gérer le thème et le theme builder.
  • manage_settings: gérer les paramètres généraux du site.
  • manage_newsletter: gérer les abonnés et campagnes newsletter.
  • manage_system: accéder à l'état système.
  • cleanup_demo: supprimer les données de démonstration.
  • manage_legal: gérer les pages légales.
  • manage_users: gérer les utilisateurs.
  • view_contacts: voir et traiter les contacts.
  • delete_content: supprimer des contenus.
  • view_stats: accéder aux statistiques.

Le rôle Super Admin possède toutes les permissions. Les autres utilisateurs peuvent recevoir des permissions via leur rôle et via des permissions individuelles.

18. État système et nettoyage démo

Le back-office contient une page /admin/system réservée aux utilisateurs ayant la permission manage_system. Elle sert à vérifier la santé technique de l'installation.

Contrôles disponibles

  • Version du thème.
  • Version PHP et compatibilité PHP 8.0+.
  • Extensions PHP requises.
  • Connexion base de données.
  • Présence du fichier .env.
  • État de APP_DEBUG.
  • Présence de install.php.
  • Droits d'écriture de storage/, storage/sessions/, storage/logs/ et public/uploads/.
  • Présence des données de démonstration.

Nettoyage des données de démonstration

Un bouton de nettoyage permet de supprimer les contenus de démonstration connus: destinations, articles, guides, bonnes adresses, partenaires, contacts, abonnés newsletter et médias de démonstration. Les réglages, pages légales, rôles, permissions et compte administrateur sont conservés.

19. Sécurité

Le thème inclut plusieurs protections utiles pour une application PHP classique.

Authentification

  • Mots de passe stockés avec password_hash.
  • Vérification avec password_verify.
  • Régénération de session après connexion.
  • Blocage temporaire après plusieurs tentatives de connexion échouées.
  • Utilisateur inactif non autorisé à se connecter.

Sessions

  • Nom de session dédié: lnl_backpacker_session.
  • Sessions stockées dans storage/sessions/.
  • Cookies HTTP only.
  • SameSite Lax.
  • Cookie sécurisé automatiquement si la requête est en HTTPS.

CSRF

Les formulaires POST utilisent un jeton CSRF généré en session. Les soumissions invalides retournent une erreur 419.

Échappement HTML

Les sorties HTML doivent utiliser la fonction e(), basée sur htmlspecialchars avec encodage UTF-8.

Uploads

Les uploads sont contrôlés par taille, MIME, extension et type réel de fichier. Les SVG sont filtrés pour éviter les éléments et attributs dangereux les plus courants.

Logs

Les erreurs, avertissements et actions importantes sont écrits dans storage/logs/app.log.

20. Base de données

Le fichier database/schema_mysql.sql crée toutes les tables nécessaires au fonctionnement du thème.

Tables principales

  • roles: rôles utilisateurs.
  • permissions: permissions disponibles.
  • role_permission: liaison rôles/permissions.
  • users: administrateurs et utilisateurs du back-office.
  • user_permission: permissions individuelles.
  • media: médiathèque et références médias.
  • settings: réglages du site.
  • categories: catégories d'articles, de lieux ou de guides.
  • tags: tags éditoriaux.
  • destinations: destinations.
  • articles: articles.
  • article_tag: liaison articles/tags.
  • places: bonnes adresses et points de carte.
  • guides: guides de voyage.
  • partners: partenaires.
  • theme_templates: templates disponibles.
  • theme_blocks: blocs configurables du thème.
  • legal_pages: pages légales et pages simples.
  • contacts: messages reçus.
  • contact_replies: réponses entrantes et sortantes liées aux contacts.
  • newsletter_subscribers: abonnés newsletter.
  • newsletter_campaigns: historique des campagnes envoyées.
  • redirects: redirections prévues en base.
  • admin_activity_logs: journal d'activité administrateur.

Contenu de démonstration

Le SQL insère du contenu prêt à l'emploi afin d'avoir un site complet immédiatement après installation. Il inclut notamment des destinations comme Bali, Tokyo, Lisbonne, Oaxaca et Reykjavik, des articles, des guides, des bonnes adresses, des partenaires, des pages légales, des contacts et des abonnés newsletter.

21. Personnalisation du thème

Le thème peut être personnalisé à plusieurs niveaux.

Depuis l'administration

  • Changer les textes principaux du site.
  • Modifier le logo, favicon et image Open Graph.
  • Adapter l'accueil et les textes de sections.
  • Activer ou désactiver les blocs de page d'accueil.
  • Configurer le mode sombre.
  • Modifier les textes du formulaire de contact.
  • Configurer le footer.
  • Ajouter les liens sociaux.

Depuis les vues

Les fichiers du dossier app/Views/ permettent de modifier le HTML du site public ou de l'administration.

  • app/Views/layouts/public.php: layout public global.
  • app/Views/layouts/admin.php: layout du back-office.
  • app/Views/public/home.php: page d'accueil.
  • app/Views/public/list.php: pages de liste génériques.
  • app/Views/public/detail.php: pages détail article/destination.
  • app/Views/public/guides.php: liste des guides.
  • app/Views/public/guide-detail.php: détail guide.
  • app/Views/public/map.php: carte.
  • app/Views/public/places.php: bonnes adresses.
  • app/Views/public/page.php: pages légales et pages simples.

Depuis les assets

  • public/assets/css/public.css: styles du site public.
  • public/assets/css/admin.css: styles du back-office.
  • public/assets/js/public.js: interactions publiques.
  • public/assets/js/admin.js: interactions administrateur.

22. Mise en production

Avant de mettre le thème en ligne, vérifiez les points suivants.

Checklist de déploiement

  • Configurer APP_URL avec l'URL finale du site.
  • Mettre APP_ENV=production.
  • Mettre APP_DEBUG=false.
  • Utiliser une valeur unique pour APP_KEY.
  • Créer une base MySQL/MariaDB dédiée.
  • Importer database/schema_mysql.sql.
  • Créer un compte Super Admin avec un mot de passe robuste.
  • Supprimer ou bloquer install.php.
  • Aller dans /admin/system pour vérifier l'état serveur.
  • Changer le mot de passe par défaut si vous avez utilisé admin@backpacker.fr / password.
  • Supprimer les données de démonstration depuis /admin/system si vous partez d'une base de démo.
  • Vérifier que storage/ et public/uploads/ sont accessibles en écriture.
  • Configurer la racine web sur public/ si possible.
  • Vérifier que les URLs propres fonctionnent.
  • Configurer le SMTP si vous utilisez newsletter ou réponses contacts.
  • Configurer l'IMAP si vous souhaitez importer les réponses aux contacts.
  • Remplacer les contenus de démonstration.
  • Personnaliser les pages légales.
  • Tester le sitemap et robots.txt.

23. Maintenance

Sauvegardes

Effectuez régulièrement des sauvegardes de la base de données et du dossier public/uploads/. Les contenus éditoriaux, réglages, utilisateurs, contacts et abonnés newsletter sont stockés en base. Les fichiers envoyés sont stockés sur disque.

Logs

Consultez storage/logs/app.log en cas d'erreur serveur, de problème d'email, de connexion ou d'import IMAP.

Mises à jour

Avant toute mise à jour du thème, sauvegardez la base de données, les fichiers uploadés et les vues que vous avez modifiées. Si une mise à jour modifie la structure SQL, appliquez uniquement le script de mise à jour fourni pour cette version.

Déployer une mise à jour sans tout réinstaller

  1. Sauvegarder la base de données et le dossier public/uploads/.
  2. Remplacer les fichiers du thème par la nouvelle version, sans écraser .env ni public/uploads/.
  3. Se connecter au back-office.
  4. Ouvrir /admin/system pour contrôler l'état serveur.
  5. Appliquer le script SQL de mise à jour fourni uniquement si la version en contient un.
  6. Contrôler le site public et le back-office.

Le fichier database/schema_mysql.sql sert aux nouvelles installations. Il ne doit pas être réimporté sur un site déjà en production, sinon les données client peuvent être remplacées ou dupliquées.

24. Dépannage

La page affiche "Erreur serveur"

  • Vérifiez storage/logs/app.log.
  • Activez temporairement APP_DEBUG=true en local uniquement.
  • Vérifiez la version PHP.
  • Vérifiez les droits d'écriture sur storage/.

La base de données ne se connecte pas

  • Vérifiez DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME et DB_PASSWORD.
  • Vérifiez que l'extension pdo_mysql est activée.
  • Vérifiez que l'utilisateur SQL possède les droits nécessaires.

Les URLs propres ne fonctionnent pas

  • Vérifiez que mod_rewrite est activé sur Apache.
  • Vérifiez que le fichier .htaccess est bien présent.
  • Vérifiez que l'hébergement autorise les règles .htaccess.
  • Si possible, pointez la racine web vers public/.

Les images uploadées ne s'affichent pas

  • Vérifiez les permissions du dossier public/uploads/.
  • Vérifiez que le fichier a bien été transféré.
  • Vérifiez la valeur APP_URL.
  • Vérifiez que le format envoyé est accepté.

La newsletter ne part pas

  • Vérifiez que newsletter_smtp_host est renseigné.
  • Vérifiez que l'email d'expéditeur est valide.
  • Vérifiez le port et le chiffrement SMTP.
  • Vérifiez les logs dans storage/logs/app.log.
  • Vérifiez que le serveur autorise les connexions SMTP sortantes.

L'import IMAP ne fonctionne pas

  • Vérifiez l'hôte, le port, le chiffrement, l'utilisateur et le mot de passe IMAP.
  • Vérifiez que la boîte configurée existe.
  • Vérifiez que les emails entrants contiennent bien un jeton [CONTACT-ID] dans le sujet.
  • Vérifiez que le serveur autorise les connexions IMAP sortantes.

25. Bonnes pratiques d'utilisation

  • Remplacer tout le contenu de démonstration avant la mise en ligne.
  • Utiliser des slugs courts, lisibles et stables.
  • Renseigner les titres SEO et méta-descriptions des contenus importants.
  • Compresser les images avant upload pour améliorer les performances.
  • Garder une cohérence éditoriale dans les catégories, tags et types de lieux.
  • Vérifier les coordonnées GPS des bonnes adresses avant publication.
  • Personnaliser les pages légales selon votre activité, votre pays et votre hébergeur.
  • Utiliser un compte administrateur par personne plutôt qu'un compte partagé.
  • Limiter les permissions des utilisateurs au strict nécessaire.
  • Sauvegarder régulièrement la base de données et les uploads.

26. Résumé

LNLab's Backpacker CMS fournit une base complète pour lancer un site voyage éditorial avec contenus structurés, carte interactive, back-office, newsletter, contacts, SEO, utilisateurs et personnalisation du thème. Son installation repose sur un environnement PHP/MySQL classique et son architecture sans framework lourd facilite l'adaptation aux besoins d'un projet spécifique.