SlideShare a Scribd company logo
1 of 43
Download to read offline
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Joomla! plugins
ontwikkelen
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Ik ben Jisse Reitsma
Developer
Ondernemer
Eigenaar van Yireo
Joomla! & Magento
Extensies & development
Tutorials & blogs
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Plugins die ik geschreven heb
Language Domains
Auto Login IP
Demo Site
Fancybox
HTTP Authenticatie
New Relic
Piwik
WebP
ScriptMerge
SEF Test
SSL Redirection
Static Content
Trademark
32+ MageBridge plugins
10+ SimpleLists plugins
8+ Dynamic404 plugins
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Zelf Joomla! plugins ontwikkelen
Deel I - Waarom een plugin?
Deel II - Een beetje programmeercode
Deel III - Hmmm, braindump
Presentatie online: http://slideshare.net/yireo
Tweets: @yireo
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Deel 1:
Waarom een plugin?
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Joomla! extensies
Component
Modules
Plugins
Templates
Libraries
Taalbestanden
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Definitie van een Joomla! plugin
“Een Joomla! extensie die functionaliteit
biedt op basis van een trigger-event. De
Joomla! core heeft een aantal standaard
core-events, maar iedere Joomla!
extensie kan extra events trigger.”
[vrije vertaling van docs.joomla.org]
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Plugin-groepen (core)
Authentication
Content
System
User
Editors
Editors Xtd
Search
Finder
CAPTCHA
Extension
Quickicon
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Plugin-groepen (3rd
party)
VirtueMart [product, custom]
JomSocial [community]
K2 [fields]
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Plugin-groepen (yireo)
Dynamic404 Match Lookups
SimpleLists Link
MageBridge Product Sales Actions
MageBridge Newsletter Subscriptions
MageBridge event forwarding
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
User-plugin events
onUserLogin
onUserLogout
onUserAuthenticate
onUserLoginFailure
onUserBeforeSave / onUserAfterSave
onUserBeforeDelete / onUserAfterDelete
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System-plugin events
onAfterInitialise
onAfterRoute
onAfterDispatch
onBeforeRender / onAfterRender
onBeforeCompileHead
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Deel 2:
Een beetje code
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Redenen voor een custom plugin
HTML-code achteraf wijzigen
Document-headers een beetje tweaken
User-formulier uitbreiden
Extra authenticatie-type
... en nog veel
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin-bestanden
plugins/system/example/example.php
plugins/system/example/example.xml
plugins/system/example/index.html
administrator/languages/en-GB/en-GB.plg_system_example.ini
administrator/languages/en-GB/en-
GB.plg_system_example.sys.ini
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin-bestanden
plugins/system/example/example.php
plugins/system/example/example.xml
plugins/system/example/index.html
administrator/languages/en-GB/en-GB.plg_system_example.ini
administrator/languages/en-GB/en-
GB.plg_system_example.sys.ini
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Taal-bestand
PLG_SYSTEM_EXAMPLE="System ­ Example"
PLG_SYSTEM_EXAMPLE_DESC="An example System Plugin"
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin-bestanden
plugins/system/example/example.php
plugins/system/example/example.xml
plugins/system/example/index.html
administrator/languages/en-GB/en-GB.plg_system_example.ini
administrator/languages/en-GB/en-
GB.plg_system_example.sys.ini
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
index.html
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin-bestanden
plugins/system/example/example.php
plugins/system/example/example.xml
plugins/system/example/index.html
administrator/languages/en-GB/en-GB.plg_system_example.ini
administrator/languages/en-GB/en-
GB.plg_system_example.sys.ini
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
XML-manifest
<?xml version="1.0" encoding="utf­8"?>
<extension version="3.0" type="plugin" group="content">
  <name>PLG_SYSTEM_EXAMPLE</name>
  <description>PLG_SYSTEM_EXAMPLE_DESC</description>
  <version>0.0.1</version>
  <files>
    <filename plugin=”example”>example.php</filename>
    <filename>index.html</filename>
  </files>
  <languages>
    <language tag=”en­GB”>en­GB.plg_system_example.ini</language>
    <language tag=”en­GB”>en­GB.plg_system_example.sys.ini</language>
  </languages>
