1. Make me a sandwich, Tienda!
Lukas Polak, Dioscouri Design
c
2. Who am I?
"Tell me what you eat, and I will tell you what you are.“ Brillat-Savarin
• Leading developer of Tienda e-commerce in Dioscouri Design
• Participant of J!SOP 2010
• Student at CTU Faculty of Information
Technology in Prague
• Passionate about Joomla for 5 years
3. What am I going to talk about?
“Ladies & gentlemen, please fasten your seatbelts. We are about to start, ” captain said
• Brief description of Tienda & plugins
• 3 simple rules to follow when working with plugins
• “layout” modifications
• Adding new features
• Inserting new steps into
business logic
4. Source codes
• All extensions shown during this presentation will be published
for free afterwards
• http://projects.dioscouri.com/svn/tienda/branches/jab11/
• Installation package of Joomla! 1.5.26 + Tienda which is used
during this session will be provided in JPA format generated by
extension Akeeba Backup v. 3.4.3. (www.akeebabackup.com)
• admin/pass
• All demo extensions are simplified
• Demo #2 uses jQuery library
• Rest demos require MooTools Upgrade plugin
5. Plugin
• Small & witty piece of code
• Change or extend behavior
• Events
• No support for layout overrides
• Can by added
6. Observer vs. mediator pattern
• Observer
• Notify about change in state
• Mediator
• Extend their business logic
7. Tienda
• Basic package
• 18 modules, 29 plugins, 6 payment plugins, 4 shipping plugins
• Joomla! 2.5 ready Languages
• One-page Checkout (OPC) in the basic package
• Number of events 400+ (last JAB) vs. 470+ (today)
• For more information visit
http://dioscouri.com/joomla-extensions/tienda-
ecommerce
8. Lego v2.0
• Ask “what would the customer want to do with our extension”
• Do not over think usage of events
• Think outside of the box
9. Ask “what would the customer want to do
with our extension”
• Do you really need this to be so flexible?
• Consider opportunity cost
• Being too flexible is NOT a good thing
• Always bigger room for bugs
10. Do not over think usage of events
- Cannot we already do this using another approach?
- Do not bend rules too much – causes problems in future
- Will anybody use it?
- Better to wait until somebody asks for it
11. Think outside of the box
• List through names of all events
• Did not find one that rings a bell or seemed helpful
• Plugins are not an ultimate tool for everything
• Combination of plugins & layout overrides
12. Rule #1 - Demo #1 – “Shoes size chart”
“Your customer is your boss”
• Insert a shoes size chart into product view of every shoes in the
shop
• Pick the right place
• Improvements
• Filter Product Layouts
• Filter Categories
• Custom Width
13. Rule #1 - Demo #1 – “Shoes size chart”
“Your customer is your boss”
14. Rule #1 - Demo #2 – “Cool gallery”
“Your customer is your boss”
• Images in product gallery varies based on chosen product
attributes
• Use AJAX
• onPrepareGalleryImages( &$Images )
• Chaining effect
• Use jQuery event handler .on()
• $jq( '.product_buy' ).on( 'change', '#attribute_'+
plgDemo2.attr_id , function() {});
15. Rule #1 - Demo #2 – “Cool gallery”
“Your customer is your boss”
16. Rule #2 - Demo #3 – “Custom” field
• List of flags
• Let user to pick one
• Use hidden input field
• Added to Tienda EAV for this purpose
• onPrepareProducts & onPrepareProductsList
• Make sure that the product will not save data!
• Improvements
• Different set of flags
• Multiple selection
• Make it more customizable
• Tie it up with gallery plugin (demo #2)
18. Rule #3 – Demo #4 – Every n-th order for free
“One rule to rule them all”
• Gives customer discount during checkout
• Based on specified criteria
• Great marketing move
• Code once, works everywhere
• OPC, std checkout, POS
• Improvements
• Only x% discount
• On n-th order in row from the same user
• Shipping discount
19. Rule #3 – Demo #5 – Conduct a survey
“One rule to rule them all”
• Ask user a question before making payment
• Voluntary survey
• Pick a correct place to put the survey
• onBefore(After)DisplaySelectShipping ($order)
• onValidateSelectPayment($values)
• onAfterStoreOrders($order)
• Checkout process may depend on its results
• Check for age of the customer
• Improvements
• Offer a discount – quiz
• Multiple-choice questions
• Time deadline
20. Rule #3 – Demo #5 – Conduct a survey
“One rule to rule them all”
21. Big finale – Demo #6 – One click to buy
“The sooner, the better. It was too late yesterday!”
• Add to cart and complete checkout process in one click
• Uses data from logged user (default billing & shipping addresses)
• Amazon uses this feature
• People tend to spend more money thanks to it
• Making use of checkout controller method
• Ensures better
• Improvements
• Enables admin to control what payment plugins
are used
• Letting user to choose shipping method
22. Big finale – Demo #6 – One click to buy
“The sooner, the better. It was too late yesterday!”
23. THANK YOU FOR YOUR ATTENTION!
Questions?
lpolak@dioscouri.com
Twitter: @_elf