Joomla 2.5 / 3.0 module programmeren

Embed Size (px)

DESCRIPTION

Er zijn verschillende soorten extensies beschikbaar om de functionaliteit van Joomla uit te breiden: Componenten, Modules, Plugins, Templates, Language files. Met een beetje PHP & MySQL kennis kun je ze ook zelf maken.In deze Joomladagen 2013 presentatie laat Peter zien hoe je voor Joomla 2.5/3.0 een module kunt programmeren, inclusief parameters, taalbestand, alternatieve layout en installatie procedure.

Citation preview

Joomla 2.5 / 3.0 module programmeren

Peter Martin, twitter: @pe7er Joomladagen.nl, za 20 april 2013

Overzicht Presentatie 1.

Extensies in het kort 2. Module basis 2. Database >>>Sheetsvia:www.db8.nl Module Beheer: ACL, volgorde, parameters 1 modus: Read (Display) Voorbeeld: mod_breadcrumbs

Peter Martin joomladagen.nl 20+21 april 2013

6

1. Extensies Plugin

Ondersteunend. Functioneert onzichtbaar op achtergrond. Meerdere tegelijk. Activatie via bepaalde events (of hooks) in extensies Beheer: Extensions > Plugin Beheer: ACL, volgorde, parameters 1 modus Voorbeeld: Content emailcloak Plugin

Peter Martin joomladagen.nl 20+21 april 2013

7

1. Extensies SamenwerkingSamenwerking Zoeken: Module (M) C Form M Form

Zoekveld

Component

(C)C Processing

Zoekformulier Resultaatpagina

P Search in database table P Search in database table P Search in database table C Results

Plugin

(P)

Articles Categories Contacts

Peter Martin joomladagen.nl 20+21 april 2013

8

1. Extensies Modules in Template Weergave

Module Posities:

Extensions > Template Manager > Preview Module Positions: enabled URL + ?tp=1

Code

voor Module Positie in Template: /templates/template_naam/index.php

Peter Martin joomladagen.nl 20+21 april 2013

9

2. Module basis

Peter Martin joomladagen.nl 20+21 april 2013

10

2. Module basis

Locatie:

Front-end: /modules/mod_naam Back-end: /administrator/modules/mod_naam mod_naam.php code mod_naam.xml installatie & parameters #__extensionsname=Module Naam type=module element=mod_naam folder={leeg} client_id: 0 = front-end, 1 = back-end

Bestanden:

Database referentie

Peter Martin joomladagen.nl 20+21 april 2013

11

2. Module basis: voorbeeld Joomla's

Weblinks Component

Toont weblinks van een Weblink categorie Telt aantal kliks

Database

tabel: #__weblinks

id, catid, title, url, description, created, hits, state, catid

Joomla's

Weblinks Module

created datum wordt *niet* gebruikt

Peter Martin joomladagen.nl 20+21 april 2013

12

2. Module Latest WeblinksOntwikkel Module: Toon meest recent toegevoegde weblinks

Map: /modules/mod_db8latestweblinks/ Bestanden: mod_db8latestweblinks.php

mod_db8latestweblinks.xml {volgende sheet}

Installatie: Extensies

> Extensiebeheer > Ontdekken (Discover) Extensies > Modulebeheer > [Nieuw]

Peter Martin joomladagen.nl 20+21 april 2013

13

2. Module Latest WeblinksManifest file: mod_db8latestweblinks.xml db8LatestWeblinks PeterMartin April2013 (C)20052013PeterMartin.Allrightsreserved. GNUGeneralPublicLicenseversion2orlater; [email protected] www.db8.nl 2.5.0 MOD_DB8LATESTWEBLINKS_XML_DESCRIPTION mod_db8latestweblinks.php mod_db8latestweblinks.xml

Peter Martin joomladagen.nl 20+21 april 2013

14

2. Module Latest Weblinks

Peter Martin joomladagen.nl 20+21 april 2013

15

3. Module Database

Peter Martin joomladagen.nl 20+21 april 2013

