Timing Your Discounts in osCommerce Mods
This page describes methods to create begin and/or end dates for
discounts when
using the following Zen Cart mods:
Background
All four of these modules have a setup() function at the bottom of
their implementation files, and the discounts are coded in these
files. Since Better Together has the most familiar and concise
syntax, I will use it first in of the examples below,
and alternate example using other modules.
Date Specification
We will use a sortable format (Y-m-d) to specify dates for clarity.
In PHP, to create a variable which represents the current day, you
would code
$today = strtotime(date('Y-m-d'));
Other dates will be constructed in a similar way. For instance, if
we have a sale which ends on April 1, 2008, we will say
$end_date = strtotime(date('2008-04-01'));
Begin Dates
If we want to start a sale on April 1st, 2008, in Better Together,
we can use
$today = strtotime(date('Y-m-d'));
$start_date = strtotime(date('2008-04-01'));
if ($today >= $start_date) {
// Buy any item from category 10, get a second identical one free
$this->add_twoforone_cat(10);
}
Big Spender would be similar, but of course the entire
discount must be specified within the brackets:
$today = strtotime(date('Y-m-d'));
$start_date = strtotime(date('2008-04-01'));
if ($today >= $start_date) {
$this->add_threshold(20, 'Spend over $20 on Acme products, get a free gift', false);
$this->set_support('Free gift choices are from category 439');
$this->set_constraint(CAT, 264);
$this->set_choice_discount(1, CAT,439,"%",100);
}
End Dates
If we want to end a sale on March 31st, 2008, in Better Together,
we can use
$today = strtotime(date('Y-m-d'));
$end_date = strtotime(date('2008-03-31'));
if ($today <= $end_date) {
// Buy any item from category 10, get a second identical one free
$this->add_twoforone_cat(10);
}
Big Chooser would be similar, but of course the entire
discount must be specified within the brackets:
$today = strtotime(date('Y-m-d'));
$end_date = strtotime(date('2008-03-31'));
if ($today <= $end_date) {
$this->add_condition('Buy any 2 items, get the 3rd free', true);
$this->set_constraint(MINPRICE, 0.01, 2);
$this->set_discount(MINPRICE, 0.01, 1, "%", 100);
}
Begin and End Dates
If we want to start a sale on March 1st, 2008 and
end it on March 31st, 2008, in Better Together,
we can use
$today = strtotime(date('Y-m-d'));
$start_date = strtotime(date('2008-03-01'));
$end_date = strtotime(date('2008-03-31'));
if ($today >= $start_date && $today <= $end_date) {
// Buy any item from category 10, get a second identical one free
$this->add_twoforone_cat(10);
}
Combination Discounts would be similar:
$today = strtotime(date('Y-m-d'));
$start_date = strtotime(date('2008-03-01'));
$end_date = strtotime(date('2008-03-31'));
if ($today >= $start_date && $today <= $end_date) {
// Buy 2 product 83, get one free
$this->add_linkage(PROD,83,2,PROD,83,1,"%", 100);
}
Days of the Week
Here's how to run a Better Together sale on Tuesdays:
$today = date('D');
if ($today == 'Tues') {
// Buy any item from category 10, get a second identical one free
$this->add_twoforone_cat(10);
}
| Certificates of appreciation most welcome! |
|
|
If the information you learned reading this site is helping your store make
more money, please consider making a donation. Thank you!
|