2010-11-18 37 views
1

On m'a demandé de comprendre comment le système Concrete5 fonctionne pour un employeur, et je ne peux pas comprendre quelque chose.Comment Concrete5 organise-t-il ses chemins absolus?

J'ai installé Concrete5 dans un répertoire du serveur appelé /realprofessionals. Lorsque le système Concrete5 fait de nouvelles pages, il leur donne leurs propres chemins absolus, par exemple:

http://www.wmcpartners.com/realprofessionals/footer

Cependant, il n'a pas vraiment fait un dossier dans le répertoire /realprofessionals appelé footer. Alors, comment ça marche? Comment peut-http://www.wmcpartners.com/realprofessionals/footer être un lien de travail?

Répondre

2

Réponse courte: Toutes les demandes de page passent actuellement par le seul fichier index.php. Le contenu de la page est stocké dans la base de données, pas dans les fichiers sur le serveur.

Réponse longue: Concrete5 (et la plupart des années CMS en PHP pour cette question) fonctionnent comme ceci: toutes les demandes sont acheminées via le fichier index.php. Ce routage est appliqué avec certaines règles mod_rewrite dans le fichier .htaccess. Les règles disent "pour toute demande, ne pas aller à cette page, mais plutôt aller à index.php et passer le reste du chemin demandé comme paramètres $ _GET". Ensuite, dans le code index.php (ou un autre code inclus par le fichier index.php), la page demandée est déterminée en fonction du chemin qui a été placé dans les paramètres $ _GET par Apache (conformément à la règle mod_rewrite dans. htaccess), et le contenu approprié est extrait de la base de données.

Le stockage de contenu dans la base de données par opposition aux fichiers sur le serveur présente plusieurs avantages. Par exemple, vous pouvez réutiliser le même modèle html - en-tête, pied de page, barre latérale - sur chaque page, et si vous changez le modèle, il sera automatiquement reflété sur toutes les pages sur lesquelles il est utilisé. En outre, il est plus facile de mélanger les pages et de leur donner l'URL que vous voulez (par exemple, aucune extension ".php" à la fin, ou/2010/11/date/based/paths/for/blog/posts). L'inconvénient est bien sûr que chaque requête nécessite de nombreuses requêtes de base de données, mais pour la plupart des sites (ceux sans zillions de pages vues), le compromis en vaut la peine (et différents types de cache peuvent aider à réduire les pertes de performances).

1

La réponse de la Jordanie est excellente, j'ajouterais que vous ne voyez probablement pas index.php dans l'url parce que vous avez activé URL jolies (type « jolie » sur searchbox de concrete5 pour vérifier).

Quoi qu'il en soit, la meilleure façon d'ajouter programmation lien vers les pages internes est:

<a href="<?=$this->url('page-name');?>"> 
    page name 
</a> 

Il fonctionne aussi bien sur localhost et en ligne, avec ou sans URL jolies.

(Pour le nom de la page, allez dans tableau de bord/plan complet/nom-page/propriétés/chemins d'accès et emplacement.)