SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
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
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
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
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
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
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 

Kürzlich hochgeladen (20)

Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
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
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
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
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 

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

Hinweis der Redaktion

  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