Safe

Save For Later

Save For Later is a Zen Cart™ contribution which allows customers to remove items from their cart temporarily but still keep those items in view for later purchase. It is modelled after Amazon.com, which also features "save for later" buttons on the shopping cart page.

Donate! Show your appreciation by supporting my efforts.

Relevance: Zen Cart™ 1.3.8

Cost: Free, but donation appreciated

Installation: click here

Installation Difficulty: Low-Moderate

See it Live: Go to my test cart and add a product to your cart. You will see the Save For Later button on the Shopping Cart page. To test this feature, you will need to create an account.

Location: Zen Cart Downloads page, under Marketing Tools.

Download: Save For Later on the Zen Cart Downloads Page

Current Version: 1.1

Support Thread: Save For Later Support Thread

FAQ: click here

Overview:

This contribution provides a mechanism to allow customers to "save for later" items they don't wish to purchase immediately.

Here's what it looks like when Amazon does it.

Amazon.com Shopping Cart Page displaying Save For Later

Amazon Shopping Cart Page showing Save For Later


To save space, I used up and down arrows. These can be replaced if you prefer buttons with text on them.

When an item is added to the cart, the down arrow allows the customer to save the item for later.

Shopping Cart Page displaying Save For Later

Shopping Cart Page showing Save For Later


When the Save For Later button is pressed, the item appears below the cart contents. It can be moved back into the cart by pressing the Move To Cart button.

Shopping Cart Page with Save For Later items

Shopping Cart Page with Save For Later items

Here is a cart with both current contents and Save For Later items.

Shopping Cart Page showing both contents and Save for Later items

I recommend specific settings for Admin->Configuration->Stock, but you can use whichever ones you prefer. You can see here what it looks like with different settings. Shopping Cart Page with different settings



Installation Instructions:

This mod assumes your template name is "custom." If you have used another template name, use that name when installing this mod instead of custom.
  1. Back up everything! Try this in a test environment prior to installing it on a live shop.
  2. Unzip the file you have received.
  3. Copy the contents of the unzipped folder to the root directory of your shop.
  4. Run the sql script mysql_sfl.sql against your database. You can do this in phpMyAdmin or you can use your Zen Cart admin panel under Tools->Install SQL patches.

    If you are using phpMyAdmin and have used a prefix in your database, modify mysql_sfl.sql to reflect this (i.e. change "customers_basket_later" to "zen_customers_basket_later" if your prefix is "zen_", and make the same change for "customers_basket_later_attributes").
  5. Donate! Show your appreciation by supporting my efforts.
Recommended but Optional Tweaks:
  1. I recommend setting Admin->Configuration->Stock->Show Shopping Cart - Delete Checkboxes or Delete Button to the value of 1 (Delete button only). It's one less thing to crowd the screen, and it's the way Amazon does it. Similarly, the value Show Shopping Cart - Update Cart Button Location should be set to 2 for the same reason.
  2. By default the header displays the shopping cart link only if products are in the cart. You can change this by editing includes/templates//common/tpl_header.php and changing:
        <?php if ($_SESSION['cart']->count_contents() != 0) { ?>
        <li><a href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>">
        <?php echo HEADER_TITLE_CART_CONTENTS; ?></a></li>
    
    to
        <li><a href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>">
        <?php echo HEADER_TITLE_CART_CONTENTS; ?></a></li>
        <?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    
  3. You can add descriptive text about Save For Later to the shopping cart help screen by copying the file
    includes/languages/english/info_shopping_cart.php 
    
    into
    includes/languages/english/<your template>/info_shopping_cart.php 
    
    Modify SUB_HEADING_TEXT_2 to describe Save For Later. Or, if you prefer, update the string TEXT_INFORMATION in
    includes/languages/english/<your template>/shopping_cart.php
    

Installation Issues:

  1. If you're having trouble installing this mod, it's likely that your merge of the shopping cart template page has failed. Install the one from this contribution, test, and then merge your changes in (instead of vice versa).

How Save For Later Works

  1. When "Save for Later" is pressed, the item, along with its attributes and quantity, are moved to the Save For Later area. If an identical item exists already in the Save For Later area, the quantity of that item is increased. The item is then removed from the cart.
  2. Quantities are stored but not displayed in the Save For Later area.
  3. When "Move To Cart" is pressed, the item, along with its attributes and quantity, are moved to the cart. If an identical item exists already in the cart, the quantity of that item is increased accordingly. The item is then removed from the Save For Later area.
  4. In the case of items with attributes, the word "identical" means "with identical attribute settings."
  5. All attributes, including File and Text attributes, are preserved during Save For Later and Move To Cart operations.
  6. If there is a max constraint on the item, it is respected during the Move to Cart process.
  7. You must be logged in to use Save For Later.
  8. Price changes are reflected in Save For Later items immediately.
  9. The checkout and shipping estimator buttons are not shown if you have no products in your cart.

Like Save For Later?

I have lots of other cool software to soup up your shopping cart page and the rest of your Zen Cart. Please consider supporting my work by buying software or making a donation.

FAQ

Q: I would like to replace the up and down arrows with buttons that have text on them. How do I do it?
A: First, place the two new button images into the directory
includes/templates/<your template>/buttons/english/
Then, assuming the filenames have changed, edit the file
includes/languages/english/extra_definitions/sfl_defines.php
and change the definitions BUTTON_IMAGE_SAVE_FOR_LATER and BUTTON_IMAGE_MOVE_TO_CART.

For your convenience, here are a couple of sets of buttons I created with the Zencart Button Generator.

10 point font
8 point font


Q: The styling of my shopping cart page looks different in the table heading above the Save for Later icon. Why?
A: You have styled the scQuantityHeading id. Copy this styling to the scSFLHeading id. To apply these same stylings to the Saved Items table, style the ids sfl_scMoveToCart, sfl_scProductsHeading, sfl_scUnitHeading, sfl_scRemoveHeading and sfl_scUpdateQuantity.

Q: The cart contents table looks squeezed. How can I make it wider?
A: Assuming you have sideboxes on the right, the best way is to turn off your right sideboxes on the shopping cart page. This will give you 150px (default) more room, and will reduce distractions on this critical page. It's an easy change: copy the file
includes/templates/template_default/common/tpl_main_page.php
to
includes/templates/<your template>/common/tpl_main_page.php
In your template copy of tpl_main_page.php, search for the line
  if (!isset($flag_disable_right) || !$flag_disable_right) { 
Immediately above it, add the code
  if ($body_id == "shoppingcart") {
     $flag_disable_right = true;
  }
This will create a much wider space for both your cart contents and the items which have been saved for later.

So now instead of a narrow cart like this:

Regular Shopping Cart Page with 150px right sidebox

you will have a wide cart like this

Shopping Cart Page with my fix
If you don't have sideboxes on the right, it can be done entirely using the admin panel; go to Admin->Configuration->Layout Settings, and set "Column Width - Right Boxes" and "Column Width - Right" to 0px.

Q: How can I find how many people are using Save For Later?
A: Run the following query against your database in phpMyAdmin:
SELECT count(DISTINCT customers_id), count(distinct products_id) from customers_basket_later;



Want more Zen Cart?     Tips and Tricks     Contributions     Extensions     Custom Software     Newsletter

Terms | Privacy | SiteMap | Newsletter | Contact Me | Contents © 2003-2010 That Software Guy, Inc.
Zen Cart Project Home Page | Zen Cart Forum | Zen Cart™ is © Zen Ventures, LLC.