SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Similaire à 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
 

Similaire à 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
 

Dernier

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Dernier (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

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

Notes de l'éditeur

  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