Skip to content

A simple JavaScript shopping cart that easily integrates with your current website.

Notifications You must be signed in to change notification settings

sventech/simplecart-js

 
 

Repository files navigation

#simpleCart(js)

No databases, no programming, no headaches. A simple JavaScript shopping cart that you can set up in minutes. It's lightweight, fast, simple to use, and completely customizable. All you need to know is basic HTML.

Copyright (c) 2015 Sven Pedersen

Copyright (c) 2012 Brett Wejrowski

Dual licensed under the MIT or GPL licenses.

##This is version 3

If you would like to use an older version, you can use a different branch or see them in the downloads area

v3.0.7 changelog

  • updated browser tests

  • Only jQuery selectors seem to work completely; mootools and

  • added region and country match support for tax calculation includes the following new configuration options for the store and customer, respectively:

    taxContry: 'US', taxRegion: 'North Carolina', currentRegion: 'South Carolina', currentCountry: 'US', And the following functions to control the customer's location for tax purposes:

    simpleCart.setRegion('Alberta'); simpleCart.setCountry('CA');

v3.0.6 changelog

v3.0.5 changelog

  • moved beforeCheckout event and form sending inside of .checkout() to keep DRY
  • added price, shipping, tax formatting for PayPal checkout
  • added .submit method to ELEMENT
  • fixed mootools .get and .live bugs

Quick Start

To get started, just add the simpleCart javascript file to your page, and set your PayPal checkout:

<script src="simpleCart.js"></script>
<script>
	simpleCart({
		checkout: {
			type: "PayPal" ,
			email: "[email protected]"
		}
	});
</script>

If you want to change options, like the tax or currency, you can do that as well:

simpleCart({
	checkout: {
		type: "PayPal" ,
		email: "[email protected]"
	},
	tax: 		0.075,
	currency: 	"EUR"
});

To sell items, you add them to your "Shelf" by simply adding a few classes to your html:

<div class="simpleCart_shelfItem">
    <h2 class="item_name"> Awesome T-shirt </h2>
    <input type="text" value="1" class="item_Quantity">
    <span class="item_price">$35.99</span>
	<a class="item_add" href="javascript:;"> Add to Cart </a>
</div>

You can use almost any type of html tag, and set any values for the item you want by adding a class of "item_[attrname]". Here is a more complex item with options and images:

<div class="simpleCart_shelfItem">
    <img src="/images/item_thumb.jpg" class="item_thumb" />
    <h2 class="item_name"> Awesome T-shirt </h2>
 	<select class="item_size">
        <option value="Small"> Small </option>
        <option value="Medium"> Medium </option>
        <option value="Large"> Large </option>
    </select>
    <input type="text" value="1" class="item_Quantity">
    <span class="item_price">$35.99</span>
	<a class="item_add" href="javascript:;"> Add to Cart </a>
</div>

Please check out our documentation to see all of the options simpleCart has available!

Version 3 Documentation

A work in progress..... I'm putting it here until we have the new site up so I can put it...well.. there.

##simpleCart(js) Setup/Initialization

simpleCart(js) requires using jQuery, Prototype, or Mootools. No extra configuration is needed as long as one of those libraries is included on the page

You can set/change simpleCart options at any time:

simpleCart({
	option1: "value" ,
	option2: "value2"
});

Here are the possible options and their default values:

