2010-11-18 10 views
1

Ich wurde gebeten, herauszufinden, wie das Concrete5 System für einen Arbeitgeber funktioniert, und ich kann nichts herausfinden.Wie organisiert Concrete5 seine absoluten Pfade?

Ich habe Concrete5 in einem Verzeichnis auf dem Server /realprofessionals installiert. Wenn das Concrete5 System neue Seiten macht, es gibt ihnen ihre eigenen absoluten Pfade, zum Beispiel:

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

Allerdings hat es nicht wirklich einen Ordner im footer genannt /realprofessionals Verzeichnis gemacht. Wie funktioniert das? Wie kann http://www.wmcpartners.com/realprofessionals/footer ein funktionierender Link sein?

Antwort

2

Kurze Antwort: Alle Seitenanforderungen gehen tatsächlich durch die einzige index.php Datei. Der Seiteninhalt wird in der Datenbank und nicht in Dateien auf dem Server gespeichert.

Lange Antwort: Concrete5 (und die meisten PHP-basierten CMS für diese Angelegenheit) funktionieren wie folgt: alle Anfragen geleitet werden durch die Datei index.php. Dieses Routing wird mit einigen mod_rewrite-Regeln in der .htaccess-Datei erzwungen. Die Regeln sagen "für jede Anfrage, gehen Sie nicht wirklich auf diese Seite, sondern gehen Sie zu index.php und übergeben Sie den Rest des angeforderten Pfades als $ _GET Parameter". Dann wird im Index index.php (oder einem anderen Code, der in der Datei index.php enthalten ist) die angeforderte Seite basierend auf dem Pfad bestimmt, der von Apache in die $ _GET-Parameter eingegeben wurde (gemäß der Regel mod_rewrite in. htaccess), und der entsprechende Inhalt wird von der Datenbank abgerufen.

Das Speichern von Inhalten in der Datenbank im Gegensatz zu Dateien auf dem Server hat mehrere Vorteile. Sie können beispielsweise dieselbe HTML-Vorlage - Kopfzeile, Fußzeile, Seitenleiste - auf jeder Seite erneut verwenden. Wenn Sie die Vorlage ändern, wird sie automatisch auf allen Seiten angezeigt, auf denen sie verwendet wird. Außerdem wird es einfacher, Seiten zu mischen und ihnen die gewünschte URL zu geben (z. B. keine Erweiterung ".php" am Ende oder/2010/11/date/based/paths/for/blog/posts). Der Nachteil ist natürlich, dass jede Anfrage viele Datenbankabfragen erfordert, aber für die meisten Websites (ohne Zillionen von Seitenaufrufen) lohnt sich die Abwägung (und verschiedene Arten von Caching können dazu beitragen, den Leistungseinbruch zu verringern)).

1

Jordan Antwort ausgezeichnet ist, möchte ich hinzufügen, dass Sie wahrscheinlich nicht index.php in der URL sehen, weil Sie ziemlich URLs aktiviert haben (Typ ‚pretty‘ auf concrete5 searchbox, dass zu überprüfen).

Wie auch immer, der beste Weg, um programmatisch Link zu internen Seiten hinzuzufügen ist:

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

Es funktioniert sowohl auf localhost und online, mit oder ohne ziemlich URLs.

(Für die Seitenname gehen Sie zu Dashboard/vollständige Sitemap/Seitenname/Eigenschaften/Seite Pfade und Speicherort.)

Verwandte Themen