Joomla! Plugins Programmeren [NL]

1,734 views

Published on

Presentatie "Joomla! Plugins Programmeren"

Published in: Technology, Art & Photos
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,734
On SlideShare
0
From Embeds
0
Number of Embeds
254
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×