You are on page 1of 58

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<<< 4. OOP 5. Parameters 6. Views 7. Taalbestand 8. Parameters Advanced 9. Packagen 10. Updaten
Peter Martin joomladagen.nl 20+21 april 2013

1. Extensies in het kort

Peter Martin joomladagen.nl 20+21 april 2013

1. Extensies 5 types
Extensies = uitbreidingen voor Joomla: 1. Componenten 2. Modules 3. Plugins 4. Templates 5. Taalbestanden

Peter Martin joomladagen.nl 20+21 april 2013

1. Extensies Component

Meest belangrijke extensiebepaalt de functionaliteit Max. 1 component tegelijk Activatie via URL + &option=com_componentnaam Beheer: Components > Componentnaam uitzondering is com_content: Content Meerdere Modi: CRUD (Create, Read, Update, Delete) Voorbeeld: com_content

Peter Martin joomladagen.nl 20+21 april 2013

1. Extensies Module

Ondersteunend. Uitvoer naar scherm (Module Positie) Meerdere tegelijk. Activatie via menu item: URL + &Itemid=x Beheer: Extensions > Module Beheer: ACL, volgorde, parameters 1 modus: Read (Display) Voorbeeld: mod_breadcrumbs

Peter Martin joomladagen.nl 20+21 april 2013

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

1. Extensies Samenwerking
Samenwerking 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

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


<?phpif($this>countModules('modposnaam')):?> <jdoc:includetype="modules"name="modposnaam"style="none"/> <?phpendif;?>

Peter Martin joomladagen.nl 20+21 april 2013

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 #__extensions
name=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 Weblinks


Ontwikkel Module: Toon meest recent toegevoegde weblinks

Map: /modules/mod_db8latestweblinks/ Bestanden:


mod_db8latestweblinks.php

<?php defined('_JEXEC') or die; echo "Recente Weblinks!"; ?> 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 Weblinks


Manifest file: mod_db8latestweblinks.xml
<?xmlversion="1.0"encoding="UTF8"?> <extensiontype="module"version="2.5"client="site"method="upgrade"> <name>db8LatestWeblinks</name> <author>PeterMartin</author> <creationDate>April2013</creationDate> <copyright>(C)20052013PeterMartin.Allrightsreserved.</copyright> <license>GNUGeneralPublicLicenseversion2orlater;</license> <authorEmail>joomla@db8.nl</authorEmail> <authorUrl>www.db8.nl</authorUrl> <version>2.5.0</version> <description>MOD_DB8LATESTWEBLINKS_XML_DESCRIPTION</description> <files> <filenamemodule="mod_db8latestweblinks">mod_db8latestweblinks.php</filename> <filename>mod_db8latestweblinks.xml</filename> </files> </extension>

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 Database
Joomla Database Object
1.Joomla's Database Object aanroepen 2.Een leeg Query Object instantieren 3.Query Object opbouwen
GEEN 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.php
defined('_JEXEC')ordie; $db=Jfactory::getDbo(); $query=$db>getQuery(true); $query>select('*') >from('#__weblinks') >order('createdDESC'); $db>setQuery($query,0,7); $items=$db>loadObjectList(); ?> <ul> <?phpforeach($itemsAS$item):?> <li><?phpecho$item>title;?></li> <?phpendforeach;?> </ul>

Peter Martin joomladagen.nl 20+21 april 2013

18

3. Module Database

Peter Martin joomladagen.nl 20+21 april 2013

19

