Programmeren van Plugins voor Joomla 1.5

41
Joomla 1.5 Plugins Programmeren van Plugins Peter Martin Joomladagen.nl Vrijdag 23 april 2010

description

Presentation for Joomladays 2010 in Utrecht, The Netherlands about programming plugins for Joomla 1.5

Transcript of Programmeren van Plugins voor Joomla 1.5

Page 1: Programmeren van Plugins voor Joomla 1.5

Joomla 1.5 Plugins

Programmeren van Plugins

Peter MartinJoomladagen.nlVrijdag 23 april 2010

Page 2: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 2

Overzicht presentatie

>>>> Sheets worden digitaal beschikbaar <<<<

Introductie Component / Module / Plugin - overzicht Plugins Demo: Programmeren van Plugin

– content plugin– search plugin

Vragen

Page 3: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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

Page 4: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 4

Page 5: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 5

Extensies – Types

1. Components2. Modules3. Plugins

4. Templates5. Language Files6. 1.6 → Libraries

7. Addons → uitbreidingen van componenten8. Tools → externe applicaties

Page 6: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 6

Joomla's framework

Page 7: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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)

Page 8: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 8

Extensies – Technisch?

Component:(/administrator)/components/com_comp-naam jos_components

Module:(/administrator)/modules/mod_modulenaamjos_modules & jos_modules_menu

Plugin: /plugins/type_plugin/pluginnaamjos_plugins

Page 9: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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”

Page 10: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 10

“Samenwerking” van Extensies - 1/3

Page 11: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 11

“Samenwerking” van Extensies - 2/3

Page 12: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 12

“Samenwerking” van Extensies 3/3

Search Module Search Component

– Resultaat Formulier– Search Form

Search Plugin– Articles– Categories– Sections– Contacts

C Formulier

C Resultaten

C Bewerking

P Zoek in database tabel

M Formulier

P Zoek in database tabel

P Zoek in database tabel

Page 13: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 13

Page 14: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 14

Plugins – Verschillende types

1. Authentication2. Content3. Editors4. Editors-XTD5. Search6. System7. User8. XML-RPC9. Pe7er

Page 15: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 15

Plugin type: Authentication

Page 16: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 16

Plugin type: Authentication

Wat: Authenticatie - “inloggen op website”,Joomla login & Externe login mogelijkheden

Events:– onAuthenticate

Bijv: Authenticatie via Gmail, Facebook, Twitter etc

Page 17: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 17

Plugin type: Content

Page 18: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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

Page 19: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 19

Plugin type: Editors

Page 20: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 20

Plugin type: Editors

Wat: WYSIWYG-editor in Joomla Events:

– onDisplay– onGetContent– onGetInsertMethod– onInit– onSave– onSetContent

Bijv: JCE editor

Page 21: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 21

Plugin type: Editors-XTD

Page 22: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 22

Plugin type: Editors-XTD

Wat: Extra knoppen voor WYSIWYG editor Events:

– onCustomEditorButton

Bijv: “Readmore” onderaan in editor

Page 23: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 23

Plugin type: Search

Page 24: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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

Page 25: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 25

Plugin type: System

Page 26: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 26

Plugin type: System

Flexibele plugins - na flexibele gedefineerde punten:– onAfterInitialize– onAfterRoute– onAfterDispatch– onAfterRender

Bijv: SEF, Debug, Legacy

Page 27: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 27

Plugin type: User

Page 28: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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

Page 29: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 29

Plugin type: XML-RPC

Page 30: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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.

Page 31: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 31

Plugin type: Pe7er

Page 32: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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

Page 33: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 33

Page 34: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 34

Demo code: Content Plugin

Zoek in artikelen naar bepaalde tekst...... en link die automatisch naar een website

Page 35: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 35

Demo code: Content Plugin

Referentie in jos_pluginsINSERT INTO `jos_plugins` VALUES(37, 'db8 Hyperlink', 'db8hyperlink', 'content', 0, 0, 1, 0, 0, 62, '2010-04-23 12:30:08', 'search_word=a\nhyperlink=www.pe7er.com\n\n');

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"<?phpdefined( '_JEXEC' ) or die( 'Restricted access' );

Page 36: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 36

Page 37: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 37

Demo code: Search Plugin

Breid de zoekfunctionaliteit uit naar menu items

Page 38: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 38

Demo code: Search Plugin 1/2

Installatiebestand "db8menus.xml"<?xml version="1.0" encoding="utf-8"?><install version="1.5" type="plugin" group="search"><name>Search – Menus</name><files><filename plugin="db8menus" >db8menus.php</filename></files></install>

php bestand "db8menus.php"<?phpdefined( '_JEXEC' ) or die( 'Restricted access' );

Installeerbaar → db8menu_searchplg.zip

Page 39: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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){}

Page 40: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 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

Page 41: Programmeren van Plugins voor Joomla 1.5

Peter Martin – joomladagen.nl – 23+24 april 2010 41

Vragen?

Presentatie & modules beschikbaar via www.db8.nl

Peter Martine-mail: info at db8.nlwebsite: www.db8.nl