2009-06-20 6 views
2

Ich erstelle eine Blog-Engine als Lernübung und ein bestimmtes Problem hat mich ratlos. Ich frage mich, wie Blogposts in einer Blog-Engine wie Wordpress erstellt werden? Ich denke, es gibt 2 Möglichkeiten, wie Sie das tun können:Wie erstellt eine Blog-Engine Blogposts?

1) Erstellen eines neuen Blogpost namens "testPost" erstellt eine neue HTML-Seite namens www.myblog.com/testPost.html. So speichern Sie für jeden neuen Blogeintrag eine neue HTML-Seite auf dem Server. Diese Methode scheint ineffizient zu sein. Ein Blog kann Hunderte von Blog-Posts enthalten, was bedeutet, dass Sie Hunderte von HTML-Seiten erstellen müssen. Ich glaube nicht, dass ich diese Methode benutzen möchte.

2) Sie haben eine generische Blogpostseite, deren Daten gemäß dem Post, auf den Sie zugreifen möchten, gerendert werden. Wenn ich zum Beispiel "testPostOne" erstellt habe, würde die generische Blogpostseite mit den Daten und der URL von testPostOne gefüllt werden. Wenn ich "testPostTwo" erstellen würde, würde die generische Seite den Inhalt von testPostTwo usw. rendern.

Aber die Verwendung dieser Methode bringt ihre eigenen Probleme. Zum Beispiel, wie würden Sie auf eine Seite verlinken, die nicht existiert? Die Verknüpfung mit http://www.myblog.com/testPostOne.html würde nicht funktionieren.

Dies sind die zwei Möglichkeiten, mit denen ich dieses Problem lösen könnte. Ich bin mir nicht sicher, ob es andere Möglichkeiten gibt. Bitte zögern Sie nicht, eine bessere Lösung dieses Problems zu empfehlen, wenn Sie eines kennen.

Grundsätzlich möchte ich eine schön formatierte URL für jeden Blogbeitrag haben, ohne eine neue HTML-Seite auf dem Server für jeden erstellen zu müssen.

EDIT: Ich möchte hinzufügen, dass ich ASP.NET bin mit, dies zu tun, um alle Verfahren über diesen Rahmen verfügbar wäre

Antwort

6

Die Grundidee wäre, eine Datenbank zu verwenden. Jede Buchung wäre ein Eintrag in der Datenbank und Sie rufen die Daten einfach in Abhängigkeit von der URL ab. Zum Beispiel

www.myblog.com/posts.php?postid=1 oder www.myblog.com/posts.aspx?postid=1

Sie können dann entweder über die URL-Rewrite Methoden zum Abrufen der gleiche Beitrag mit einer saubereren URL oder besser noch eine RESTful-Methode, um die gleiche Aufgabe zu erledigen.

+0

Wenn Sie Titel mögen, können Sie immer die Stack Overflow Methode verwenden und die Titel zu einer URL machen. –

0

Sie benötigen, um eine dynamische Seite in machen, sagen wir, PHP hilfreich sein Das liest Daten aus einer Datenbank für den Post-Inhalt. Wenn Sie mit Ihrer Seite schöne URLs erstellen möchten, sollten Sie in etwas wie mod_rewrite suchen, um die URLs neu zu schreiben.

1

Hier ist an open source blog engine geschrieben in ASP.NET 2.0 und einem written in PHP (es gibt viele andere da draußen). Am besten ist es, das Design und die Architektur zu überprüfen und zu analysieren, wie es (oder so ähnlich) funktioniert.

0

Wenn Sie die Seite dynamisch erzeugen (wie in Vorschlag 2), wird die http://www.myblog.com/testPostOne.html existieren, wenn Sie darauf zugreifen versuchen, auch wenn es auf der Platte keine actuall Datei ist ...

2 So Vorschlag ist, wahrscheinlich der beste Weg zu gehen.

+0

Würde es tatsächlich existieren? Ich hätte gedacht, "testPostOne.html" müsste der Name des Bezeichners in der DB für einen bestimmten Beitrag sein. Aber es ist mehr als wahrscheinlich, eine ID zu sein, die du benutzt, also würde die URL "http://www.myblog.com?post_id=1" sein Es sei denn du beginnst, mod_rewite zu verwenden, das ein ganz neues Ballspiel ist. – gargantuan

+0

@gargantaun: Gibt es den myblog.com?post_id=1? Gibt es index.html? Was definiert das Vorhandensein einer Ressource auf einem Webserver? –

0

Persönlich verwende ich den Apache mod_rewrite.Also, wenn Sie eine URL haben wie:

http://myblog.com/archives/my_very_first_post,

Sie können eine Rewrite-Regel wie folgt machen:

RewriteEngine on 
RewriteRule ^archives/(.*)$ myblog.php?post=$1 

Apache interpretiert "my_very_first_post" als Post-ID und führt es einem PHP-Skript das behandelt die ID. Das Skript holt dann den Post aus der Datenbank und zeigt ihn an.

Ich glaube, das ist der häufigste Ansatz.

Verwandte Themen