Webstatt.org - Community seit 2006 - 2012 (2024?)

Modulbasierendes CMS

Avatar user-287
17.07.2007 08:02

Hallo,
Bei manchen CMS ist das ja so, z.B. bei Joomla, dass man da ganz einfach Module installieren und deinstallieren kann und sich die Module dann auch automatisch in die Seite einfügen.

Da ich momentan auch an einem CMS sitze, würde mich mal interessieren, wie man so ein System realisieren kann. Vielleicht hat ja schon jemand mit sowas Erfahrung.

Hab eigentlich nichts über dieses Thema bei Google gefunden und dann die besagten CMSs nach dieser Funktion durchzuforsten... da dachte ich mir, frag ich mal die Profis hier.

Avatar user-159
17.07.2007 08:10

evtl. hilft dir das ja teilweise weiter: Frage zu Modulsystem

Avatar user-287
17.07.2007 08:22

Original von user-159
evtl. hilft dir das ja teilweise weiter: Frage zu Modulsystem


leider nicht.

Avatar user-125
17.07.2007 09:01

Ich mache das mit Hooks. Sprich, ich habe stellen im Quelltext wo Datein geladen werden, die vorher als Modul hinzugefügt worden sind.

In der Regel braucht man nicht so viele Hooks. Das hängt aber vom System ab (wie komplex es ist .. etc).

Ich setzte sie mind. beim laden aller Classen und Funktionen, vor der Ausgabe von Content, nach der Ausgabe von Content und nach dem schließen der DB-Verbindung.

Im Modul muss halt definiert werden, wann dieses geladen werden soll. Hofe hast verstanden wie ich das mache und meine.

Liebe user-125y aka user-125 aka dionysos
Avatar user-287
17.07.2007 09:39

Original von user-125
Ich mache das mit Hooks. Sprich, ich habe stellen im Quelltext wo Datein geladen werden, die vorher als Modul hinzugefügt worden sind.

In der Regel braucht man nicht so viele Hooks. Das hängt aber vom System ab (wie komplex es ist .. etc).

Ich setzte sie mind. beim laden aller Classen und Funktionen, vor der Ausgabe von Content, nach der Ausgabe von Content und nach dem schließen der DB-Verbindung.

Im Modul muss halt definiert werden, wann dieses geladen werden soll. Hofe hast verstanden wie ich das mache und meine.


Jo, könnteste mal ein Codebeispiel machen?

Avatar user-125
17.07.2007 10:11

Nö, kann ich nicht. Weil, was soll ich da für nen Beispiel machen .. ?

 
/**
* gaaaanz viel Code kommt hier
**/

hook(HOOK_ID);

/**
* noch mehr code
**/


## function hook fragt ab, ob für die HOOK_ID nen Eintrag vorhanen ist. Wenn ja,
## wird dieser halt eingebunden.

function hook ( $hid ) {
$db->request($hid);
if($db->result){
include $db->result->include_file;
}
return True;
}

Liebe user-125y aka user-125 aka dionysos
Avatar user-287
17.07.2007 10:22

Aber durch die Festlegung wann so ein hook ausgeführt, bzw. wo wird doch das ganze sehr undynamisch oder?

Avatar user-194
17.07.2007 10:46

Original von user-287
Aber durch die Festlegung wann so ein hook ausgeführt, bzw. wo wird doch das ganze sehr undynamisch oder?

Das kommt darauf an wie viele Hooks du hast, an welchen Stellen sie sind und ob du evtl. Daten darüber verarbeitest (z.B. Parsen von Text könnte man durch alle Plugins durchreichen.. eins macht Smileys, eins BBCode oder so).
Letztendlich hast du eh keine anderen Möglichkeiten. lächeln

Avatar user-125
17.07.2007 10:48

Original von user-194
Letztendlich hast du eh keine anderen Möglichkeiten. lächeln

Naja .. er könnte auch durch nen Updater den Quellcode umschreiben .. aber das wäre .. naja .. Hooks find ich besser.

Liebe user-125y aka user-125 aka dionysos
Avatar user-194
17.07.2007 10:51

Original von user-125
Naja .. er könnte auch durch nen Updater den Quellcode umschreiben .. aber das wäre .. naja .. Hooks find ich besser.

Das wären dann aber keine Module, sondern vielleicht "Extensions", die den Code patchen. Das ist absolut unsauber, schlecht wartbar und die "Module" kommen sich schnell in die Quere. Man sieht an qmail, wie lustig das endet...

Avatar user-287
17.07.2007 10:52

Genau, das find ich auch nciht so gut, aber wie könnt man das genauso dynamisch lösen ohne irgendwas zu ändern, sondern vielleicht nur durch andere Methoden zu überschreiben.

Avatar user-194
17.07.2007 11:35

Original von user-287
Genau, das find ich auch nciht so gut, aber wie könnt man das genauso dynamisch lösen ohne irgendwas zu ändern, sondern vielleicht nur durch andere Methoden zu überschreiben.

Dafür ist PHP dann aber die falsche Sprache. Und mit anderen Plugins wird das dann immernoch nicht gut zusammenarbeiten. lächeln

Avatar user-287
17.07.2007 11:37

Kannst du mir dann sagen wie man das sonst realisieren könnte?

Avatar user-125
17.07.2007 12:19

Eine andere Möglichkeit wäre, alle Codeelemente in einer Datenbank zu speichern. Und das die Module bzw. Updates diese verändern bzw. überschreiben. Natürlich würde man ein Backup der alten Datein benötigen. So könnte man das auch alles wieder schnell und einfach rekonstruieren.

Eigentlich ne schöne Idee finde ich lächeln

Kommentare dazu bitte.

Liebe user-125y aka user-125 aka dionysos
Avatar user-287
17.07.2007 12:40

Ich finde dann wird alles etwas Zweckentfremdet.

Avatar user-125
17.07.2007 12:47

Wie meinst du das?

Liebe user-125y aka user-125 aka dionysos
Avatar user-287
17.07.2007 12:50

Ich finde, dass der code schon in den php Dateien stehen sollte.
Man könnt zwar dann aus dem Inhalt der Datenbank die PHP Dateien erstellen, jedoch kann ich mich damit nicht sorecht anfreunden.

Avatar user-125
17.07.2007 12:53

Naja, du musst dich entscheiden. Du hast 3 gute Möglichkeiten (also ich finde sie gut) gehört.

Liebe user-125y aka user-125 aka dionysos
Avatar user-194
17.07.2007 14:10

Und voila, schon wird jedes SQL-Injection-Problem zum Remote-Code-Execution-Problem.

Avatar user-125
17.07.2007 19:35

Das war ja nicht die Frage .. bzw. wir haben hier ja nicht über eventuelle Sicherheitslücken gesprochen. Es geht hier halt um die Möglichkeit Mods zu benutzen/verwalten. Und das mit der DB wäre EINE Möglichkeit.

Liebe user-125y aka user-125 aka dionysos
Avatar user-271
17.07.2007 20:18

Original von user-125
Das war ja nicht die Frage .. bzw. wir haben hier ja nicht über eventuelle Sicherheitslücken gesprochen. Es geht hier halt um die Möglichkeit Mods zu benutzen/verwalten. Und das mit der DB wäre EINE Möglichkeit.

Naja...ich denke user-194 will damit auf seine Weise ausdrücken, dass das keine so gute idee ist zwinkern

@hoffie: beschreib doch mal wie du es in hesasys machst frech

#!/bin/bash
traurig){ neutral:& };: