Silverstripe Ecommerce


Published on

Short overview of the silverstripe e-commerce developments (silverstripe module) up to 1 Oct 2012.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Silverstripe Ecommerce

  1. 1. Silverstripe & E-commerce
  2. 2. History● Originally started by Silverstripe Ltd at least five years ago – abandoned due to lack of community buy-in ● Payment module continued to be developed by Silvertripe (and now part of GSOC)● Since then, developed by Nicolaas and Jeremy, Jeremy later starting his own module: shop● Silvercart and SwipeStripe are more recent e- commerce modules.
  3. 3. Today● Four über-developed modules, including demo sites, installers, tests, in-depth documentation ● Do you see this level of development in any of the other modules ?● Lots of developers (and their clients) are keen to be develop e-commerce applications ● Are they confused by the options? ● Do they use Magento or other applications rather than Silverstripe ones?
  4. 4. Modules out there● Silvertripe Shop: ● Jeremy, NZ● SwipeStripe: ● Frank, NZ● Silvercart: ● Roland, Germany● Silverstripe E-commerce ● Nicolaas, New Zealand
  5. 5. Silverstripe Shop● Author: Jeremy Shipman● Excellent documentation● Best practice release process● Quality tests through TravisCI● Code simplicity as well as strong usage of Silverstripe core code base and Best Practice●
  6. 6. SwipeStripe● Author: Frank Mullenger● Lots of tests● Innovative CMS features● Xero integration● Virtual products● Small licensing fee● 3.0 ready!●
  7. 7. SilverCart● Author: Roland Lehmann et al.● Probably most polished documentation and out-of- the-box solution● Does not use the original e-commerce as code base● Master-Slave product relationships ● product variations can be grouped while the variations can be independently maintained● PDF invoices● Most usage of third-party tools (e.g. DataObjectManager, the YAML CSS framework) and most intrusive (e.g. Page extends SilvercartPage)●
  8. 8. select an e-commerce module● What features do I need?● What is the smallest code base to achieve this ● The bigger the code base, the more to develop / test / maintain● Documentation● Tests● DYI vs Pre-Baked● Can I get help? How much will it cost?
  9. 9. E-commerce is Zpeshial
  10. 10. E-commerce is zpeshial 1● My experience: all parties underestimate the work involved ● Site owner: ● entering / importing products: Images, pricing, descriptions, product grouping, variations ● Policies and business processes: delivery costs, tax, cancellations, customer communication ● Designer: the amount of screens to design ● You can save a lot of time by standardising forms, etc... but many web designers are not very good at this. ● Front-end developer: interaction required ● Ajax stuff, difficult forms, products and product category pages work with few or many – definitely diverse - products
  11. 11. E-commerce is zpeshial 2● Back-end developer: ● this is more an application than a website ● Keep a record of transactions (e.g. address of the member at time of order – not just today) ● Many tricky relationships and coding challenges ● Discounts, delivery, tax, etc... etc... ● You have to be precise otherwise end customers get upset (websites can be more loosely coded)
  12. 12. Silverstripe E-commerce Module
  13. 13. Silverstripe E-commerce● Based on the original e-commerce● Developers include: Sean, Romain, Jeremy, Nicolaas and many others!● Original idea: very flexible data structure● Currently being developed mainly by Nicolaas● Uses Payment Module
  14. 14. Data Structure● Config ● Sales EcommerceDBConfig Order ● ● ● YAML file replaces traditional static variables ● Order has many OrderAttributes (abstract● Product Pages / Objects class) ● Product Category ● Item (ProductGroupPage) ● Modifier ● Can show all sorts of combination of products ● Order has one Billing + ● Product Page Shipping Address ● Product Variation (many for one ● Linked to Country + Region Product) ● Customer (Member extension) ● Other buyables ● Create as needed, any ● Process DataObject can be turned into a buyable ● OrderStep● Other Pages ● OrderStatusLog ● CartPage + CheckoutPage + OrderConfirmationPage ● OrderEmailRecord ● AccountPage
  15. 15. Product (buyable) Features● Product Categories CMS customisation ● products to show, filter, sorting● Full Site Tree Sorting ● retain product sorting outside of traditional structure● Best Available Image ● inherit image from parent (be it Product, ProductGroup or Default Image)● Optional weight, model (SKU), IsFeatured, quantifier (e.g. per month)● Full (hidden) Title for efficient Keyword Searching
  16. 16. Cart / Checkout Features● All cart functions “ajaxified”● Currency conversion● Editable checkout steps (one to many steps) – always ending in a confirm and pay then “print invoice” page.● Ability to add zero to many forms / fields for collecting additional info in checkout● Optional password field ● Customer has option but does not feel like they have to create an account● Remember previous addresses for Member● Shop Admin (separate security group) can create also create full Order from CMS
  17. 17. Post Sale Features● Ability to pay again / later● Customisable Order Steps (Jeremys idea) from “creation” through to “archiving” ● Allows connectivity with third-party applications at “precise” step in order process ● Admin reviews Orders “stuck” at each step ● e.g. 10 orders to mail out, 7 orders to confirm payment● Ability to send updates to customer (e.g. courier code)● Customer can cancel Order (if configured this way)● Nicely formatted emails with logo, shop address, etc...● Restful API
  18. 18. A few add-ons we have built● also recommended - if you buy ● corporate account (approve account, this, also buy ... security groups as customers)● any price product + donations ● discount coupon including round-up donation ● product tags: alternative product grouping● check product availability: place order, but hold to confirm ● product variations with colours● club order: place order for a group ● repeat orders of people ● stock control● combination product: combine ● tax – per country / per product products into a package ● quick add system● complex pricing: pricing based on country or member security group ● delivery costings for NZ + AU based on postal system● delivery based on weight, price, ● reward system country, etc... ● Favourites● electronic download product ● Quick Checkout: fastest way to add lots of products
  19. 19. Features in the pipe-line● 3.0 !● Xero Connectivity● PDF invoices● Many Images for each product● Improved importing● Twitter + Facebook integration● Multi-shop
  20. 20. Development tools● YAML configuration● /dev/ecommerce/● Templates broken up into smaller snippets for mix and match● Migration task takes you from 0.5 to 1.0● Variables for Ajax html classes and Ids
  21. 21. YAML example
  22. 22. /dev/ecommerce
  23. 23. Settings review
  24. 24. Coding challenges in e-commerce● Versioning / rules about ● Keep code flexible enough changing data to work with many requirements ● canCreate, canEdit, canDelete are carefully ● Add lots of “hooks” defined ● Allow class replacement ● Keep version number ● e.g. Order = new relating to sales $MyOrderClassName ● Referential integrity ● Many objects relationship ● can we delete a product? ● BAD: one Order HasMany ● “De-normalisation” Products ● product price changes != ● GOOD: one Order price in old orders for this product HasMany “Buyables” ● Save ClassName + ID (+ Version) ● Challenge: Buyable Form Field
  25. 25. Silverstripe improvements needed● ModelAdmin: better presentation and easier to customise ● Solution: gridfield?● Versioning and staging ● Clearer documentation ● Easier to implement● Forms more flexible● Many of these features are available in 3.0!