16

3. Module DatabaseJoomla Database Object1.Joomla's Database Object aanroepen 2.Een leeg Query Object instantieren 3.Query Object opbouwenGEEN hardcoded MySQL string gebruiken! SELECT * FROM #__weblinks ORDER BY created DESC

4.Query Object in Database Object plaatsen 5.Uit Database Object de resultaten opvragen

Peter Martin joomladagen.nl 20+21 april 2013

17

3. Module Database mod_db8latestweblinks.phpdefined('_JEXEC')ordie; $db=Jfactory::getDbo(); $query=$db>getQuery(true); $query>select('*') >from('#__weblinks') >order('createdDESC'); $db>setQuery($query,0,7); $items=$db>loadObjectList(); ?>

Peter Martin joomladagen.nl 20+21 april 2013

18

3. Module Database

Peter Martin joomladagen.nl 20+21 april 2013

19

3. Module DatabaseDebug: echo "sql = $query"; print_r($items); HTML

Google Chrome Inspect Element FireFox + FireBug addon

Peter Martin joomladagen.nl 20+21 april 2013

20

4. Module OOP style

Peter Martin joomladagen.nl 20+21 april 2013

21

4. Module OOP style Object

Oriented Programming logica & schermuitvoer

Scheiding MVC

Model Controller View

Model helper Controller de module zelf (1 modus: toon module) View HTML output template override mogelijk!

Peter Martin joomladagen.nl 20+21 april 2013

22

4. Module OOP style: Model/modules/mod_db8latestweblinks/ helper.phpdefined('_JEXEC')ordie; classmodDb8latestweblinksHelper { staticfunctiongetItems($params) { $db=Jfactory::getDbo(); $query=$db>getQuery(true); $query>select('*') >from('#__weblinks') >order('createdDESC'); $db>setQuery($query,0,7); $items=$db>loadObjectList(); return$items; } }

Peter Martin joomladagen.nl 20+21 april 2013

23

4. Module OOP style: Controller/modules/mod_db8latestweblinks/ mod_db8latestweblinks.phpdefined('_JEXEC')ordie; require_oncedirname(__FILE__).'/helper.php'; $items= modDb8latestweblinksHelper::getItems($params); requireJmoduleHelper::getLayoutPath( 'mod_db8latestweblinks',$params>get('layout', 'default'));

Peter Martin joomladagen.nl 20+21 april 2013

24

4. Module OOP style: View/modules/mod_db8latestweblinks/tmpl/ default.phpdefined('_JEXEC')ordie; ?>

Peter Martin joomladagen.nl 20+21 april 2013

25

4. Module OOP style

Peter Martin joomladagen.nl 20+21 april 2013

26

5. Parameters

Peter Martin joomladagen.nl 20+21 april 2013

27

5. Parameters Flexibiliteit

Categorien Toon aantal resultaten Target Window Follow/No Follow Toon: Datum, Beschrijving (hover), Hits Tel kliks wel / niet Toon: Published / unpublished

.xml

keuze definitie Helper.php keuze in SQL query meenemen

Peter Martin joomladagen.nl 20+21 april 2013

28

5. Parameters Keuzes /modules/mod_db8latestweblinks/

mod_db8latestweblinks.xml

Peter Martin joomladagen.nl 20+21 april 2013

29

5. Parameters Keuzes /modules/mod_db8latestweblinks/

mod_db8latestweblinks.xml

Peter Martin joomladagen.nl 20+21 april 2013

30

5. Parameters Keuzes In

back-end

Peter Martin joomladagen.nl 20+21 april 2013

31

5. Parameters /modules/mod_db8latestweblinks/

helper.php

staticfunctiongetItems($params){ $db=Jfactory::getDbo(); $query=$db>getQuery(true); $query>select('*') >from('#__weblinks') >order('createdDESC'); $catid=$params>get('catid'); if(is_array($catid)){ if($catid[0]!=null){ $catid=implode(',',$catid); $query>where('catidIN('.$catid.')'); } } $db>setQuery($query,0,$params>get('count',5)); $rows=$db>loadObjectList(); return$rows; }

