![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 128
|
Hallo erstmal, ich habe vor mir ein (kleines) CMS zu schreiben das mit Modulen arbeiten soll. Ich hab jedoch noch keine Vorstellung wie ich die Installation usw. der Module realisieren soll. Habt ihr dafür eventuell irgendwelche Vorschläge? Danke schonmal, Patrick |
| | |
| | Nach oben #2 |
| Johannes Schlichenmaier Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 403
|
Vorschlag: Module enthalten Methoden in Klassen oder einzelne Funktionen: Module sind alle in einem Ordner in unterordnern, Module werden beim Start vom FS eingelesen und implementiert und dann wird entweder eine Instanz des Obkjekts mit Namen des Moduls erstellt oder die Funktion mit Namen des Moduls wird aufgerufen....
__________________ In the beginning was the word and the word was content-type: plain/text heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int |
| | |
| | Nach oben #3 |
| n00b -.- Registriert seit: 10.11.2005
Beiträge: 318
|
Module mit allenn Dateien, Styles... proggen, je in einem eigenen Ordner speichern und dann per Formular abfragen, aus welchen Ordnern die Index-Dateien wo includiert werden sollen. An sowas ähnlichem versuche ich mich geade...
__________________ Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen! |
| | |
| | Nach oben #4 | |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 128
| Zitat:
| |
| | |
| | Nach oben #5 |
| Corvin Gröning Registriert seit: 19.03.2005 Ort: S-H | Flensburg
Beiträge: 459
|
Auf php.de gibt es dazu auch einen interessanten Thread: http://www.php.de/forum/viewtopic.php?t=28089
__________________ |
| | |
| | Nach oben #6 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
a) Ordner "plugins" anlegen /plugins modul a ( bsp.: user ) /plugins/p_user/user.php /plugins/p_news/news.php usw. .... diese Reihenfolge in der DB oder in einem Array festschreiben $pluginArray = array( 1 => 'p_empty/empty.php', 2 => '/plugins/p_user/user.php', 3 => '/plugins/p_news/news.php' .... ); deine index.php in etwa so <?php $p = isset(_GET['p']) && ereg("^[0-9]+$", $_GET['p']) ? $_GET['p'] : 1; .... ob_start(); include_once('plugins/'.$pluginArray[$p]); $template = ob_get_contents(); ob_end_clean(); echo $template; ?> die einzelnen Module/plugins werden über den Getparameter p aufgerufen stark vereinfacht ... wenn du Interesse hast kann ich es dir auch gern ausführlicher darstellen ( einbinden als pluginsystem ... mit optionaler möglichkeit als Navigation darstellen ) mfg
__________________ Code: eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); |
| | |
| | Nach oben #8 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
ok bei mir kam der gedanke als ich verschiedene menus darstellen musste bei dem einen heisst es home, news, login, user ... und beim nächsten anders aber die struktur bleibt immer die gleiche wie kann man das also vereinfachen der name interessiert nicht mehr ... position 1 hat die nummer 1 2 die 2 usw. jett müsste nur die positionsnummer mit dem namen assoziiert werden und was bietet sich da besser an als ein array egal ob fest im quelltext geschrieben ala $menu = array( ... ); oder dynamisch aus der DB geholt ala while ($row = mysql_fetch_assoc($sql)) { $menu[$row['id']] = $row['title']; } und wir denken so "locker und flockig" weiter ... ein pluginsystem ist doch auch nur ein überdimensionales "menu" nun gut ein beispiel: ausgangspunkt: eine webseite, welche die rubriken home, news, user, impressum haben soll wir betrachten jede dieser 4 rubriken als plugin der webseite und legen sie ab in der db die tabelle wäre wohl in etwa so: tabelname: plugins CREATE TABLE `plugins` ( `pluginid` int(11) unsigned NOT NULL auto_increment, `name` varchar(90) default NULL, `path` varchar(130) default NULL, `pluginbit` tinyint(1) unsigned NOT NULL default '1', `displaybit` tinyint(1) unsigned NOT NULL default '1', `orderbit` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`pluginid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 die pluginid ist unsere zahl da man sich die name so schlecht merken kann - name wäre, wenn man dieses auch als navigationsmenu benutzen will der name, welcher angezeigt werden soll - path wo sich die files unseres plugins befinden - pluginbit 0 oder 1 soll dieser eintrag als plugin gehandhabt werden oder ausschliesslich als menueintrag - displaybit .. ist nur ein plugin, welches NICHT im menu auftauchen soll dann 0 - orderbit bestimmt die reihenfolge in der das menu angezeigt werden soll denken wir uns die while schleife etwas weiter höher while ($row = mysql_fetch_assoc($sql)) { $menu[$row['pluginid']] = $row['path']; } // könnte etwa so aussehen $menu[1] = 'p_home/home.php'; $menu[2] = 'p_news/news.php'; $menu[2] = 'p_user/user.php'; $menu[2] = 'p_imp/impressum.php'; wenn wir das array durchlaufen würden könnte man das super als navigationsmenu darstellen,,, ich hoffe du hast soviel phantasie ok diese dbabfrage kommt an den anfang unser index.php und davor setzen wir noch die abfrage des GET parameters heute nennen wir ihn mal ordinär p $p = isset($_GET['p']) && ereg("^[0-9]+$", $_GET['p']) ? $_GET['p'] : 1; die 1 deshalb, sollte kein plugin angegeben sein bsp. der user kommt gerade durch zufall auf die seite so ist pluginid 1 gesetzt und wie man unschwer erkennen kann ist die 1 = HOME ... also zumeist die Startseite ( aber egal welche Zahl $p gerade hat ) da in diesem moment wir uns kaum darum kümmern müssen wir haben einen ordner /plugins im documentroot ("wo auch immer") angelegt und in diesem ordner befinden sich die unterordner/plugins /plugins --/p_home --/p_news --/p_user --/p_imp wir brauchen also nur unser array schnappen sowie $p und kommen somit automatisch dahin ( ausgabe puffern macht sich immer gut ) ob_start(); if (TRUE == file_exists('plugins/'.$menu[$p])) { include_once('plugins/'.$menu[$p]); } else { include_once('plugins/error.php'); } $return = ob_get_contents(); ob_end_clean(); in den einzelnen plugins kann man dann weiter verzweigen wie man lustig ist .... simpel nicht ?
__________________ Code: eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); |
| | |
| | Nach oben #9 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 239
|
Hallo, könnt hier rein passen, ich bin mir noch absolut unschlüssig wie ich das jetzt gestallten soll mit der Datenübergabe und dem Auswerten. Also habe das mal auf folgende Art versucht das jede Datei über den Aufruf einen header includet und die eigene Classe. In der Classe werden dann andere Classen die benötigt werden per function autoload geladen. Nun stehe ich aber vor dem Problem das wenn ich zwar diese Classe Aufrufen möchte aber als Ausgabe eine andere benötige komme ich so nicht klar. Strukur: /index.php /user.php /test.php /header.php /system/system_index.php /system/system_user.php /module/module_test.php So jetzt lassen sich alle drei Dateien wunderbar Aufrufen und geben wunderbar alles aus was Sie soll das sieht dann so aus: Das mit einem Aufruf http://127...1/dateiname.php in der jeweiligen Datei so viel steht wie: PHP-Code: jeweiligen Classe habe ich mit dann im Costruct praktisch die classen per new geholt welche ich benötige zb. mysql template navigation Und nun zum wie ich meine Denkfehler. Wenn ich nun die Index aufrufe und in den Navigationsboxen zB. ein Anmelde Formular habe mit den zwei Buttons Lgoin und Anmelden so brauche ich ja keinen Inhalt ausgebn (Template) wenn der User sich Neu Anmelden möchte. Da kann die Seite ja so bleiben wie Sie ist. Ich gebe ja nur ein anderes teplate in der Navibox zur ansicht. login.tpl oder anmelden.tpl Liege ich da richtig in der Annahme das ich in den Classen oben auch die jeweiligen Classen includen (new) muss um diese dann aufzurufen wie der eigentliche Aufruf auch funkionert !? Oder geht das geschickter ? Anbei beschäftigt mich das mittels der Übergabe des Todo anhand einer Useraction wie Link oder Button noch zusätzlich. Wenn ich eine do= wie hier habe dann müsste ich ja praktisch mit einem kleinen switch die richtigen optionen zusammenstellen lassen ... also den Punkt in der classe anfahren ab welcher notwendig ist. Beispiel (./module/test.php) wenn da zwei funktionen (methoden) drin sind test1 und test2 und das do=test1 lautet müsste ich ja im __construct ein switch einbastelln. Will das eigentlich nicht so ... ist das etwas verständlich rüber gekommen diese zwei sachen !?
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #10 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Bevor ich zuende lese .. was soll das denn hier? PHP-Code: Vielleicht hilft dir diese Implementierung der __autoload()-Funktion weiter? PHP-Code: Geändert von Ben (20.12.2005 um 16:54 Uhr) |
| | |
| | Nach oben #11 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
dann denke einfach weiter .... ( in etwa in diese richtung ) PHP-Code: mfg
__________________ Code: eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); |
| | |
| | Nach oben #12 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 239
|
Hmmm ... *grübel* Starker Tobak, so auf einmal ^^. Muss das erstmal verdauen ... @Ben Angelehnt an http://forum.developers-guide.net/showthread.php?t=317 aber nicht fertig ... da ich erst den nächsten Schritt theoretisch erarbeiten möchte, nicht das ich dann wieder bastelln muss. ^^ Das mit dem Array ist aber auch eine nette Variante. bzw. also autoload ist ja drin !
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #13 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
Server mit php5 und Anwendung auf Basis __autoload() --- wie vor ein paar wochen geschehen .... phpbugtrack und danach downgrade der meisten Anbieter auf 4.4.1 ... .. was nun die Anwendung läuft überhaupt nicht mehr ( hehe ) also bevor php nicht diese kinderkrankheiten ausgemertzt hat stehe ich auf php4 freundlich geschriebene Anwendungen mfg
__________________ Code: eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); |
| | |
| | Nach oben #15 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 239
|
Hm ich überlege gerade wenn ich die Classen jetzt so habe : system test /* hier $this->system = new system; user /* hier extends system dann sollte ich doch in test auch auf user zugreifen können und das verstehe ich nicht so ganz. Beispiel: index class PHP-Code: PHP-Code: PHP-Code:
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #16 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Ganz ehrlich? Du nutzt bei der Benennung der Klassen das PEAR-System, ne? Nunja, jedem das seine .. ich halte mich mal widerwillig daran Beispiel PHP-Code: |
| | |
| | Nach oben #17 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 239
|
PEAR ? Warum *kotz Gut das bringt mich erstmal ein Stück weiter ... melde mich wenn ich soweit dann wieder bin ^^ Was bevorzugt Ihr den Aufruf über eine Datei direkt. http://.../forum.php http://.../showthread.php oder über eine Option and er Url http://.../index.php?forum http://.../index.php?forum=showthread
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! Geändert von DasMööp (21.12.2005 um 13:34 Uhr) |
| | |
| | Nach oben #19 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 239
|
Also in der Art (so habe ich mir das mal zurecht gelegt) ... zB. Forum Eine Classe forum.php diee alle Methoden inne hat, welche übergreifend sind und dann die Speziellen Classen wie Showthread, newthread, newreplay usw...
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #20 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
wenn du beim forum schon solche probs hast dann möchte ich nicht dein session bzw. user management sehen mfg
__________________ Code: eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); |
| | |