CMS zum lernen

w1cked

Grünschnabel
Hallo erstmal

Zuerst, ich weiß das es zum thema Cms selber schreiben viele beiträge gibt aber keiner hat mir so wirklich geholfen.
Also, vergangenes Jahr hab ich angefangen eine Website für mich zu erstellen um php zu üben. Daraus ist schon ein schönes projekt geworden wo ich auch viel gelernt habe.
Und vor einiger zeit habe ich angefangen OOP in PHP zu lernen.

Um das alles vorran zu treiben möchte ich gerne ein kleines CMS entwerfen um all das weiterzulernen und zu vertiefen (natürlich kein solch monster wie typo3 und joomla).
Problem ist nur ich weiß nicht so recht wie ich anfangen soll.

Wie wichtig ist ein templatesystem? wenn ich eins brauche wie binde ich es ins cms ein?
Wie fängt man mit der planung richtig an und wie gehts nach der planung weiter?

wär schön wenn ihr mir dabei helfen könntet und mir die richtigen denkanstöße gebt.
 
Du solltest dir zuerst darüber im klaren sein, was dein CMS können soll. Des weiteren musst du wissen welche Aufgaben bzw. Scripte mit diesem Können verbunden sind. Ich würde dir vorschlagen dir zu diesen Problemen ein paar Gedanken auf einem Stück Papier zu machen und uns diese dann vor zu stellen.
MfG, Andy
 
Hab mir jetzt vergangene Woche ein paar gedanken dazu gemacht.

Also was mein CMS können muss:

- Newssystem mit Newsletter, Archiv und Kommentarfunktion

- Es reicht eine einfache Userverwaltung anhand des Rangens (normaler User, Autor und Admin).

- Die ganze Seite wird dynamisch durch Inhalte aus der Datenbank aufgebaut.

- Möglicherweise ein Templatesystem. Ich weiß hier nur nicht wie sinnvoll das ist.
- Auch schön wäre wenn ich es so modular aufbauen kann das man später relativ einfach neue funktionen hinzufügen kann.

Das wärs mal im groben. Alles in allem recht einfach gehalten. Nur da fängt das Problem an, wo/wie fang ich an?
 
Mit dem Core wäre ein guter Ansatz.

Mein kleines CMS hab ich auch so angefangen, bin aber sehr schnell an meine grenzen gestossen weil mir das wissen in PHP/MySql fehlt.
 
Hallo @w1cked

Das ist genau der wichtige Schritt. Versuch so viele, möglichst unterschiedliche, Sachen in PHP zu machen wie möglich. So lernst du alle Fasetten kennen und tust dir leicht. :)

Der Anfang ist leider immer das schwierigste, da man nicht weiß wo man anfangen soll ;)

Wie bereits erwähnt mach dir ein paar Skizzen, denk dir durch was es können sollte.
Hast du das gemacht, würde ich persönlich direkt bei der Ausgabe anfange ;)

Warum das ?
Einträge kannst du leicht mit phpmyadmin, mysql_manager oder ähnlichem einfügen.
Die Überprüfung siehst du jedoch dann nur, wenn du das Script schon hast. :)
Ich persönliche beginne immer mit der Ausgabe, weil mir dann da auch die Ideen zur Mysql Tabellenstruktur kommen.
Da fällt mir dann zum Beispiel ein, dass es ja Autor, Datum, ... gibt.
Und dann denk ich mir, dass es noch fein wäre, wenn ich einen Beitrag temporär deaktivieren kann, ... :)

Hast du das einmal, kannst du dich langsam an das eintragen Script machen. (Das dann gut durchtesten, die zwei Dinge) und dann kommen so Dinge wie ändern, löschen, ... .


Das Usersystem ist so eine Sache. Ich würde mir das sehr gut überlegen, bevor du anfängst zu programmieren.
Ich arbeite derzeit an einem sehr großen Portal, mit allen möglichen Funktionen und hatte mir eine einfache Gruppenfunktion gebastelt.
In Null komma nix war diese Funktion nicht mehr genug für das Portal und ich musste in stundenlanger arbeit alle Seiten (denn das kommt ja wirklich überall vor) anpassen.


Zu Templatesystem:
Ich persönlich habe gerne alles sehr sehr strukturiert.
Aus diesem Grund habe ich mir eine Templateengine gebastelt.
Wenn du sagst, dass es ein kleineres Projekt ist, dann würde ich dir empfehlen, entweder eine freie (smarty, ...) zu verwenden, oder einfach den Code selbst gleich "parsen".
(Systeme wie smarty machen ja im Prinzip nichts anderes als den Code, den du eingibst in PHP umzuwandeln) -> Du kannst also einfach die Variablen in deinem reinen PHP Script in ein Array schreiben und im HTML-PHP (also dem Template) diese dann ausgeben.


Hoffe ich konnte dir etwas helfen. bei fragen: Fragen ;)

Grüße Simon
 
smarty finde ich persönlich etwas zu aufwändig für dein cms, ich nutze vlibTemplate und bin sehr zufrieden damit, ist recht einfach und übersichtlich.

mehr infos zu vlibTemplate findest du hier ---> http://lamp.clausvb.de/


warum ein templatesystem nutzen? naja ist recht einfach erklärt, du kannst dein cms ewig weiternutzen und soviele themes wie du willst dafür gestallten, evtl. willst du ja später deinen usern erlauben ein theme im profil einzustelen ;)

wenn du darauf verzichtest hast du später das problem wenn dir was am design nicht passt das du alles nochmal neu schreiben darfst.


wie schon erwähnt fange immer mit der ausgabe an, daran siehst du immer was du brauchst und später noch machen musst (schreib dir die sachen auf nen zettel wenn dir mal was einfällt das noch fehlt, sowas vergisst man dann schnell mal)

ein adminbereich kannste dann immernoch zum schluss machen.

viel erfolg bei deinem CMS !
mfg lolox
 
Ok viele dank, dann werd ich mit der Ausgabe des Newsystem anfangen und mich dann zum eintragen im backend bereich erstmal vorarbeiten. Erstmal danke für eure hilfreichen Informationen. Ich werd mich dann später nochmal mit fortschritten oder fragen melden
 
Ich bins mal wieder. Hab mir in den letzten Tagen weiter notizen gemacht damit ich später nicht alles reinfrickeln muss.

Hab mich jetzt mal fürs erste dazu entschieden auf eine Templateengine zu verzichten, ist irgendwie sinnfrei bei einem kleinen projekt.

Dann hab ich noch eine Frage. Ich überleg mir das schon ne Weile aber ich bin nicht dahinter gekommen. Wie kann ich mein Projekt so modular aufbauen, dass ich später einfach weitere Funkionen (Komponenten, Module ...) hinzufügen kann (ähnlich wie bei joomla)?
 
Hallo ihr beiden

naja dann gehen wir das gleich an ;)
Habt ihr schon einmal ein CMS geschrieben ?

ich hab es zum Beispiel so, dass es verschiedene Inhaltstypen gibt, die man einfügen kann. (Im Adminbereich kann man das im Formular via select auswählen.
Ich hab sitemap, txt, txt+images, images.
(Die verschiedenen Typen werden aus der DB ausgelesen, um es einfach zu machen neue einzufügen)

Und ich mach es so, dass im Frontend (das was der normale User zu sehen bekommt)
alle Inhalte einer Seite ausgelesen werden und dann per if entschieden wird, welches plugin eingefügt werden soll.

Also:

PHP:
...
foreach($content AS c)
 {
    
    if($c['c_mode'] == 'txt') // c_mode enthält eben die information was es ist
       include('pfad/plugins/content_txt.php');
    else if($c['c_mode'] == 'img')
       include('pfad/plugins/content_img.php');
 }
..

Und das die Datei content_txt.php enthält dann einfach nur wie es ausgegeben wird.
Also zum beispiel:
PHP:
<div class="left"><img ... ></div>
<div class="right"><?php echo $c['c_text']; ?></div>

Und dann ist das im Prinzip gar kein Problem, denn dann fügt ihr neue Plugins einfach in diesen Ordner plugins/ ein und fügt eine neue Zeile in die Datenbanktabelle, wo die verschiedenen Plugintypen für den Adminbereich gespeichert werden ein. :)

Versteht ihr wie ich es meine ? :D


Grüße Simon
 
Zurück