Peter Martin joomladagen.nl 20+21 april 2013

32

6. Taalbestand

Peter Martin joomladagen.nl 20+21 april 2013

33

6. Taalbestand Flexibiliteit

Mbt distributie Mbt Language Override !

Taallabels in .xml, en in .php via JText Locatie:

Front-end: /language/en-GB/en-GB.mod_naam.ini /language/en-GB/en-GB.mod_naam.sys.ini Back-end: /administrator/language/en-GB/en-GB.mod_naam.ini /administrator/language/en-GB/en-GB.mod_naam. sys.ini

Peter Martin joomladagen.nl 20+21 april 2013

34

6. Taalbestand

/modules/mod_db8latestweblinks/ mod_db8latestweblinks.xml

Peter Martin joomladagen.nl 20+21 april 2013

35

6. Taalbestand

Peter Martin joomladagen.nl 20+21 april 2013

36

6. Taalbestand

/language/en-GB/en-GB.mod_db8latestweblinks.iniMOD_DB8LATESTWEBLINKS_FIELD_CATEGORY_DESC="Choosetheweblinkscategorytodisplay" MOD_DB8LATESTWEBLINKS_FIELD_COUNT_DESC="Numberofweblinkstodisplay" MOD_DB8LATESTWEBLINKS_FIELD_COUNT_LABEL="Count"

/language/en-GB/en-GB.mod_db8latestweblinks.sys.iniMOD_DB8LATESTWEBLINKS="WeblinksLatest" MOD_DB8LATESTWEBLINKS_XML_DESCRIPTION="Thismodulesdisplaysthelatestweblinks fromacategorydefinedintheWeblinkscomponent." MOD_DB8LATESTWEBLINKS_LAYOUT_DEFAULT="Default"

/language/nl-NL/nl-NL.mod_db8latestweblinks.iniMOD_DB8LATESTWEBLINKS_FIELD_CATEGORY_DESC="Kiesdeweblinkscategorieomtetonen" MOD_DB8LATESTWEBLINKS_FIELD_COUNT_DESC="Aantalweertegevenweblinks" MOD_DB8LATESTWEBLINKS_FIELD_COUNT_LABEL="Aantal"

/language/nl-NL/nl-NL.mod_db8latestweblinks.sys.iniMOD_DB8LATESTWEBLINKS="WeblinksMeestrecente" MOD_DB8LATESTWEBLINKS_XML_DESCRIPTION="Dezemoduletoontdemeestrecenteweblinks uiteencategorievanhetweblinkscomponent." MOD_DB8LATESTWEBLINKS_LAYOUT_DEFAULT="Standaard"

Peter Martin joomladagen.nl 20+21 april 2013

37

6. Taalbestand

Peter Martin joomladagen.nl 20+21 april 2013

38

7. Views

Peter Martin joomladagen.nl 20+21 april 2013

39

7. Views View

= HTML Output View wijzigen: is via template override te wijzigen /modules/mod_db8latestweblinks/tmpl/ default.php Aan

beheerders meerdere views aanbieden?

1.Layout keuze parameter /modules/mod_db8latestweblinks/ mod_db8latestweblinks.xml 2.Alternatieve view /modules/mod_db8latestweblinks/tmpl/ alternatieve_weergave.phpPeter Martin joomladagen.nl 20+21 april 2013

40

7. Views Layout keuze parameter/modules/mod_db8latestweblinks/ mod_db8latestweblinks.xml

Peter Martin joomladagen.nl 20+21 april 2013

41

7. Views Alternatieve weergave/modules/mod_db8latestweblinks/tmpl/ with-date.phpdefined('_JEXEC')ordie; ?>

Peter Martin joomladagen.nl 20+21 april 2013

42

7. Views Alternatieve weergave

Peter Martin joomladagen.nl 20+21 april 2013

43

8. Parameters Advanced

Peter Martin joomladagen.nl 20+21 april 2013

