Nachdem Wordpress mich immer mehr angenervt hat, habe ich mir jetzt eine eigene Blogsoftware mit
Django gebaut. Diese enthält nicht mehr Funktionen als nötig, und ich weiß wie ich sie erweitern kann, falls ich mal mehr Funktionen haben möchte.
Die größte Arbeit war aus den doch eher umständlichen SQL-Schemata von Wordpress die alten Daten raus zu bekommen und in die viel einfacheren neuen Schemata zu importieren. Zum Beispiel die Relation zwischen einem Tag und einem Post geht über eine Zwischentabelle, außerdem werden Tags und Kategorien in der gleichen Tabelle gespeichert und nur anders gekennzeichnet.
Auch im Wordpress PHP-Code ist nicht so einfach nachvollziehbar, wie zum Beispiel ein Blogpost die zugehörigen Kategorien ermittelt, da sich die Funktion über mehrere Dateien zieht. Daher also lieber umständliches SQL als noch komplizierteres PHP lesen ...
An dieser Stelle muss ich Django stark loben, dieser Blog funktioniert ohne viel Code für die Seiten ("Views"), sondern basiert rein auf
generic Views, dem
Feed-Framework und dem
Django-Comments-System. Später werde ich eventuell noch
Django-Trackback für automatische Trackbacks hinzufügen, bis dahin einfach für den Backlink einen Kommentar hinterlassen.
Der meiste Code besteht also aus den Models (der Datenbank-Beschreibung), HTML-Templates mit etwas Logik und der urls.py Datei, wo alles zusammenläuft.
Den Code werde ich vielleicht als OpenSource online stellen, bei Interesse bitte melden, dann geht es eventuell zügiger :).Update: Ich denke für andere ist es ist sinnvoller django-basic-apps.blog zu verwenden. Daher mache ich erst einmal kein Projekt für meinen Code auf.
Update: Den Code gibt es jetzt doch online: Django-Projekte: Blog.
Guckt halt ob ihr mit django-basic-apps oder meinem Blog besser zurecht kommt.
Hier noch einige Statistiken:
$ find -iname '*.py'|xargs wc -l
11 ./manage.py
94 ./settings.py
50 ./urls.py
1 ./content/views.py
0 ./content/templatetags/__init__.py
16 ./content/templatetags/entry_extras.py
35 ./content/models.py
10 ./content/feeds.py
16 ./content/admin.py
0 ./content/__init__.py
0 ./__init__.py
7 ./context_processors.py
240 insgesamt
$ find -iname '*.html'|xargs wc -l
11 ./templates/comments/list.html
93 ./templates/comments/base.html
5 ./templates/404.html
1 ./templates/feeds/latest_title.html
2 ./templates/feeds/latest_description.html
93 ./templates/base.html
44 ./templates/content/post.html
9 ./templates/content/entry_list.html
15 ./templates/content/paginator.html
14 ./templates/content/entry_detail.html
287 insgesamt