SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Semelhante a 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
 

Semelhante a 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
 

Último

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 

Último (20)

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 

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

Notas do Editor

  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