beknopt overzicht vanverleden, heden en toekomst
Herman Peeren, YeprNL Joomla!Dagen 2012
Joomla! extensies maken
1.5, zelfde principes• componenten, MVC, JTable• modules in het template hangen• plugins reageren op events• minimaal 2 bestanden: php-bestand met de code en xml-bestand om te installeren
MVC
1.5 extensies: boeken
Es gibt auch Deutsche Bücher
↓van de andere kant bekeken
1.6, 1.7, 2.5
video Joseph LeBlanc op Lynda.com (5:25 uur)
meer 2.5 ontwikkel docu:• docs.joomla.org:
http://docs.joomla.org/Developing_a_Model-View-Controller_%28MVC%29_Component_for_Joomla!2.5
• gratis/gesponsord development beginners guide Hagen Graf: http://cocoate.com/sites/cocoate.com/files/private/jdev.pdf
DaBook!• Mark Dexter & Louis Landry: Joomla!TM Programming
Excursie: overriding core• core classes laden: jimport, autoloader• worden maar 1x geladen• systeem-plugins worden voor 1e event (onBeforeInitialise) geladen• plugins kunnen behalve classes (of functies die gere-gistreerd moeten worden) ook “losse” code bevatten.• die code wordt meteen uitgevoerd• als je dan een class laadt (include_once), dan later niet meer...
uit dat boek, pagina 182-185:
Nieuw in 2.5 t.o.v. 1.5
• JForm zie James Kennard: http://www.howtojoomla.net/how-tos/development/getting-started-with-jform veldtypes:http://docs.joomla.org/Form_field
• ACL zie Sander Potjer: http://www.aclmanager.net/blog/general/31-how-to-add-basic-acl-support-to-your-extension
• Taal ook in je eigen componenten
•En verder: globalen weg; afgeleide controllers en mo-dels (JModelForm, JModelAdmin, JModelList); Nested categories (JTableNested), ook voor eigen extensies; nieuwe events; packages; update; etc.
Links: nieuw t.o.v. 1.5voor wat betreft extensies:
• http://docs.joomla.org/What’s_new_in_Joomla_1.6• http://docs.joomla.org/16Events (1.5: http://docs.joomla.org/Plugin/Events)• http://docs.joomla.org/Adapting_a_Joomla_1.5_extension_to_Joomla_1.6• http://docs.joomla.org/Category:Specifications
ToolsNaast het gebruikelijke arsenaal:• IDE (b.v. Eclipse of Netbeans) • Git (SVN)• tests: PHPunit, Selenium...Ja: TDD! Want achteraf testen is oersaai.• building: (zoals Phing, Ant)
extensie-ontwikkel-hulpmiddelen:• EasyCreator:
0.0.13: http://www.easy-joomla.org/de/news/45-easycreator-update-version-0013-und-fuer-joomla-16.html 0.0.16: https://github.com/elkuku/EasyCreator/downloads (Nicolai Plath) http://www.joomla-wiki.de/dokumentation/Benutzer:Elkuku/Proyektz/EasyCreator gebruikt MVC-voorbeelden uit docs.joomla.org
• Jacc http://www.janguo.de/lang-de/repository.html
• JFooBar https://github.com/Niambie/jfoobar http://magazine.joomla.org/issues/Issue-Sept-2011/item/566-Site-Builders-can-Build-Custom-Joomla-Components
Platform applicaties• los van, naast of samen met het CMS• ontwikkeling van platform gaat harder dan van CMS• legacy-tree voor CMS • ook CLI
Toekomst, ontwikkelingen MVC vernieuwd! • JModel, JView en JController: interfaces• basis classes•minderenbetergedefinieerdeafhankelijkheden• https://github.com/joomla/joomla-platform/pull/1120
UCM: Unified Content Model•https://groups.google.com/forum/?fromgroups#!topic/joomla-dev-platform/sqdZ0B_WCiQ
Documentatie• Platform-documentatie (nieuwe MVC): http://developer.joomla.org/manual/
En nog veel meer...• Nooku-server (Dry, Convention over Code, multi-site, eigen framework) http://www.nooku.org
• Square One (Joomla! Light) http://www.squareonecms.org/
• Molajo? https://github.com/Molajo/Molajo
• CCK’s en dergelijke gaan ook door• DDD, ORM, Doctrine 2... (mijn eigen stokpaardje)
/* render list of performers for a category */foreach ($this->performers as $performer) { /* general information about the performer */ // echo $performer->getName(), $performer->getStory() etc.
/* render pictures and videos for this performer */ foreach ($performer->getMedia() as $medium) { // URL in $medium->getLocation(); }
/* render list of acts for that performer */ foreach ($performer->getActs() as $act) { /* information about the act */ // echo $act->getName(), $act->getStory() etc.
/* render pictures and videos for this act */ foreach ($act->getMedia() as $medium) { // URL in $medium->getLocation(); } }}
Nested ArrayCollections
Top Related