44

8. Parameters Advanced Advanced

Options

Alternative Layout (zie 7. Views) Module Class Suffix Caching Cache Time

Peter Martin joomladagen.nl 20+21 april 2013

45

8. Parameters Advanced JGLOBAL_USE_GLOBAL COM_MODULES_FIELD_VALUE_NOCACHING

Peter Martin joomladagen.nl 20+21 april 2013

46

9. Packaging (voor distributie)

Peter Martin joomladagen.nl 20+21 april 2013

47

9. Packaging (voor distributie) Archive Inhoud:

bestand: mod_naam_j25_v1.zip

mod_db8latestweblinks.xml mod_db8latestweblinks.php helper.php /language/en-GB/en-GB.mod_db8latestweblinks.ini /language/en-GB/en-GB.mod_db8latestweblinks.sys.ini

Taalbestanden:

HTML

output:

/tmpl/default.php /tmpl/with-date.php

Peter Martin joomladagen.nl 20+21 april 2013

48

9. Packaging (voor distributie) Installatiebestand:

mod_db8latestweblinks.xml

mod_db8latestweblinks.php mod_db8latestweblinks.xml helper.php tmpl language TESTEN!

Installatie op andere site / server

Peter Martin joomladagen.nl 20+21 april 2013

49

10. Update

Peter Martin joomladagen.nl 20+21 april 2013

50

10. Update In

module's .xml file: Op server een .xml file met versie informatie

Peter Martin joomladagen.nl 20+21 april 2013

51

10. Update .xml manifest file /modules/mod_db8latestweblinks/

mod_db8latestweblinks.xml

http://www.db8.nl/upd ate/mod_db8latestweblinksupdate.xml

Geen

spaties of line breaks tussen server tags

Peter Martin joomladagen.nl 20+21 april 2013

52

10. Update .xml server file Locatie zoals gespecificeerd in .xml http://www.db8.nl/update/ mod_db8latestweblinksupdate.xml

manifest file:

db8LatestWeblinks Moduletoshowlatestadded Weblinks mod_db8latestweblinks module 2.0 http://www.db8.nl/en/downloads/db8latest weblinks

Peter Martin joomladagen.nl 20+21 april 2013

53

10. Update .xml server file http://www.db8.nl/extensions/mod_db8_latest _weblinks_2.5_v2.0.zip stable PeterMartin http://www.db8.nl

Peter Martin joomladagen.nl 20+21 april 2013

54

Peter Martin joomladagen.nl 20+21 april 2013

55

Vragen?

Peter Martin joomladagen.nl 20+21 april 2013

56

Vragen? Presentatie

beschikbaar via www.db8.nl

Peter Martin e-mail: info at db8.nl website: www.db8.nl

Peter Martin joomladagen.nl 20+21 april 2013

57

Gebruikte foto's

Speed Typing - Matthew Bowden http://www.sxc.hu/photo/275499 Motherboard 4 - Lisa Zanchi http://www.sxc.hu/photo/103914 ram Mohamed Riffath http://www.sxc.hu/photo/487296 lots of files 2 - Michael & Christa Richert http://www.sxc.hu/photo/1370555 Blank E-Box for Software etc 6 - Przemyslaw Szczepanski, http://www.sxc.hu/photo/950048 switches - "trhaynes", http://www.sxc.hu/photo/56670 Bengali Keyborad - Mohammad Jobaed Adnan http://www.sxc.hu/photo/676844 san sebastian views 1 - ibon san martin http://www.sxc.hu/photo/94018 Communications Receiver - John Munsch http://www.sxc.hu/photo/260775 Fragile Parcel - Richard Dudley http://www.sxc.hu/photo/1279274 Sparks - Hector Landaeta http://www.sxc.hu/photo/1184243 signs signs - Jason Antony, http://www.sxc.hu/photo/751034 Face - Questions - Bob Smith, http://www.sxc.hu/photo/418215

Peter Martin joomladagen.nl 20+21 april 2013

58