1. Joomla! extensies maken
beknopt overzicht van
verleden, heden en toekomst
Herman Peeren, Yepr
NL Joomla!Dagen 2012
2. 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
10. uit dat boek, pagina 182-185:
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...
11. 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.
12. Links: nieuw t.o.v. 1.5
voor 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
13. Tools
Naast 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
14.
15.
16.
17. Platform applicaties
• los van, naast of samen met het CMS
• ontwikkeling van platform gaat harder
dan van CMS
• legacy-tree voor CMS
• ook CLI
18. Toekomst, ontwikkelingen
MVC vernieuwd!
• JModel, JView en JController: interfaces
• basis classes
• minder en beter gedefinieerde afhankelijkheden
• https://github.com/joomla/joomla-platform/pull/1120
UCM: Unified Content Model
• https://groups.google.com/forum/?fromgroups#!topic/
joomla-dev-platform/sqdZ0B_WCiQ
20. 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)
21.
22. /* render list of performers for a category */
foreach ($this->performers as $performer) Nested ArrayCollections
{
/* 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();
}
}
}
23. Vragen?
Bedankt en tot ziens!
herman@yepr.nl
www.hermanpeeren.nl www.yepr.eu