SlideShare a Scribd company logo
1 of 87
TIENDA DEVELOPMENT
     JAndBeyond 2011 Workshop
Keynote URL




http://tiny.cc/jab11tienda
Summary
Summary
Who am I?
Summary
Who am I?

Who are You?
Summary
Who am I?

Who are You?

What’s this workshop about?
Summary
Who am I?

Who are You?

What’s this workshop about?

projects.dioscouri.com : the home for Tienda Development
Summary
Who am I?

Who are You?

What’s this workshop about?

projects.dioscouri.com : the home for Tienda Development

Tienda Codebase: brief introduction
Summary
Who am I?

Who are You?

What’s this workshop about?

projects.dioscouri.com : the home for Tienda Development

Tienda Codebase: brief introduction

What are we going to build?
Summary
Who am I?

Who are You?

What’s this workshop about?

projects.dioscouri.com : the home for Tienda Development

Tienda Codebase: brief introduction

What are we going to build?

CODING !!!!
Who am I?
Daniele Rosario
Who am I?
                    Daniele Rosario




 Weble is an italian company
that focuses on Joomla! based
 websites, internet marketing
    and web development.
Who am I?
                    Daniele Rosario




 Weble is an italian company        Dioscouri Design is a
that 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!
Who are You?
Who are You?
Fresh New Web Developers?
Who are You?
Fresh New Web Developers?

Experienced Web Developers?
Who are You?
Fresh New Web Developers?

Experienced Web Developers?

Joomla! Web Developers?
Who are You?
Fresh New Web Developers?

Experienced Web Developers?

Joomla! Web Developers?

Tienda Web Developers?
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’re
probably in the wrong room! )
What’s this Workshop about?
What’s this Workshop about?
Tienda Framework Basics
What’s this Workshop about?
Tienda Framework Basics

  Models
What’s this Workshop about?
Tienda Framework Basics

  Models

  Tables
What’s this Workshop about?
Tienda Framework Basics

  Models

  Tables

  Helpers
What’s this Workshop about?
Tienda Framework Basics

  Models

  Tables

  Helpers

  Plugins
What’s this Workshop about?
Tienda Framework Basics

  Models

  Tables

  Helpers

  Plugins

  Template Overrides
What’s this Workshop about?
Tienda Framework Basics

  Models

  Tables

  Helpers

  Plugins

  Template Overrides

Coding
http://projects.dioscouri.com
http://projects.dioscouri.com
Public Space for all Dioscouri.com projects
http://projects.dioscouri.com
Public Space for all Dioscouri.com projects

Tienda Community dedicated space
http://projects.dioscouri.com
Public Space for all Dioscouri.com projects

Tienda Community dedicated space

Register now!
http://projects.dioscouri.com
Public Space for all Dioscouri.com projects

Tienda Community dedicated space

Register now!

Checkout the SVN branch at “branches/jab11”
http://projects.dioscouri.com
Public Space for all Dioscouri.com projects

Tienda Community dedicated space

Register now!

Checkout the SVN branch at “branches/jab11”

Fire up you IDE! ( or your notepad, if you want! )
Tienda Codebase
Tienda Codebase

M
Models
Tienda Codebase

M              V
Models        Views
Tienda Codebase

M              V           C
Models        Views    Controllers
Tienda Codebase

M              V           C
Models        Views    Controllers



 T
Tables
Tienda Codebase

M              V           C
Models        Views     Controllers



 T             H
Tables        Helpers
Tienda Codebase

M              V            C
Models        Views     Controllers



 T             H            P
Tables        Helpers      Plugins
Models
Models
Are “Dumb” - they will do what they are told to do.
Models
Are “Dumb” - they will do what they are told to do.

No default “State” - default is: return all the results.
Models
Are “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
Models
Are “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

Fetch the data from the Database
Models
Are “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

Fetch 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();
Tables
Tables
Powered up version of JTable
Tables
Powered up version of JTable

Support multiple keys loading
Tables
Powered up version of JTable

Support multiple keys loading

