Programmeren van Plugins voor Joomla 1.5

Post on 24-Dec-2014

1.009 views 0 download

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

Joomla 1.5 Plugins

Programmeren van Plugins

Peter MartinJoomladagen.nlVrijdag 23 april 2010

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

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

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

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

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

Joomla's framework

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)

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

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”

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

“Samenwerking” van Extensies - 1/3

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

“Samenwerking” van Extensies - 2/3

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

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

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

Plugins – Verschillende types

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

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

Plugin type: Authentication

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

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

Plugin type: Content

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

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

Plugin type: Editors

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

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

Plugin type: Editors-XTD

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

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

Plugin type: Search

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

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

Plugin type: System

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

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

Plugin type: User

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

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

Plugin type: XML-RPC

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.

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

Plugin type: Pe7er

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

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

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

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' );

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

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

Demo code: Search Plugin

Breid de zoekfunctionaliteit uit naar menu items

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

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){}

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

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