Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Joomla! Plugins Programmeren [NL]

1,820 views

Published on

Presentatie "Joomla! Plugins Programmeren"

Published in: Technology, Art & Photos
  • Be the first to comment

Joomla! Plugins Programmeren [NL]

  1. 1. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Joomla! plugins ontwikkelen
  2. 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. 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. 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. 5. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Deel 1: Waarom een plugin?
  6. 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. 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. 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. 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. 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. 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. 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. 13. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Deel 2: Een beetje code
  14. 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. 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. 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. 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. 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. 19. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo index.html
  20. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 33. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo Deel 3: Braindump
  34. 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. 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. 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. 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. 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. 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. 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. 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. 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. 43. Presentatie “Joomla! Plugins Ontwikkelen” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo tweet @yireo

×