Used for fetching single rows from the Database
Tables
Powered up version of JTable

Support multiple keys loading

Used for fetching single rows from the Database

Contains some cool & useful methods
Tables
Powered up version of JTable

Support multiple keys loading

Used for fetching single rows from the Database

Contains some cool & useful methods
  $order = JTable::getInstance( 'Orders', 'TiendaTable' );
  $foreach( $items as $item )
  {
       $order->addItem( $item );
  }
  $order->calculateTotals();
  $total = $order->order_total;
Helpers
Helpers
Helpers perform common actions that do not fit in M, C or T
Helpers
Helpers perform common actions that do not fit in M, C or T

  Currency Conversion
Helpers
Helpers perform common actions that do not fit in M, C or T

  Currency Conversion

  Routing
Helpers
Helpers perform common actions that do not fit in M, C or T

  Currency Conversion

  Routing

  Image Resizing
Helpers
Helpers perform common actions that do not fit in M, C or T

  Currency Conversion

  Routing

  Image Resizing


  TiendaHelperImage::resize( ‘product.jpg’ );
Loader
Loader
Tienda has a LOT of classes
Loader
Tienda has a LOT of classes

We didn’t want to load everything (that is really too much!)
Loader
Tienda has a LOT of classes

We didn’t want to load everything (that is really too much!)

Solution: dynamic loading
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!
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 );
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 lazy
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 lazy
Tienda::get( ‘TiendaHelperProducts’, ‘helpers.products’ )->getGalleryImages( $product_id );
Plugins
Plugins
Plugins that extends our base classes
Plugins
Plugins that extends our base classes

  TiendaPluginBase - (template override support & common methods)
Plugins
Plugins that extends our base classes

  TiendaPluginBase - (template override support & common methods)

    TiendaShippingPlugin - (base class and interface for shipping plugins)
Plugins
Plugins 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)
Plugins
Plugins 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)
Plugins
Plugins 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)
Plugins
 ( again)
Plugins
                          ( again)

A LOT of plugin events in Tienda code ( see Tienda Event List )
Plugins
                          ( again)

A LOT of plugin events in Tienda code ( see Tienda Event List )


                       400 +
Plugins
                          ( again)

A LOT of plugin events in Tienda code ( see Tienda Event List )


                       400 +
You can do almost EVERYTHING with a simple plugin
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
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’
Plugins
( this is the last one, i promise! )
Plugins
             ( this is the last one, i promise! )

All Tienda Plugins supports html overrides
Plugins
             ( this is the last one, i promise! )

All Tienda Plugins supports html overrides

  template files in the plugin subfolder “tmpl”
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 );
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
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

You can write extensions for Tienda in just a few hours of work,
without compromising the entire system!
What are we going to build?
Ideas?

More than one extension at the same time?
Thank You!

Daniele Rosario
Weble - Dioscouri Design
   daniele@weble.it
drosario@dioscouri.com
 twitter.com/Skullbock
 twitter.com/dioscouri

More Related Content

Similar to Tienda Development Workshop - JAB11

State of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueState of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueDries Buytaert
 
Scaling Complexity in WordPress Enterprise Apps
Scaling Complexity in WordPress Enterprise AppsScaling Complexity in WordPress Enterprise Apps
Scaling Complexity in WordPress Enterprise AppsMike Schinkel
 
WordPress Internationalization and Localization - WordPress Translation Day 3...
WordPress Internationalization and Localization - WordPress Translation Day 3...WordPress Internationalization and Localization - WordPress Translation Day 3...
WordPress Internationalization and Localization - WordPress Translation Day 3...WordPress Trivandrum
 
Enterprise Class WordPress
Enterprise Class WordPressEnterprise Class WordPress
Enterprise Class WordPressJake Goldman
 
Mobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B ExperimentsMobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B Experimentslacyrhoades
 
Building a site for people with big imaginations
Building a site for people with big imaginationsBuilding a site for people with big imaginations
Building a site for people with big imaginationsMark Mansour
 