</extension>
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin-bestanden
plugins/system/example/example.php
plugins/system/example/example.xml
plugins/system/example/index.html
administrator/languages/en-GB/en-GB.plg_system_example.ini
administrator/languages/en-GB/en-
GB.plg_system_example.sys.ini
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin (1/3)
<?php
defined('_JEXEC') or die();
jimport( 'joomla.plugin.plugin' );
class plgSystemExample extends JPlugin
{
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Redenen voor een custom plugin
HTML-code achteraf wijzigen
Document-headers een beetje tweaken
User-formulier uitbreiden
Extra authenticatie-type
... en nog veel
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin (2/3)
<?php
defined('_JEXEC') or die();
jimport( 'joomla.plugin.plugin' );
class plgSystemExample extends JPlugin
{
    public function onAfterRender()
    {
        $body = JResponse::getBody();
        // @todo: Do something with the $body
        JResponse::setBody($body);
    }
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Redenen voor een custom plugin
HTML-code achteraf wijzigen
Document-headers een beetje tweaken
User-formulier uitbreiden
Extra authenticatie-type
... en nog veel
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
System Plugin (3/3)
<?php
defined('_JEXEC') or die();
jimport( 'joomla.plugin.plugin' );
class plgSystemExample extends JPlugin
{
    public function onAfterDispatch()
    {
        $document = JFactory::getDocument();
        $document­>setGenerator('drupal');
        $document­>addScriptDeclaration($script);
    }
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Redenen voor een custom plugin
HTML-code achteraf wijzigen
Document-headers een beetje tweaken
User-formulier uitbreiden
Extra authenticatie-type
... en nog veel
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
User Plugin (1/1)
<?php
defined('_JEXEC') or die();
jimport( 'joomla.plugin.plugin' );
class plgUserExample extends JPlugin
{
    public function onContentPrepareForm($form, $data)
    {
        $form­>removeField('name', 'profile');
        return true;
    }
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Redenen voor een custom plugin
HTML-code achteraf wijzigen
Document-headers een beetje tweaken
User-formulier uitbreiden
Extra authenticatie-type
... en nog veel
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Authenticatie Plugin (1/1)
<?php
defined('_JEXEC') or die();
jimport( 'joomla.plugin.plugin' );
class plgAuthenticationExample extends JPlugin
{
  public function onUserAuthenticate($credentials, $options, &$response )
  {
    if ($credentials['password'] == 'joomla') {
      $response­>status = JAuthentication::STATUS_SUCCESS;
      $response­>error_message = '';
    } else {
      $response­>status = JAuthentication::STATUS_FAILURE;
      $response­>error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS')
    }
  }
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Redenen voor een custom plugin
HTML-code achteraf wijzigen
Document-headers een beetje tweaken
User-formulier uitbreiden
Extra authenticatie-type
... en nog veel
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Deel 3:
Braindump
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Aanroepen van content-event [1/2]
Eigen component biedt item met content aan ($item)
Doel is aanpassen van $item titel via extra plugins
Gebruik van content-event onPrepareContent
Voordeel: Alle $item-properties kunnen gewijzigd worden
Dispatch event in component-view
Bijvoorbeeld views/item/view.html.php
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Aanroepen van content-event [2/2]
JPluginHelper::importPlugin( 'content' );
$dispatcher = JDispatcher::getInstance();
$arguments = array(&$item, &$item_params, 0);
$results = $dispatcher­>trigger(
'onPrepareContent', $arguments
);
Let op: Referentie naar $item zelf met ampersand &.
Return-variabele $results bevat hooguit een event-status.
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Aanroepen van eigen event (1/3)
Eigen component?
components/com_example
Maak eigen plugin-groep-folder aan
plugins/custom
Maak eigen plugin aan
plugins/custom/example/example.php
plugins/custom/example/example.xml
plugins/custom/example/index.html
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Aanroepen van eigen event (2/3)
jimport( 'joomla.plugin.plugin' );
class plgCustomExample extends JPlugin
{
    public function doSomething()
    {
        // @todo: Do something
    }
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Aanroepen van eigen event (3/3)
Toevoegen op juiste plek in eigen component:
JPluginHelper::importPlugin('custom');
$dispatcher = JDispatcher::getInstance();
$arguments = null;
$results = $dispatcher­>trigger(
'doSomething', $arguments
);
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Checks (1/2)
Handige variabelen:
$app = JFactory::getApplication();
$document = JFactory::getDocument();
Controleer of huidige applicatie de frontend is:
if(!JFactory::getApplication()­>isSite()) return false;
Controleer of dit wel een HTML-document is:
if (JFactory::getDocument()­>getType() != 'html') 
return false;
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Checks (2/2)
Negeer AJAX-requests:
if (JRequest::getCmd('tmpl') == 'component') return false;
if (JRequest::getCmd('format') == 'raw') return false;
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 
'xmlhttprequest') return false;
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Parameters in J1.5 vs J2.5
private function getParams()
{
  jimport('joomla.version');
  $version = new JVersion();
  if(version_compare($version­>RELEASE, '1.5', 'eq')) {
    $plugin = JPluginHelper::getPlugin('system','example');   
    $params = new JParameter($plugin­>params);
    return $params;
  } else {
    return $this­>params;
  }
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
Taalbestand inladen
public function __construct(& $subject, $config)
{
  parent::__construct($subject, $config);
  $this­>loadLanguage();
}
Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo
tweet @yireo

More Related Content

Similar to Joomla! Plugins Programmeren [NL]

Magento testomgeving
Magento testomgevingMagento testomgeving
Magento testomgevingYireo
 
Joomla! Menu-Items (NL)
Joomla! Menu-Items (NL)Joomla! Menu-Items (NL)
Joomla! Menu-Items (NL)Yireo
 
#jd12nl Joomla 2.5 extensies
#jd12nl Joomla 2.5 extensies#jd12nl Joomla 2.5 extensies
#jd12nl Joomla 2.5 extensiesHerman Peeren
 
Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5Peter Martin
 
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: PluginsExpert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: PluginsYireo
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknetHans Rossel
 
WordPress pizza sessie
WordPress pizza sessieWordPress pizza sessie
WordPress pizza sessieBarry Kooij
 
Workshop web2.0
Workshop web2.0Workshop web2.0
Workshop web2.0jdpooter
 
Wordpress voor beginners
Wordpress voor beginnersWordpress voor beginners
Wordpress voor beginnersLaundrylicious
 
Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!Sander Potjer
 
UiTwidgets build on Drupal7 by CultuurNet
UiTwidgets build on Drupal7 by CultuurNetUiTwidgets build on Drupal7 by CultuurNet
UiTwidgets build on Drupal7 by CultuurNetSven Houtmeyers
 
Joomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! Usability
Joomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! UsabilityJoomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! Usability
Joomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! UsabilitySander Potjer
 
Mijn eerste Joomla! plugin
Mijn eerste Joomla! pluginMijn eerste Joomla! plugin
Mijn eerste Joomla! pluginStudioDeOorzaak
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages IntroductieRob Bontekoe
 
JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!René Kreijveld
 
Bloggen als Marketingcommunicatietool
Bloggen als MarketingcommunicatietoolBloggen als Marketingcommunicatietool
Bloggen als MarketingcommunicatietoolPeter Vermeer
 
Web X.0 (evolution from the static web to the intelligent web) in nederlands
Web X.0 (evolution from the static web to the intelligent web) in nederlandsWeb X.0 (evolution from the static web to the intelligent web) in nederlands
Web X.0 (evolution from the static web to the intelligent web) in nederlandsKaren De Groof
 
Grandma & Joomla - Make Joomla User Friendly
Grandma & Joomla - Make Joomla User FriendlyGrandma & Joomla - Make Joomla User Friendly
Grandma & Joomla - Make Joomla User FriendlySander Potjer
 

Similar to Joomla! Plugins Programmeren [NL] (20)

Magento testomgeving
Magento testomgevingMagento testomgeving
Magento testomgeving
 
Joomla! Menu-Items (NL)
Joomla! Menu-Items (NL)Joomla! Menu-Items (NL)
Joomla! Menu-Items (NL)
 
#jd12nl Joomla 2.5 extensies
#jd12nl Joomla 2.5 extensies#jd12nl Joomla 2.5 extensies
#jd12nl Joomla 2.5 extensies
 
Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5
 
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: PluginsExpert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: Plugins
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknet
 
WordPress pizza sessie
WordPress pizza sessieWordPress pizza sessie
WordPress pizza sessie
 
Workshop web2.0
Workshop web2.0Workshop web2.0
Workshop web2.0
 
Wordpress voor beginners
Wordpress voor beginnersWordpress voor beginners
Wordpress voor beginners
 
Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!
 
Joomladagen 2011-help-een-bug
Joomladagen 2011-help-een-bugJoomladagen 2011-help-een-bug
Joomladagen 2011-help-een-bug
 
UiTwidgets build on Drupal7 by CultuurNet
UiTwidgets build on Drupal7 by CultuurNetUiTwidgets build on Drupal7 by CultuurNet
UiTwidgets build on Drupal7 by CultuurNet
 
Joomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! Usability
Joomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! UsabilityJoomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! Usability
Joomla websites gebruiksvriendelijk inrichten - Expert Sessie Joomla! Usability
 
Mijn eerste Joomla! plugin
Mijn eerste Joomla! pluginMijn eerste Joomla! plugin
Mijn eerste Joomla! plugin
 
Web Security 101
Web Security 101Web Security 101
Web Security 101
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages Introductie
 
JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!
 
Bloggen als Marketingcommunicatietool
Bloggen als MarketingcommunicatietoolBloggen als Marketingcommunicatietool
Bloggen als Marketingcommunicatietool
 
Web X.0 (evolution from the static web to the intelligent web) in nederlands
Web X.0 (evolution from the static web to the intelligent web) in nederlandsWeb X.0 (evolution from the static web to the intelligent web) in nederlands
Web X.0 (evolution from the static web to the intelligent web) in nederlands
 
Grandma & Joomla - Make Joomla User Friendly
Grandma & Joomla - Make Joomla User FriendlyGrandma & Joomla - Make Joomla User Friendly
Grandma & Joomla - Make Joomla User Friendly
 

More from Yireo

Faster Magento Integration Tests
Faster Magento Integration TestsFaster Magento Integration Tests
Faster Magento Integration TestsYireo
 
Mage-OS Nederland
Mage-OS NederlandMage-OS Nederland
Mage-OS NederlandYireo
 
Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Yireo
 
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopMagento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopYireo
 
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Yireo
 
Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Yireo
 
Magento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningMagento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningYireo
 
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishMagento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishYireo
 
Magento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyMagento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyYireo
 
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenMagento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenYireo
 
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Yireo
 
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationMagento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationYireo
 
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaMagento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaYireo
 
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 ShopsMagento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 ShopsYireo
 
Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Yireo
 
Magento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryMagento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryYireo
 
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksMagento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksYireo
 
Magento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteMagento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteYireo
 
Magento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaMagento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaYireo
 
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningMagento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningYireo
 

More from Yireo (20)

Faster Magento Integration Tests
Faster Magento Integration TestsFaster Magento Integration Tests
Faster Magento Integration Tests
 
Mage-OS Nederland
Mage-OS NederlandMage-OS Nederland
Mage-OS Nederland
 
Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Modernizing Vue Storefront 1
Modernizing Vue Storefront 1
 
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopMagento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
 
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
 
Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2
 
Magento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningMagento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learning
 
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishMagento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
 
Magento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyMagento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App Economy
 
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenMagento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
 
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
 
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationMagento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
 
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaMagento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
 
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 ShopsMagento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
 
Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2
 
Magento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryMagento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 Summary
 
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksMagento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
 
Magento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteMagento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - Keynote
 
Magento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaMagento 2 Seminar - Community agenda
Magento 2 Seminar - Community agenda
 
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningMagento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
 

Joomla! Plugins Programmeren [NL]

  • 1. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Joomla! plugins ontwikkelen
  • 2. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Ik ben Jisse Reitsma Developer Ondernemer Eigenaar van Yireo Joomla! & Magento Extensies & development Tutorials & blogs
  • 3. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Plugins die ik geschreven heb Language Domains Auto Login IP Demo Site Fancybox HTTP Authenticatie New Relic Piwik WebP ScriptMerge SEF Test SSL Redirection Static Content Trademark 32+ MageBridge plugins 10+ SimpleLists plugins 8+ Dynamic404 plugins
  • 4. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Zelf Joomla! plugins ontwikkelen Deel I - Waarom een plugin? Deel II - Een beetje programmeercode Deel III - Hmmm, braindump Presentatie online: http://slideshare.net/yireo Tweets: @yireo
  • 5. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Deel 1: Waarom een plugin?
  • 6. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Joomla! extensies Component Modules Plugins Templates Libraries Taalbestanden
  • 7. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Definitie van een Joomla! plugin “Een Joomla! extensie die functionaliteit biedt op basis van een trigger-event. De Joomla! core heeft een aantal standaard core-events, maar iedere Joomla! extensie kan extra events trigger.” [vrije vertaling van docs.joomla.org]
  • 8. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Plugin-groepen (core) Authentication Content System User Editors Editors Xtd Search Finder CAPTCHA Extension Quickicon
  • 9. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Plugin-groepen (3rd party) VirtueMart [product, custom] JomSocial [community] K2 [fields]
  • 10. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Plugin-groepen (yireo) Dynamic404 Match Lookups SimpleLists Link MageBridge Product Sales Actions MageBridge Newsletter Subscriptions MageBridge event forwarding
  • 11. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo User-plugin events onUserLogin onUserLogout onUserAuthenticate onUserLoginFailure onUserBeforeSave / onUserAfterSave onUserBeforeDelete / onUserAfterDelete
  • 12. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System-plugin events onAfterInitialise onAfterRoute onAfterDispatch onBeforeRender / onAfterRender onBeforeCompileHead
  • 13. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Deel 2: Een beetje code
  • 14. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Redenen voor een custom plugin HTML-code achteraf wijzigen Document-headers een beetje tweaken User-formulier uitbreiden Extra authenticatie-type ... en nog veel
  • 15. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin-bestanden plugins/system/example/example.php plugins/system/example/example.xml plugins/system/example/index.html administrator/languages/en-GB/en-GB.plg_system_example.ini administrator/languages/en-GB/en- GB.plg_system_example.sys.ini
  • 16. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin-bestanden plugins/system/example/example.php plugins/system/example/example.xml plugins/system/example/index.html administrator/languages/en-GB/en-GB.plg_system_example.ini administrator/languages/en-GB/en- GB.plg_system_example.sys.ini
  • 17. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Taal-bestand PLG_SYSTEM_EXAMPLE="System ­ Example" PLG_SYSTEM_EXAMPLE_DESC="An example System Plugin"
  • 18. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin-bestanden plugins/system/example/example.php plugins/system/example/example.xml plugins/system/example/index.html administrator/languages/en-GB/en-GB.plg_system_example.ini administrator/languages/en-GB/en- GB.plg_system_example.sys.ini
  • 19. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo index.html
  • 20. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin-bestanden plugins/system/example/example.php plugins/system/example/example.xml plugins/system/example/index.html administrator/languages/en-GB/en-GB.plg_system_example.ini administrator/languages/en-GB/en- GB.plg_system_example.sys.ini
  • 21. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo XML-manifest <?xml version="1.0" encoding="utf­8"?> <extension version="3.0" type="plugin" group="content">   <name>PLG_SYSTEM_EXAMPLE</name>   <description>PLG_SYSTEM_EXAMPLE_DESC</description>   <version>0.0.1</version>   <files>     <filename plugin=”example”>example.php</filename>     <filename>index.html</filename>   </files>   <languages>     <language tag=”en­GB”>en­GB.plg_system_example.ini</language>     <language tag=”en­GB”>en­GB.plg_system_example.sys.ini</language>   </languages> </extension>
  • 22. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin-bestanden plugins/system/example/example.php plugins/system/example/example.xml plugins/system/example/index.html administrator/languages/en-GB/en-GB.plg_system_example.ini administrator/languages/en-GB/en- GB.plg_system_example.sys.ini
  • 23. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin (1/3) <?php defined('_JEXEC') or die(); jimport( 'joomla.plugin.plugin' ); class plgSystemExample extends JPlugin { }
  • 24. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Redenen voor een custom plugin HTML-code achteraf wijzigen Document-headers een beetje tweaken User-formulier uitbreiden Extra authenticatie-type ... en nog veel
  • 25. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin (2/3) <?php defined('_JEXEC') or die(); jimport( 'joomla.plugin.plugin' ); class plgSystemExample extends JPlugin {     public function onAfterRender()     {         $body = JResponse::getBody();         // @todo: Do something with the $body         JResponse::setBody($body);     } }
  • 26. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Redenen voor een custom plugin HTML-code achteraf wijzigen Document-headers een beetje tweaken User-formulier uitbreiden Extra authenticatie-type ... en nog veel
  • 27. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo System Plugin (3/3) <?php defined('_JEXEC') or die(); jimport( 'joomla.plugin.plugin' ); class plgSystemExample extends JPlugin {     public function onAfterDispatch()     {         $document = JFactory::getDocument();         $document­>setGenerator('drupal');         $document­>addScriptDeclaration($script);     } }
  • 28. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Redenen voor een custom plugin HTML-code achteraf wijzigen Document-headers een beetje tweaken User-formulier uitbreiden Extra authenticatie-type ... en nog veel
  • 29. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo User Plugin (1/1) <?php defined('_JEXEC') or die(); jimport( 'joomla.plugin.plugin' ); class plgUserExample extends JPlugin {     public function onContentPrepareForm($form, $data)     {         $form­>removeField('name', 'profile');         return true;     } }
  • 30. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Redenen voor een custom plugin HTML-code achteraf wijzigen Document-headers een beetje tweaken User-formulier uitbreiden Extra authenticatie-type ... en nog veel
  • 31. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Authenticatie Plugin (1/1) <?php defined('_JEXEC') or die(); jimport( 'joomla.plugin.plugin' ); class plgAuthenticationExample extends JPlugin {   public function onUserAuthenticate($credentials, $options, &$response )   {     if ($credentials['password'] == 'joomla') {       $response­>status = JAuthentication::STATUS_SUCCESS;       $response­>error_message = '';     } else {       $response­>status = JAuthentication::STATUS_FAILURE;       $response­>error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS')     }   } }
  • 32. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Redenen voor een custom plugin HTML-code achteraf wijzigen Document-headers een beetje tweaken User-formulier uitbreiden Extra authenticatie-type ... en nog veel
  • 33. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Deel 3: Braindump
  • 34. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Aanroepen van content-event [1/2] Eigen component biedt item met content aan ($item) Doel is aanpassen van $item titel via extra plugins Gebruik van content-event onPrepareContent Voordeel: Alle $item-properties kunnen gewijzigd worden Dispatch event in component-view Bijvoorbeeld views/item/view.html.php
  • 35. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Aanroepen van content-event [2/2] JPluginHelper::importPlugin( 'content' ); $dispatcher = JDispatcher::getInstance(); $arguments = array(&$item, &$item_params, 0); $results = $dispatcher­>trigger( 'onPrepareContent', $arguments ); Let op: Referentie naar $item zelf met ampersand &. Return-variabele $results bevat hooguit een event-status.
  • 36. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Aanroepen van eigen event (1/3) Eigen component? components/com_example Maak eigen plugin-groep-folder aan plugins/custom Maak eigen plugin aan plugins/custom/example/example.php plugins/custom/example/example.xml plugins/custom/example/index.html
  • 37. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Aanroepen van eigen event (2/3) jimport( 'joomla.plugin.plugin' ); class plgCustomExample extends JPlugin {     public function doSomething()     {         // @todo: Do something     } }
  • 38. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Aanroepen van eigen event (3/3) Toevoegen op juiste plek in eigen component: JPluginHelper::importPlugin('custom'); $dispatcher = JDispatcher::getInstance(); $arguments = null; $results = $dispatcher­>trigger( 'doSomething', $arguments );
  • 39. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Checks (1/2) Handige variabelen: $app = JFactory::getApplication(); $document = JFactory::getDocument(); Controleer of huidige applicatie de frontend is: if(!JFactory::getApplication()­>isSite()) return false; Controleer of dit wel een HTML-document is: if (JFactory::getDocument()­>getType() != 'html')  return false;
  • 40. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Checks (2/2) Negeer AJAX-requests: if (JRequest::getCmd('tmpl') == 'component') return false; if (JRequest::getCmd('format') == 'raw') return false; if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&  strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) ==  'xmlhttprequest') return false;
  • 41. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Parameters in J1.5 vs J2.5 private function getParams() {   jimport('joomla.version');   $version = new JVersion();   if(version_compare($version­>RELEASE, '1.5', 'eq')) {     $plugin = JPluginHelper::getPlugin('system','example');        $params = new JParameter($plugin­>params);     return $params;   } else {     return $this­>params;   } }
  • 42. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Taalbestand inladen public function __construct(& $subject, $config) {   parent::__construct($subject, $config);   $this­>loadLanguage(); }
  • 43. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo tweet @yireo