Timing Your Discounts in osCommerce Mods
This page describes methods to create begin and/or end dates for discounts when using the following osCommerce 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);
}
eCommerce with Zen Cart!