Web app-la-jan-2
Web app-la-jan-2Web app-la-jan-2
Web app-la-jan-2Thinkful
 
Jr devsurvivalguide
Jr devsurvivalguideJr devsurvivalguide
Jr devsurvivalguideJames York
 
Build an App with JavaScript and jQuery - LA - July 18
Build an App with JavaScript and jQuery - LA - July 18Build an App with JavaScript and jQuery - LA - July 18
Build an App with JavaScript and jQuery - LA - July 18Thinkful
 
Sell your code: Announcing the DroopyAppStore
Sell your code: Announcing the DroopyAppStoreSell your code: Announcing the DroopyAppStore
Sell your code: Announcing the DroopyAppStoreRobert Douglass
 
Making Steaks from Sacred Cows
Making Steaks from Sacred CowsMaking Steaks from Sacred Cows
Making Steaks from Sacred CowsKevlin Henney
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Ivan Chepurnyi
 
Things i wish i knew about drupal commerce
Things i wish i knew about drupal commerceThings i wish i knew about drupal commerce
Things i wish i knew about drupal commerceWill Hall
 
Inbound Growth for SaaS Scale-Ups #INBOUND18
Inbound Growth for SaaS Scale-Ups #INBOUND18Inbound Growth for SaaS Scale-Ups #INBOUND18
Inbound Growth for SaaS Scale-Ups #INBOUND18Hull
 
Experiments in Reasoning
Experiments in ReasoningExperiments in Reasoning
Experiments in ReasoningAslam Khan
 
Alex Podopryhora - Selling across multiple channels made easy
Alex Podopryhora - Selling across multiple channels made easyAlex Podopryhora - Selling across multiple channels made easy
Alex Podopryhora - Selling across multiple channels made easyMeet Magento Italy
 
How to Sharpen Your Investigative Analysis with PowerPivot
How to Sharpen Your Investigative Analysis with PowerPivotHow to Sharpen Your Investigative Analysis with PowerPivot
How to Sharpen Your Investigative Analysis with PowerPivotCarmen Mardiros
 
Cleaning up a WordPress Mess
Cleaning up a WordPress MessCleaning up a WordPress Mess
Cleaning up a WordPress MessJonny Shaw
 
Extending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UKExtending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UKjghazally
 
Recursion with details Implementation.pptx
Recursion with details Implementation.pptxRecursion with details Implementation.pptx
Recursion with details Implementation.pptxmrhabib10
 

Similar to Tienda Development Workshop - JAB11 (20)

State of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueState of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon Prague
 
Scaling Complexity in WordPress Enterprise Apps
Scaling Complexity in WordPress Enterprise AppsScaling Complexity in WordPress Enterprise Apps
Scaling Complexity in WordPress Enterprise Apps
 
WordPress Internationalization and Localization - WordPress Translation Day 3...
WordPress Internationalization and Localization - WordPress Translation Day 3...WordPress Internationalization and Localization - WordPress Translation Day 3...
WordPress Internationalization and Localization - WordPress Translation Day 3...
 
Enterprise Class WordPress
Enterprise Class WordPressEnterprise Class WordPress
Enterprise Class WordPress
 
Mobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B ExperimentsMobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B Experiments
 
Building a site for people with big imaginations
Building a site for people with big imaginationsBuilding a site for people with big imaginations
Building a site for people with big imaginations
 
Web app-la-jan-2
Web app-la-jan-2Web app-la-jan-2
Web app-la-jan-2
 
Jr devsurvivalguide
Jr devsurvivalguideJr devsurvivalguide
Jr devsurvivalguide
 
Build an App with JavaScript and jQuery - LA - July 18
Build an App with JavaScript and jQuery - LA - July 18Build an App with JavaScript and jQuery - LA - July 18
Build an App with JavaScript and jQuery - LA - July 18
 
Sell your code: Announcing the DroopyAppStore
Sell your code: Announcing the DroopyAppStoreSell your code: Announcing the DroopyAppStore
Sell your code: Announcing the DroopyAppStore
 
