JUG Utrecht 2013 - Have you tried turning it off and on again? Problemen oplo...
Programmeren van Plugins voor Joomla 1.5
1. Joomla 1.5 Plugins
Programmeren van Plugins
Peter Martin
Joomladagen.nl
Vrijdag 23 april 2010
2. Overzicht presentatie
>>>> Sheets worden digitaal beschikbaar <<<<
Introductie
Component / Module / Plugin - overzicht
Plugins
Demo: Programmeren van Plugin
– content plugin
– search plugin
Vragen
Peter Martin – joomladagen.nl – 23+24 april 2010 2
3. Peter Martin aka “pe7er”
Wonen
– Nijmegen
Werk
– db8 – Nijmegen
Joomla
– Global Moderator
– Community Leadership Team
JCI
– JCI Nederland - Projectmanager Internet
– JCI Mariken, Nijmegen
Open Coffee Nijmegen
Peter Martin – joomladagen.nl – 23+24 april 2010 3
7. Extensies – Wat is het?
Component:
Bepalende webapplicatie, belangrijkste gedeelte,
max 1 tegelijk!
Module:
Ondersteunend, schermweergave,
meerdere tegelijk (volgorde bepalend)
Plugin:
Ondersteunend, onzichtbaar op achtergrond,
meerdere tegelijk (volgorde bepalend)
Peter Martin – joomladagen.nl – 23+24 april 2010 7
8. Extensies – Technisch?
Component:
(/administrator)/components/com_comp-naam
jos_components
Module:
(/administrator)/modules/mod_modulenaam
jos_modules & jos_modules_menu
Plugin:
/plugins/type_plugin/pluginnaam
jos_plugins
Peter Martin – joomladagen.nl – 23+24 april 2010 8
9. Extensies – Activatie?
Hoe worden ze geactiveerd?
Component:
Via URL + &option=com_componentnaam
Module:
Via menu item: URL + &Itemid=x
Plugin:
“luisteren” naar bepaalde “events”
Peter Martin – joomladagen.nl – 23+24 april 2010 9
12. “Samenwerking” van Extensies 3/3
Search Module
C Formulier M Formulier
Search Component
– Resultaat Formulier
– Search Form
Search Plugin P Zoek in
database tabel
– Articles
– Categories P Zoek in
C Bewerking
database tabel
– Sections
P Zoek in
– Contacts database tabel
C Resultaten
Peter Martin – joomladagen.nl – 23+24 april 2010 12
18. Plugin type: Content
Wat: Bewerk content of voegt functionaliteit toe
bij renderen van content – Alleen content
component & niet bij module of template output
Events:
– onBeforeDisplayContent / onAfterDisplayContent
– onAfterDisplayTitle
– onPrepareContent
Bijv: e-mail cloaking
Peter Martin – joomladagen.nl – 23+24 april 2010 18
24. Plugin type: Search
Wat:Joomla's zoekfunctionaliteit uitbreiden naar
andere niet-joomla tabellen
Wanneer: bij Joomla's core zoek component
Twee events:
– onSearch
– onSearchAreas
Bijv: PDF Indexer
Peter Martin – joomladagen.nl – 23+24 april 2010 24
28. Plugin type: User
Wat: Acties gebaseerd op geregistreerde
gebruiker
Wanneer: in/uitloggen, bewaren user profile
Events:
– onBeforeStoreUser / onAfterStoreUser
– onBeforeDeleteUser / onAfterDeleteUser
– onLoginFailure
– onLoginUser / onLogoutUser
Bijv: Vaak gebruikt voor “bridge” tussen andere
applicaties, bijv phpBB3
Peter Martin – joomladagen.nl – 23+24 april 2010 28
30. Plugin type: XML-RPC
Wat:systemen aanroepen van procedures op
andere machines via HTTP en XML
Events:
– onGetWebServices
Bijv: externe programma's waarmee je lokaal
content aanmaakt en via XML-RPC op Joomla
website publiceert.
Peter Martin – joomladagen.nl – 23+24 april 2010 30
32. Plugin type: Pe7er
Bestaat NIET, maar kan wel!
Wat: Bewerk output van bepaald eigen
component – wel zelf 'hooks' inbouwen
Bij eigen componenten
– Anderen kunnen functionaliteit uitbreiden
Events:
– Zelf definieren
Peter Martin – joomladagen.nl – 23+24 april 2010 32
34. Demo code: Content Plugin
Zoek in artikelen naar bepaalde tekst...
... en link die automatisch naar een website
Peter Martin – joomladagen.nl – 23+24 april 2010 34
35. Demo code: Content Plugin
Referentie in jos_plugins
INSERT INTO `jos_plugins` VALUES(37, 'db8 Hyperlink',
'db8hyperlink', 'content', 0, 0, 1, 0, 0, 62, '2010-04-23 12:30:08',
'search_word=anhyperlink=www.pe7er.comnn');
Installatiebestand "db8hyperlink.xml"
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="search">
<name>db8 hyperlink</name>
<files>
<filename plugin="db8menus" >db8menus.php</filename>
</files>
</install>
php bestand "db8hyperlink.php"
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
Peter Martin – joomladagen.nl – 23+24 april 2010 35
39. Demo code: Search Plugin 2/2
Na installatie "db8menus.php" aanpassen
Procedureel via functies?
$mainframe->registerEvent( 'onSearch', 'plgSearchDb8Menus' );
$mainframe->registerEvent( 'onSearchAreas',
'plgSearchDb8MenusAreas' );
function &plgSearchDb8MenusAreas()
function plgSearchDb8Menus()
OOP via een Class?
jimport('joomla.plugin.plugin');
class plgSearchdb8Menus extends Jplugin{}
function &onSearchAreas(){}
function onSearch('text){}
Peter Martin – joomladagen.nl – 23+24 april 2010 39
40. Literatuur
www.packtpub.com
Mastering Joomla! 1.5 Extension and
Framework Development - James Kennard
Joomla! 1.5 Development Cookbook -
James Kennard
Learning Joomla! 1.5 Extension
Development (2009!!) - Joseph L. LeBlanc
Peter Martin – joomladagen.nl – 23+24 april 2010 40
41. Vragen?
Presentatie & modules beschikbaar via
www.db8.nl
Peter Martin
e-mail: info at db8.nl
website: www.db8.nl
Peter Martin – joomladagen.nl – 23+24 april 2010 41