simpleCart({

	// array representing the format and columns of the cart, see
	// the cart columns documentation
	cartColumns: [
		{ attr: "name" , label: "Name" },
		{ attr: "price" , label: "Price", view: 'currency' },
		{ view: "decrement" , label: false },
		{ attr: "quantity" , label: "Qty" },
		{ view: "increment" , label: false },
		{ attr: "total" , label: "SubTotal", view: 'currency' },
		{ view: "remove" , text: "Remove" , label: false }
	],

	// "div" or "table" - builds the cart as a table or collection of divs
	cartStyle: "div",

	// how simpleCart should checkout, see the checkout reference for more info
	checkout: {
		type: "PayPal" ,
		email: "[email protected]"
	},

	// set the currency, see the currency reference for more info
	currency: "USD",

	// collection of arbitrary data you may want to store with the cart,
	// such as customer info
	data: {},

	// set the cart langauge (may be used for checkout)
	language: "english-us",

	// array of item fields that will not be sent to checkout
	excludeFromCheckout: [],

	// custom function to add shipping cost
	shippingCustom: null,

	// flat rate shipping option
	shippingFlatRate: 0,

	// added shipping based on this value multiplied by the cart quantity
	shippingQuantityRate: 0,

	// added shipping based on this value multiplied by the cart subtotal
	shippingTotalRate: 0,

	// tax rate applied to cart subtotal
	taxRate: 0,

	// true if tax should be applied to shipping
	taxShipping: false,

	// event callbacks
	beforeAdd				: null,
	afterAdd				: null,
	load					: null,
	beforeSave				: null,
	afterSave				: null,
	update					: null,
	ready					: null,
	checkoutSuccess				: null,
	checkoutFail				: null,
	beforeCheckout				: null
});

##The Shelf

You can make items be available to your users by simple using class names in your html. For any Item you want to be available to be added to the cart, you make a container with a class name of simpleCart_shelfItem. Then add classes to tags inside of that container that have the general form item_[name of field] and simpleCart will use the value or innerHTML of that tag for the cart. For example, if you wanted to sell a T-shirt with 3 different sizes, you can do this:

<div class="simpleCart_shelfItem">
	<h2 class="item_name"> Awesome T-shirt </h2>
	<select class="item_size">
    	<option value="Small"> Small </option>
    	<option value="Medium"> Medium </option>
    	<option value="Large"> Large </option>
	</select>
	<input type="text" value="1" class="item_Quantity">
	<span class="item_price">$35.99</span>
	<a class="item_add" href="javascript:;"> Add to Cart </a>
</div>

Notice here that you can use a select to change options for the item when you add it to the cart. You can also use a text input to change the quantity (or any other field!). These classes will work with any tag, so feel free to use what works best for you. Finally, notice that a tag with the class item_add will have an event listener on its click. So when the contents of that tag are clicked, an item will be added to the cart with the values of each of the tags in the container with the item_something class.

####Some notes: *You will want to always supply a quantity and price. Although the cart won't break if you don't, all the quantities and totals are created from it, so the cart will assign a price of $0 if there is none, and a quantity of 1 if no quantity is provided. *If you are planning on checking out to googleCheckout or paypal, it is a good idea to use a name field *If you use a link for the add to cart button, its a good idea to set the href to "javascript:;"

##Cart Columns

The Cart Columns allow the user to specify how the cart will be formatted and displayed. There is a lot of flexibility here, take a look at the default setup:

simpleCart({
	cartColumns: [
		{ attr: "name" , label: "Name" } ,
		{ attr: "price" , label: "Price", view: 'currency' } ,
		{ view: "decrement" , label: false , text: "-" } ,
		{ attr: "quantity" , label: "Qty" } ,
		{ view: "increment" , label: false , text: "+" } ,
		{ attr: "total" , label: "SubTotal", view: 'currency' } ,
		{ view: "remove" , text: "Remove" , label: false }
	]
});

Each column is represented by an object, the most basic setup simple specifies which attribute to display and how to label the column:

{ attr: "name" , label: "Name" }

There are also some built in 'views' that will create a special column. For example, an 'increment' view:

{ view: "increment" , label: false , text: "+" }

will have a link that increments the quantity. Setting the label:false will hide the label for the view. You can specify the text of the link with that text: attribute.

You can add view: "currency" to format the column as currency (see the currency section on more information on currency formatting).

For more information, please go to simplecartjs.com

About

A simple JavaScript shopping cart that easily integrates with your current website.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 79.1%
  • CoffeeScript 15.8%
  • HTML 3.7%
  • CSS 1.4%