Making Steaks from Sacred Cows
Making Steaks from Sacred CowsMaking Steaks from Sacred Cows
Making Steaks from Sacred Cows
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)
 
Things i wish i knew about drupal commerce
Things i wish i knew about drupal commerceThings i wish i knew about drupal commerce
Things i wish i knew about drupal commerce
 
Inbound Growth for SaaS Scale-Ups #INBOUND18
Inbound Growth for SaaS Scale-Ups #INBOUND18Inbound Growth for SaaS Scale-Ups #INBOUND18
Inbound Growth for SaaS Scale-Ups #INBOUND18
 
Experiments in Reasoning
Experiments in ReasoningExperiments in Reasoning
Experiments in Reasoning
 
Alex Podopryhora - Selling across multiple channels made easy
Alex Podopryhora - Selling across multiple channels made easyAlex Podopryhora - Selling across multiple channels made easy
Alex Podopryhora - Selling across multiple channels made easy
 
How to Sharpen Your Investigative Analysis with PowerPivot
How to Sharpen Your Investigative Analysis with PowerPivotHow to Sharpen Your Investigative Analysis with PowerPivot
How to Sharpen Your Investigative Analysis with PowerPivot
 
Cleaning up a WordPress Mess
Cleaning up a WordPress MessCleaning up a WordPress Mess
Cleaning up a WordPress Mess
 
Extending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UKExtending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UK
 
Recursion with details Implementation.pptx
Recursion with details Implementation.pptxRecursion with details Implementation.pptx
Recursion with details Implementation.pptx
 

