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. 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. Modules out there
● Silvertripe Shop:
● Jeremy, NZ
● SwipeStripe:
● Frank, NZ
● Silvercart:
● Roland, Germany
● Silverstripe E-commerce
● Nicolaas, New Zealand
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
● http://ss-shop.org/
6. SwipeStripe
● Author: Frank Mullenger
● Lots of tests
● Innovative CMS features
● Xero integration
● Virtual products
● Small licensing fee
● 3.0 ready!
● http://www.swipestripe.com/
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)
● http://www.silvercart.org/
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?
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. 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)
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. 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. 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. 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. Post Sale Features
● Ability to pay again / later
● Customisable Order Steps (Jeremy's 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. 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. Features in the pipe-line
● 3.0 !
● Xero Connectivity
● PDF invoices
● Many Images for each product
● Improved importing
● Twitter + Facebook integration
● Multi-shop
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
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. 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!