3. Module Database
Debug: 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.php
defined('_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.php
defined('_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.php
defined('_JEXEC')ordie; ?> <ul> <?phpforeach($itemsAS$item):?> <li><?phpecho$item>title;?></li> <?phpendforeach;?> </ul>

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

<config> <fieldsname="params"> <fieldsetname="basic"> <field/> </fieldset> <fieldsetname="advanced"> <field/> </fieldset> </fields> </config>
Peter Martin joomladagen.nl 20+21 april 2013

29

5. Parameters Keuzes
/modules/mod_db8latestweblinks/

mod_db8latestweblinks.xml

<fieldsetname="basic"> <fieldname="catid" type="category" extension="com_weblinks" multiple="true" required="true" label="Categorie" description="KiesWeblinkscategorie"/> <fieldname="count" type="text" default="5" label="Aantal" description="ToonaantalWeblinks"/> </fieldset>
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
<fieldname="catid" type="category" extension="com_weblinks" multiple="true" required="true" label="JCATEGORY" description="MOD_DB8LATESTWEBLINKS_ FIELD_CATEGORY_DESC"/> <fieldname="count" type="text" default="5" label="MOD_DB8LATESTWEBLINKS_ FIELD_COUNT_LABEL" description="MOD_DB8LATESTWEBLINKS_ FIELD_COUNT_DESC"/> </fieldset>

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.ini
MOD_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.ini
MOD_DB8LATESTWEBLINKS="WeblinksLatest" MOD_DB8LATESTWEBLINKS_XML_DESCRIPTION="Thismodulesdisplaysthelatestweblinks fromacategorydefinedintheWeblinkscomponent." MOD_DB8LATESTWEBLINKS_LAYOUT_DEFAULT="Default"

/language/nl-NL/nl-NL.mod_db8latestweblinks.ini
MOD_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.ini
MOD_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.php


Peter Martin joomladagen.nl 20+21 april 2013

40

7. Views Layout keuze parameter


/modules/mod_db8latestweblinks/ mod_db8latestweblinks.xml
<fieldsetname="advanced"> <fieldname="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_MODULE_LAYOUT_DESC" /> </fieldset>

Peter Martin joomladagen.nl 20+21 april 2013

41

7. Views Alternatieve weergave


/modules/mod_db8latestweblinks/tmpl/ with-date.php
defined('_JEXEC')ordie; ?> <ul> <?phpforeach($itemsAS$item):?> <li><?phpecho$item>created."".$item>title;?></li> <?phpendforeach;?> </ul>

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
<fieldsetname="advanced"> <fieldname="moduleclass_sfx" type="text" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"/> <fieldname="cache" type="list" default="1" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <optionvalue="1">JGLOBAL_USE_GLOBAL</option> <optionvalue="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> <fieldname="cache_time" type="text" default="900" label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC"/> <fieldname="cachemode" type="hidden" default="static"> <optionvalue="static"></option> </field> </fieldset>

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

<files> <filename module="mod_db8latestweblinks"> mod_db8latestweblinks.php</filename> <filename>mod_db8latestweblinks.xml</filename> <filename>helper.php</filename> <folder>tmpl</folder> <folder>language</folder> </files>


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: <updateservers> 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

<updateservers> <servertype="extension"priority="1" name="mod_db8latestweblinks">http://www.db8.nl/upd ate/mod_db8latestweblinksupdate.xml</server> </updateservers>

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:

<?xmlversion="1.0"encoding="utf8"?> <updates> <update> <name>db8LatestWeblinks</name> <description>Moduletoshowlatestadded Weblinks</description> <element>mod_db8latestweblinks</element> <type>module</type> <version>2.0</version> <infourltitle="db8Latest Weblinks">http://www.db8.nl/en/downloads/db8latest weblinks</infourl>

Peter Martin joomladagen.nl 20+21 april 2013

53

10. Update .xml server file


<downloads> <downloadurltype="full" format="zip">http://www.db8.nl/extensions/mod_db8_latest _weblinks_2.5_v2.0.zip</downloadurl> </downloads> <tags> <tag>stable</tag> </tags> <maintainer>PeterMartin</maintainer> <maintainerurl>http://www.db8.nl</maintainerurl> <targetplatformname="joomla"version="2.5"/> </update> </updates>

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

You might also like