Recently uploaded

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Tienda Development Workshop - JAB11

  • 1. TIENDA DEVELOPMENT JAndBeyond 2011 Workshop
  • 6. Summary Who am I? Who are You? What’s this workshop about?
  • 7. Summary Who am I? Who are You? What’s this workshop about? projects.dioscouri.com : the home for Tienda Development
  • 8. Summary Who am I? Who are You? What’s this workshop about? projects.dioscouri.com : the home for Tienda Development Tienda Codebase: brief introduction
  • 9. Summary Who am I? Who are You? What’s this workshop about? projects.dioscouri.com : the home for Tienda Development Tienda Codebase: brief introduction What are we going to build?
  • 10. Summary Who am I? Who are You? What’s this workshop about? projects.dioscouri.com : the home for Tienda Development Tienda Codebase: brief introduction What are we going to build? CODING !!!!
  • 11. Who am I? Daniele Rosario
  • 12. Who am I? Daniele Rosario Weble is an italian company that focuses on Joomla! based websites, internet marketing and web development.
  • 13. Who am I? Daniele Rosario Weble is an italian company Dioscouri Design is a that 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!
  • 15. Who are You? Fresh New Web Developers?
  • 16. Who are You? Fresh New Web Developers? Experienced Web Developers?
  • 17. Who are You? Fresh New Web Developers? Experienced Web Developers? Joomla! Web Developers?
  • 18. Who are You? Fresh New Web Developers? Experienced Web Developers? Joomla! Web Developers? Tienda Web Developers?
  • 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’re probably in the wrong room! )
  • 21. What’s this Workshop about? Tienda Framework Basics
  • 22. What’s this Workshop about? Tienda Framework Basics Models
  • 23. What’s this Workshop about? Tienda Framework Basics Models Tables
  • 24. What’s this Workshop about? Tienda Framework Basics Models Tables Helpers
  • 25. What’s this Workshop about? Tienda Framework Basics Models Tables Helpers Plugins
  • 26. What’s this Workshop about? Tienda Framework Basics Models Tables Helpers Plugins Template Overrides
  • 27. What’s this Workshop about? Tienda Framework Basics Models Tables Helpers Plugins Template Overrides Coding
  • 30. http://projects.dioscouri.com Public Space for all Dioscouri.com projects Tienda Community dedicated space
  • 31. http://projects.dioscouri.com Public Space for all Dioscouri.com projects Tienda Community dedicated space Register now!
  • 32. http://projects.dioscouri.com Public Space for all Dioscouri.com projects Tienda Community dedicated space Register now! Checkout the SVN branch at “branches/jab11”
  • 33. http://projects.dioscouri.com Public Space for all Dioscouri.com projects Tienda Community dedicated space Register now! Checkout the SVN branch at “branches/jab11” Fire up you IDE! ( or your notepad, if you want! )
  • 36. Tienda Codebase M V Models Views
  • 37. Tienda Codebase M V C Models Views Controllers
  • 38. Tienda Codebase M V C Models Views Controllers T Tables
  • 39. Tienda Codebase M V C Models Views Controllers T H Tables Helpers
  • 40. Tienda Codebase M V C Models Views Controllers T H P Tables Helpers Plugins
  • 42. Models Are “Dumb” - they will do what they are told to do.
  • 43. Models Are “Dumb” - they will do what they are told to do. No default “State” - default is: return all the results.
  • 44. Models Are “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. Models Are “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 Fetch the data from the Database
  • 46. Models Are “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 Fetch 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();
  • 49. Tables Powered up version of JTable Support multiple keys loading
  • 50. Tables Powered up version of JTable Support multiple keys loading Used for fetching single rows from the Database
  • 51. Tables Powered up version of JTable Support multiple keys loading Used for fetching single rows from the Database Contains some cool & useful methods
  • 52. Tables Powered up version of JTable Support multiple keys loading Used for fetching single rows from the Database Contains some cool & useful methods $order = JTable::getInstance( 'Orders', 'TiendaTable' ); $foreach( $items as $item ) { $order->addItem( $item ); } $order->calculateTotals(); $total = $order->order_total;
  • 54. Helpers Helpers perform common actions that do not fit in M, C or T
  • 55. Helpers Helpers perform common actions that do not fit in M, C or T Currency Conversion
  • 56. Helpers Helpers perform common actions that do not fit in M, C or T Currency Conversion Routing
  • 57. Helpers Helpers perform common actions that do not fit in M, C or T Currency Conversion Routing Image Resizing
  • 58. Helpers Helpers perform common actions that do not fit in M, C or T Currency Conversion Routing Image Resizing TiendaHelperImage::resize( ‘product.jpg’ );
  • 60. Loader Tienda has a LOT of classes
  • 61. Loader Tienda has a LOT of classes We didn’t want to load everything (that is really too much!)
  • 62. Loader Tienda has a LOT of classes We didn’t want to load everything (that is really too much!) Solution: dynamic loading
  • 63. 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!
  • 64. 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 );
  • 65. 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 lazy
  • 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 lazy Tienda::get( ‘TiendaHelperProducts’, ‘helpers.products’ )->getGalleryImages( $product_id );
  • 68. Plugins Plugins that extends our base classes
  • 69. Plugins Plugins that extends our base classes TiendaPluginBase - (template override support & common methods)
  • 70. Plugins Plugins that extends our base classes TiendaPluginBase - (template override support & common methods) TiendaShippingPlugin - (base class and interface for shipping plugins)
  • 71. Plugins Plugins 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. Plugins Plugins 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. Plugins Plugins 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)
  • 75. Plugins ( again) A LOT of plugin events in Tienda code ( see Tienda Event List )
  • 76. Plugins ( again) A LOT of plugin events in Tienda code ( see Tienda Event List ) 400 +
  • 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. 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
  • 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. Plugins ( this is the last one, i promise! )
  • 81. Plugins ( this is the last one, i promise! ) All Tienda Plugins supports html overrides
  • 82. Plugins ( this is the last one, i promise! ) All Tienda Plugins supports html overrides template files in the plugin subfolder “tmpl”
  • 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. 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. 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 You can write extensions for Tienda in just a few hours of work, without compromising the entire system!
  • 86. What are we going to build? Ideas? More than one extension at the same time?
  • 87. Thank You! Daniele Rosario Weble - Dioscouri Design daniele@weble.it drosario@dioscouri.com twitter.com/Skullbock twitter.com/dioscouri

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n