skip to content
AdaWiki
User Tools
Log In
Site Tools
Search
Tools
Show page
Old revisions
Backlinks
Recent Changes
Media Manager
Sitemap
Log In
>
Recent Changes
Media Manager
Sitemap
You are here:
start
»
tutorials
»
zencartmods
»
back_in_stock_notifications.html
Trace:
tutorials:zencartmods:back_in_stock_notifications.html
==== back in stock notifications ==== We use the [[http://www.zen-cart.com/index.php?main_page=product_contrib_info&products_id=1108|Back in stock notifications]] plugin for zencart. The plugin itself works out of the box, and the installation instructions are easy enough to follow, but there are a few modifications to be made that we think makes it better. ==== Simple Captcha ==== We used [[http://www.phpcaptcha.org/|Securimage]], which also works quite well as advertised. Install Securimage somewhere on your webserver, and make these modifications to the Back in stock notifications plugin. In **includes/modules/pages/back_in_stock_notification_subscribe/header.php** Line 56 Add <code php> include("PATH_TO_YOUR_SECURIMAGE_PHP"); $securimg = new Securimage(); $valid = $securimg->check($_POST['captcha_text']); </code> (Obviously, you ned to replace PATH_TO_YOUR_SECURIMAGE_PHP with your own path) Then find Line 74 <code php> else if (strtolower($_POST['email']) != strtolower($_POST['cofnospam'])) { $form_errors['cofnospam'] = BACK_IN_STOCK_NOTIFICATION_FORM_ERROR_EMAIL_CONFIRMATION_DOESNT_MATCH; } </code> and replace with <code php> else if (strtolower($_POST['email']) != strtolower($_POST['cofnospam'])) { $form_errors['cofnospam'] = BACK_IN_STOCK_NOTIFICATION_FORM_ERROR_EMAIL_CONFIRMATION_DOESNT_MATCH; } else if (!isset($_POST['captcha_text']) || $valid == false) { $form_errors['captcha'] = BACK_IN_STOCK_NOTIFICATION_FORM_ERROR_CAPTCHA; } </code> in **includes/languages/english/backin_stock_notification_subscribe.php** add <code php> define('BACK_IN_STOCK_NOTIFICATION_FORM_ERROR_CAPTCHA', 'Please verify the text on the right!'); </code> in **includes/templates/YOUR_TEMPLATE/templates/inc.html.back_in_stock_notifications.html** Add wherever you want the captcha to show up (we choose L36&L113 right afer the submit button) <code html> <img style="float: right;" src="securimage_show.php" /> <ceon:if isset="captcha_error"><p class="alert"><ceon:variable name="captcha_error">Please verify the text on the right!</ceon:variable></p></ceon:if> <label class="inputLabel" for="captcha_label"><ceon:variable name="captcha_label">Verify text</ceon:variable>:</label> <input type="text" size="35" maxlength="96" name="captcha_text" /> </code> ==== Individual produts ==== By default, the **sendBackInStockNotifications()** functions sends notifications to everyone who has subscribed to any item that is back in stock. In order to make it so you can send notifications to people who are subscribed only to certain item, in **admin/includes/functions/back_in_stock_notifications_functions.php** line 32 replace <code php> function sendBackInStockNotifications($test_mode = false) </code> wiwth <code php> function sendBackInStockNotifications($test_mode = false, $products_id = 0) </code> and replace <code php> $email_addresses_query_raw = " SELECT bisns.email_address, bisns.name, c.customers_email_address, c.customers_firstname, c.customers_lastname FROM " . TABLE_BACK_IN_STOCK_NOTIFICATION_SUBSCRIPTIONS . " bisns LEFT JOIN " . TABLE_PRODUCTS . " p ON p.products_id = bisns.product_id LEFT JOIN " . TABLE_CUSTOMERS . " c ON c.customers_id = bisns.customer_id WHERE p.products_quantity > 0 GROUP BY email_address, customers_email_address ORDER BY email_address, customers_email_address"; </code> with <code php> if( $products_id == 0) { $email_addresses_query_raw = " SELECT bisns.email_address, bisns.name, c.customers_email_address, c.customers_firstname, c.customers_lastname FROM " . TABLE_BACK_IN_STOCK_NOTIFICATION_SUBSCRIPTIONS . " bisns LEFT JOIN " . TABLE_PRODUCTS . " p ON p.products_id = bisns.product_id LEFT JOIN " . TABLE_CUSTOMERS . " c ON c.customers_id = bisns.customer_id WHERE p.products_quantity > 0 GROUP BY email_address, customers_email_address ORDER BY email_address, customers_email_address"; } else { $email_addresses_query_raw = " SELECT bisns.email_address, bisns.name, c.customers_email_address, c.customers_firstname, c.customers_lastname FROM " . TABLE_BACK_IN_STOCK_NOTIFICATION_SUBSCRIPTIONS . " bisns LEFT JOIN " . TABLE_PRODUCTS . " p ON p.products_id = bisns.product_id LEFT JOIN " . TABLE_CUSTOMERS . " c ON c.customers_id = bisns.customer_id WHERE p.products_quantity > 0 AND p.products_id = " . (int)$products_id . " GROUP BY email_address, customers_email_address ORDER BY email_address, customers_email_address"; } </code> You can now make an admin page that will send notifications only to people subscribed to a certain product by calling **sendBackInStockNotifications(false, YOUR_PID)**.
/home/ladyada/public_html/wiki/data/attic/tutorials/zencartmods/back_in_stock_notifications.html.1311261813.txt.gz
· Last modified: 2016/01/28 18:05 (external edit)
Page Tools
Show page
Old revisions
Backlinks
Back to top