Willkommen in der Webstatt
User-1 am 17.07.07 10: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.

netcup.de Warum gibt es hier Werbung?
User-2 am 17.07.07 10:10

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

User-1 am 17.07.07 10:22

Quote
Original von xyz-49
evtl. hilft dir das ja teilweise weiter: Frage zu Modulsystem


leider nicht.

User-3 am 17.07.07 11: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.

User-1 am 17.07.07 11:39

Quote
Original von ***
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?

User-3 am 17.07.07 12: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;
}

User-1 am 17.07.07 12:22

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

User-4 am 17.07.07 12:46

Quote
Original von xyz-177
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. :)

User-3 am 17.07.07 12:48

Quote
Original von xyz-84
Letztendlich hast du eh keine anderen Möglichkeiten. :)

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

User-4 am 17.07.07 12:51

Quote
Original von ***
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...

User-1 am 17.07.07 12: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.

User-4 am 17.07.07 13:35

Quote
Original von xyz-177
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. :)

User-1 am 17.07.07 13:37

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

User-3 am 17.07.07 14: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 :)

Kommentare dazu bitte.

User-1 am 17.07.07 14:40

Ich finde dann wird alles etwas Zweckentfremdet.

User-3 am 17.07.07 14:47

Wie meinst du das?

User-1 am 17.07.07 14: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.

User-3 am 17.07.07 14:53

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

User-4 am 17.07.07 16:10

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

User-3 am 17.07.07 21: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.

User-5 am 17.07.07 22:18

Quote
Original von ***
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 xyz-84 will damit auf seine Weise ausdrücken, dass das keine so gute idee ist ;)

@xyz-84: beschreib doch mal wie du es in hesasys machst :P

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt