quali pagine statiche? :master:
le pagine vengono create dinamicamente, il plugin viene interpellato a un certo punto di questo processo di creazione per fare la sua parte.
una tecnica molto comune e ragionevolmente semplice da realizzare è quella di sistema a eventi.
L'applicazione base nei punti in cui vuole far sì che possano intervenire i plugin genera degli eventi. I plugin si "registrano" come gestori di quegli eventi in cui vogliono intervenire e in questo modo le due parti interagiscono tra loro.
Butto giù un esempio semplice giusto per capire il meccanismo. Scrittura di un commento su un blog.
L'applicazione base riceve il commento dal form, fa tutto ciò che deve fare e supponiamo che metta il contenuto nella variabile $comment.
Poi fa qualcosa del genere:
Codice PHP:
$event = new Event('add_comment', array('postId' => $postId, 'commentBody' => $comment));
EventManager::triggerEvent($event);
$db->saveComment($event->postId, $event->commentBody);
quindi l'applicazione solleva l'evento e poi va avanti.
Da qualche altra parte (ovviamente eseguita prima) il plugin si sarà registrato in questo modo
Codice PHP:
EventManager::registerEventHandler(array('CommentPlugin', 'processComment'), 'add_comment');
(cioè quando c'è un evento add_comment passalo alla callback specificata nel primo parametro).
Quindi al triggerEvent l'EventManager passerà l'evento al CommentPlugin che si era già registrato per quel tipo di evento, questo magari al suo interno provvederà a eliminare dal campo "commentBody" gli URL considerati "SPAM" presi da una sua blacklist.
Quindi l'evento con il campo modificato procederà il suo iter e verrà salvato nel database.
In questo modo applicazione e plugin hanno interagito facilmente.