Silverstripe Ecommerce
Upcoming SlideShare
Loading in...5

Silverstripe Ecommerce



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

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



Total Views
Views on SlideShare
Embed Views



3 Embeds 923 919 2 2



Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Silverstripe Ecommerce Silverstripe Ecommerce Presentation Transcript

  • Silverstripe & E-commerce
  • 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.
  • 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?
  • Modules out there● Silvertripe Shop: ● Jeremy, NZ● SwipeStripe: ● Frank, NZ● Silvercart: ● Roland, Germany● Silverstripe E-commerce ● Nicolaas, New Zealand
  • 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●
  • SwipeStripe● Author: Frank Mullenger● Lots of tests● Innovative CMS features● Xero integration● Virtual products● Small licensing fee● 3.0 ready!●
  • 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)●
  • 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?
  • E-commerce is Zpeshial
  • 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
  • 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)
  • Silverstripe E-commerce Module
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Features in the pipe-line● 3.0 !● Xero Connectivity● PDF invoices● Many Images for each product● Improved importing● Twitter + Facebook integration● Multi-shop
  • 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
  • YAML example
  • /dev/ecommerce
  • Settings review
  • 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
  • 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!