Sk!ppy Skrevet 15. september 2009 Del Skrevet 15. september 2009 Hei. jeg bruker Template systemet ETS ( Easy Template System ) http://ets.sourceforge.net/ . hvordan skal jeg lage det så jeg kan legge til plugin/moduler ? noe alà wordpress? takk! Lenke til kommentar
Hayer Skrevet 15. september 2009 Del Skrevet 15. september 2009 Kan hvertfall si en ting; template engine er ikke direkte relatert til hvordan designet på module-systemet ditt ser ut. For å lage et module-basert system(hvertfall slik jeg gjore det) så må du først ha en liste over hvilke moduler som er "aktive". Når en side lastes, f.eks 'frontpage' så er dette en hook. Denne hooken går gjennom listen av aktive moduler hvor hver module har en funksjon som heter "handlehook($hookname)". La oss si at hooken er 'frontpage' og modulene som er aktivert er nyhet,login og hjelp foreach( $moduler as $module ) { $module -> handlehook('frontpage'); } husk at arrayen $moduler består av instanser av modulene. slik ser f.eks nyheter modulen ut da function handlehook($name) { switch($name) { case "frontpage": // kode eller kall til en annen funksjon for ryddighets skyld break; } } ble mye slurv kommer tilbake senere Lenke til kommentar
Alex Moran Skrevet 15. september 2009 Del Skrevet 15. september 2009 Ta en titt på Observer-patternet, som er det du vil ha for å få til hooks. Lenke til kommentar
Sk!ppy Skrevet 15. september 2009 Forfatter Del Skrevet 15. september 2009 Skjønnte vel egentlig heller lite av det dere sa akkuratt nå - Det er første gang jeg prøver meg på et Template system. Tesje? Lenke til kommentar
Alex Moran Skrevet 15. september 2009 Del Skrevet 15. september 2009 Vel, nå går ikke dette direkte inn på template-systemet du har valgt å bruke, men mer på systemet generelt. Cluet med et pluginsystem ala WordPress er at det eksisterer en del "hooks" i systemet, som kan bli tilegnet callbacks som blir kjørt på bestemte plasser. Koden som følger er et eksempel på en enkel implementasjon av observer-patternet, som vil kunne gi deg mulighet for hooks. For å få et fullverdig pluginsystem trenger du selvsagt også et system for å håndtere plugins som eksiterer og hvilke som er aktive, men det får du ikke her. /* * (shame at kommentarer ikke eksisterer, men skrev dette i all hast. skulle likevel ikke være alt for vanskelig * å forstå.) */ class EventDispatcher { protected $eventListeners = array(); public function addEventListener($event, $callback) { $this->eventListeners[$event][$callback] = $callback; } public function removeEventListener($event, $callback) { if (isset($this->eventListeners[$event][$callback])) { unset($this->eventListeners[$event][$callback]); } } public function getEventListeners($event) { return (array) $this->eventListeners[$event]; } public function clearEventListeners($event) { $this->eventListeners[$event] = array(); } public function dispatch($event, array $arguments = array()) { foreach ($this->getEventListeners($event) as $callback) { call_user_func_array($callback, $arguments); } } } I en plugin kan du da for eksempel ha noe lignende: function my_bootstrap_function() { echo 'Hello World'; } $eventManager->addEventListener('system.bootstrap', 'my_bootstrap_function'); og i selve systemet/kjernen utføre callbacks som er hektet på denne hooken: $eventManager->dispatch('system.bootstrap'); Det hele er temmelig vanskelig å forklare, så du bør nok ta en titt på eksisterende systemer som FrogCMS eller WordPress. Lenke til kommentar
Sk!ppy Skrevet 15. september 2009 Forfatter Del Skrevet 15. september 2009 (endret) Tusen takk, Jeg har sett på wordpress, men sliter å finne filen som gjør akkuratt det du har funnet her. Skal prøve og feile! Edit: Nå begynner jeg faktisk å skjønne noe. Skal endre på koden, og se hva som gjør hva o.l - To spørsmål: Hvordan gjør jeg det om den skal plasseres dynamisk mon tro f.eks via css? Om jeg vil ha plugin's i en mappe ( Se eksempel 1 ) . Hvordan får jeg gjort det? Eksempel 1: modules - plugin 1 - - index.php - - style.css - - bilder/ - - - etbilde.jpeg - - - etannet.jpeg - plugin 2 - - index.php - - style.css - - bilder/ - - - etbilde.jpeg - - - etannet.jpeg osv.. i forhold til eksempel 2: Modules - plugin1.php - plugin2.php - plugin3.php - plugin4.php osv Endret 15. september 2009 av LaCrouX Lenke til kommentar
Hayer Skrevet 15. september 2009 Del Skrevet 15. september 2009 Skjønner ikke helt, skal du skrive et template engine eller et module-basert system fra bunnen? Lenke til kommentar
Sk!ppy Skrevet 15. september 2009 Forfatter Del Skrevet 15. september 2009 Begge deler, men template engine er ferdig, siden jeg brukte ETS. Så nå gjenstår Module systemet Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå