Tienda Development Workshop - JAB11

722 views
673 views

Published on

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

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
722
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 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

    ×