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.

Tienda Development Workshop - JAB11

875 views

Published on

Slideshow presentation for the "Tienda Development Workshop" at JAB11 by Daniele Rosario

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Tienda Development Workshop - JAB11

  1. 1. TIENDA DEVELOPMENT JAndBeyond 2011 Workshop
  2. 2. Keynote URLhttp://tiny.cc/jab11tienda
  3. 3. Summary
  4. 4. SummaryWho am I?
  5. 5. SummaryWho am I?Who are You?
  6. 6. SummaryWho am I?Who are You?What’s this workshop about?
  7. 7. SummaryWho am I?Who are You?What’s this workshop about?projects.dioscouri.com : the home for Tienda Development
  8. 8. SummaryWho am I?Who are You?What’s this workshop about?projects.dioscouri.com : the home for Tienda DevelopmentTienda Codebase: brief introduction
  9. 9. SummaryWho am I?Who are You?What’s this workshop about?projects.dioscouri.com : the home for Tienda DevelopmentTienda Codebase: brief introductionWhat are we going to build?
  10. 10. SummaryWho am I?Who are You?What’s this workshop about?projects.dioscouri.com : the home for Tienda DevelopmentTienda Codebase: brief introductionWhat are we going to build?CODING !!!!
  11. 11. Who am I?Daniele Rosario
  12. 12. Who am I? Daniele Rosario Weble is an italian companythat focuses on Joomla! based websites, internet marketing and web development.
  13. 13. Who am I? Daniele Rosario Weble is an italian company Dioscouri Design is athat focuses on Joomla! based Manhattan-based design firm websites, internet marketing specializing in PHP and and web development. MySQL, with a particular emphasis on the open source PHP package, Joomla!
  14. 14. Who are You?
  15. 15. Who are You?Fresh New Web Developers?
  16. 16. Who are You?Fresh New Web Developers?Experienced Web Developers?
  17. 17. Who are You?Fresh New Web Developers?Experienced Web Developers?Joomla! Web Developers?
  18. 18. Who are You?Fresh New Web Developers?Experienced Web Developers?Joomla! Web Developers?Tienda Web Developers?
  19. 19. Who are You?Fresh New Web Developers?Experienced Web Developers?Joomla! Web Developers?Tienda Web Developers?....... What’s a Developer? ( If this is your answer, you’reprobably in the wrong room! )
  20. 20. What’s this Workshop about?
  21. 21. What’s this Workshop about?Tienda Framework Basics
  22. 22. What’s this Workshop about?Tienda Framework Basics Models
  23. 23. What’s this Workshop about?Tienda Framework Basics Models Tables
  24. 24. What’s this Workshop about?Tienda Framework Basics Models Tables Helpers
  25. 25. What’s this Workshop about?Tienda Framework Basics Models Tables Helpers Plugins
  26. 26. What’s this Workshop about?Tienda Framework Basics Models Tables Helpers Plugins Template Overrides
  27. 27. What’s this Workshop about?Tienda Framework Basics Models Tables Helpers Plugins Template OverridesCoding
  28. 28. http://projects.dioscouri.com
  29. 29. http://projects.dioscouri.comPublic Space for all Dioscouri.com projects
  30. 30. http://projects.dioscouri.comPublic Space for all Dioscouri.com projectsTienda Community dedicated space
  31. 31. http://projects.dioscouri.comPublic Space for all Dioscouri.com projectsTienda Community dedicated spaceRegister now!
  32. 32. http://projects.dioscouri.comPublic Space for all Dioscouri.com projectsTienda Community dedicated spaceRegister now!Checkout the SVN branch at “branches/jab11”
  33. 33. http://projects.dioscouri.comPublic Space for all Dioscouri.com projectsTienda Community dedicated spaceRegister now!Checkout the SVN branch at “branches/jab11”Fire up you IDE! ( or your notepad, if you want! )
  34. 34. Tienda Codebase
  35. 35. Tienda CodebaseMModels
  36. 36. Tienda CodebaseM VModels Views
  37. 37. Tienda CodebaseM V CModels Views Controllers
  38. 38. Tienda CodebaseM V CModels Views Controllers TTables
  39. 39. Tienda CodebaseM V CModels Views Controllers T HTables Helpers
  40. 40. Tienda CodebaseM V CModels Views Controllers T H PTables Helpers Plugins
  41. 41. Models
  42. 42. ModelsAre “Dumb” - they will do what they are told to do.
  43. 43. ModelsAre “Dumb” - they will do what they are told to do.No default “State” - default is: return all the results.
  44. 44. ModelsAre “Dumb” - they will do what they are told to do.No default “State” - default is: return all the results.Do not interact with $_REQUEST or other data sources
  45. 45. ModelsAre “Dumb” - they will do what they are told to do.No default “State” - default is: return all the results.Do not interact with $_REQUEST or other data sourcesFetch the data from the Database
  46. 46. ModelsAre “Dumb” - they will do what they are told to do.No default “State” - default is: return all the results.Do not interact with $_REQUEST or other data sourcesFetch the data from the Database $date = JFactory::getDate()->toMysql(); $model = JModel::getInstance( Products, TiendaModel ); $model->setState(filter_published, 1); $model->setState(filter_published_date, $date ); $model->setState(filter_enabled, 1); $products = $model->getList();
  47. 47. Tables
  48. 48. TablesPowered up version of JTable
  49. 49. TablesPowered up version of JTableSupport multiple keys loading
  50. 50. TablesPowered up version of JTableSupport multiple keys loadingUsed for fetching single rows from the Database
  51. 51. TablesPowered up version of JTableSupport multiple keys loadingUsed for fetching single rows from the DatabaseContains some cool & useful methods
  52. 52. TablesPowered up version of JTableSupport multiple keys loadingUsed for fetching single rows from the DatabaseContains some cool & useful methods $order = JTable::getInstance( Orders, TiendaTable ); $foreach( $items as $item ) { $order->addItem( $item ); } $order->calculateTotals(); $total = $order->order_total;
  53. 53. Helpers
  54. 54. HelpersHelpers perform common actions that do not fit in M, C or T
  55. 55. HelpersHelpers perform common actions that do not fit in M, C or T Currency Conversion
  56. 56. HelpersHelpers perform common actions that do not fit in M, C or T Currency Conversion Routing
  57. 57. HelpersHelpers perform common actions that do not fit in M, C or T Currency Conversion Routing Image Resizing
  58. 58. HelpersHelpers perform common actions that do not fit in M, C or T Currency Conversion Routing Image Resizing TiendaHelperImage::resize( ‘product.jpg’ );
  59. 59. Loader
  60. 60. LoaderTienda has a LOT of classes
  61. 61. LoaderTienda has a LOT of classesWe didn’t want to load everything (that is really too much!)
  62. 62. LoaderTienda has a LOT of classesWe didn’t want to load everything (that is really too much!)Solution: dynamic loading
  63. 63. LoaderTienda has a LOT of classesWe didn’t want to load everything (that is really too much!)Solution: dynamic loadingWhen you need a class, just load it first, and then call it!
  64. 64. LoaderTienda has a LOT of classesWe didn’t want to load everything (that is really too much!)Solution: dynamic loadingWhen you need a class, just load it first, and then call it! Tienda::load( ‘TiendaHelperProducts’, ‘helpers.products’ ); TiendaHelperProduct::getGalleryImages( $product_id );
  65. 65. LoaderTienda has a LOT of classesWe didn’t want to load everything (that is really too much!)Solution: dynamic loadingWhen you need a class, just load it first, and then call it! Tienda::load( ‘TiendaHelperProducts’, ‘helpers.products’ ); TiendaHelperProduct::getGalleryImages( $product_id );Or just get it, if you are lazy
  66. 66. Loader Tienda has a LOT of classes We didn’t want to load everything (that is really too much!) Solution: dynamic loading When you need a class, just load it first, and then call it! Tienda::load( ‘TiendaHelperProducts’, ‘helpers.products’ ); TiendaHelperProduct::getGalleryImages( $product_id ); Or just get it, if you are lazyTienda::get( ‘TiendaHelperProducts’, ‘helpers.products’ )->getGalleryImages( $product_id );
  67. 67. Plugins
  68. 68. PluginsPlugins that extends our base classes
  69. 69. PluginsPlugins that extends our base classes TiendaPluginBase - (template override support & common methods)
  70. 70. PluginsPlugins that extends our base classes TiendaPluginBase - (template override support & common methods) TiendaShippingPlugin - (base class and interface for shipping plugins)
  71. 71. PluginsPlugins that extends our base classes TiendaPluginBase - (template override support & common methods) TiendaShippingPlugin - (base class and interface for shipping plugins) TiendaPaymentPlugin - (base class and interface for payment plugins)
  72. 72. PluginsPlugins that extends our base classes TiendaPluginBase - (template override support & common methods) TiendaShippingPlugin - (base class and interface for shipping plugins) TiendaPaymentPlugin - (base class and interface for payment plugins) TiendaReportPlugin - (base report plugin with helper methods)
  73. 73. PluginsPlugins that extends our base classes TiendaPluginBase - (template override support & common methods) TiendaShippingPlugin - (base class and interface for shipping plugins) TiendaPaymentPlugin - (base class and interface for payment plugins) TiendaReportPlugin - (base report plugin with helper methods) TiendaToolPlugin - (multistep support & helper methods)
  74. 74. Plugins ( again)
  75. 75. Plugins ( again)A LOT of plugin events in Tienda code ( see Tienda Event List )
  76. 76. Plugins ( again)A LOT of plugin events in Tienda code ( see Tienda Event List ) 400 +
  77. 77. Plugins ( again)A LOT of plugin events in Tienda code ( see Tienda Event List ) 400 +You can do almost EVERYTHING with a simple plugin
  78. 78. Plugins ( again)A LOT of plugin events in Tienda code ( see Tienda Event List ) 400 +You can do almost EVERYTHING with a simple pluginTienda has a neat url that allows you to call any plugin method
  79. 79. Plugins ( again) A LOT of plugin events in Tienda code ( see Tienda Event List ) 400 + You can do almost EVERYTHING with a simple plugin Tienda has a neat url that allows you to call any plugin method‘index.php?option=com_tienda&task=doTask&element=plugin_name&elementTask=pluginMethod’
  80. 80. Plugins( this is the last one, i promise! )
  81. 81. Plugins ( this is the last one, i promise! )All Tienda Plugins supports html overrides
  82. 82. Plugins ( this is the last one, i promise! )All Tienda Plugins supports html overrides template files in the plugin subfolder “tmpl”
  83. 83. Plugins ( this is the last one, i promise! )All Tienda Plugins supports html overrides template files in the plugin subfolder “tmpl” output with $this->_getLayout( $filename );
  84. 84. Plugins ( this is the last one, i promise! )All Tienda Plugins supports html overrides template files in the plugin subfolder “tmpl” output with $this->_getLayout( $filename );All Tienda Plugins can have their own MVC
  85. 85. Plugins ( this is the last one, i promise! )All Tienda Plugins supports html overrides template files in the plugin subfolder “tmpl” output with $this->_getLayout( $filename );All Tienda Plugins can have their own MVCYou can write extensions for Tienda in just a few hours of work,without compromising the entire system!
  86. 86. What are we going to build?Ideas?More than one extension at the same time?
  87. 87. Thank You!Daniele RosarioWeble - Dioscouri Design daniele@weble.itdrosario@dioscouri.com twitter.com/Skullbock twitter.com/dioscouri

×