{"id":488,"date":"2010-10-23T15:05:20","date_gmt":"2010-10-23T23:05:20","guid":{"rendered":"https:\/\/www.numinix.com\/blog\/?p=488"},"modified":"2014-04-15T09:58:04","modified_gmt":"2014-04-15T17:58:04","slug":"how-to-show-salemaker-sales-on-the-specials-page","status":"publish","type":"post","link":"https:\/\/www.numinix.com\/blog\/how-to-show-salemaker-sales-on-the-specials-page\/","title":{"rendered":"How to Show SaleMaker Sales on the Specials Page"},"content":{"rendered":"<p>When you are a customer browsing a website, you probably do not differentiate a special from a sale.\u00a0 Why would you, they are exactly the same thing right?\u00a0 Not as far as Zen Cart is concerned.\u00a0 The default is that only specials display in their own listing and all sales items display inside the regular product listings and can only be found if the customer goes to these listings.\u00a0 The only way to get all of your discounted products into a single place is to put them on special.\u00a0 So what&#8217;s the problem with this approach?\u00a0 Well, with Zen Cart you can only put one product on special at a time making it a very tedious task if you have more than a few products to discount&#8230;<\/p>\n<p>Alright, so enough with the introductions, I&#8217;m sure you are already convinced that there is a problem with how Zen Cart handles discounted products.\u00a0 Here is how you can show items discounted with the Zen Cart SaleMaker in the Specials product listing.<\/p>\n<p>Step 1 of, well, 1&#8230;:<\/p>\n<p>Open includes\/modules\/pages\/specials\/main_template_vars.php and find:<\/p>\n<pre lang=\"php\" line=\"13\" escaped=\"true\">  $specials_query_raw = \"SELECT p.products_id, p.products_image, pd.products_name,\r\n                          p.master_categories_id\r\n                         FROM (\" . TABLE_PRODUCTS . \" p\r\n                         LEFT JOIN \" . TABLE_SPECIALS . \" s on p.products_id = s.products_id\r\n                         LEFT JOIN \" . TABLE_PRODUCTS_DESCRIPTION . \" pd on p.products_id = pd.products_id )\r\n                         WHERE p.products_id = s.products_id and p.products_id = pd.products_id and p.products_status = '1'\r\n                         AND s.status = 1\r\n                         AND pd.language_id = :languagesID\r\n                         ORDER BY s.specials_date_added DESC\";\r\n\r\n  $specials_query_raw = $db->bindVars($specials_query_raw, ':languagesID', $_SESSION['languages_id'], 'integer');\r\n  $specials_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_SPECIAL_PRODUCTS);<\/pre>\n<p>And replace with:<\/p>\n<pre lang=\"php\" line=\"13\" escaped=\"true\">\/\/ INCLUDE SALE ITEMS IN SPECIALS LISTING\r\n$sale_categories = $db-&gt;Execute(\"SELECT sale_categories_all FROM \" . TABLE_SALEMAKER_SALES . \" WHERE sale_status = 1\");\r\nif ($sale_categories-&gt;RecordCount() &gt; 0) {\r\n  $sale_categories_all = '';\r\n  while(!$sale_categories-&gt;EOF) {\r\n    $sale_categories_all .= substr($sale_categories-&gt;fields['sale_categories_all'], 0, -1); \/\/ remove trailing comma\r\n    $sale_categories-&gt;MoveNext();\r\n  }\r\n  $sale_categories_all = substr($sale_categories_all, 1); \/\/ remove preceeding comma\r\n\u00a0\u00a0$specials_query_raw = \"SELECT DISTINCT(p.products_id), p.products_image, pd.products_name, p.master_categories_id\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      FROM \" . TABLE_PRODUCTS . \" p\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      LEFT JOIN \" . TABLE_SPECIALS . \" s ON (s.products_id = p.products_id)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      LEFT JOIN \" . TABLE_PRODUCTS_DESCRIPTION . \" pd ON (pd.products_id = p.products_id)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      LEFT JOIN \" . TABLE_PRODUCTS_TO_CATEGORIES . \" p2c ON (p2c.products_id = p.products_id)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      WHERE p.products_status = '1'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      AND ( (s.status = 1 AND p.products_id = s.products_id) OR (p2c.categories_id IN ($sale_categories_all)) )\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      AND p.products_id = pd.products_id\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      AND pd.language_id = :languagesID\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      GROUP BY p.products_id\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      ORDER BY p.products_id DESC\";\r\n  $specials_query_raw = $db->bindVars($specials_query_raw, ':languagesID', $_SESSION['languages_id'], 'integer');\r\n  $specials_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_SPECIAL_PRODUCTS, 'p.products_id');\r\n} else {\r\n  \/\/ DEFAULT ZEN CART SPECIALS LISTING\r\n  $specials_query_raw = \"SELECT p.products_id, p.products_image, pd.products_name, p.master_categories_id\r\n                         FROM (\" . TABLE_PRODUCTS . \" p\r\n                         LEFT JOIN \" . TABLE_SPECIALS . \" s on p.products_id = s.products_id\r\n                         LEFT JOIN \" . TABLE_PRODUCTS_DESCRIPTION . \" pd on p.products_id = pd.products_id )\r\n                         WHERE p.products_id = s.products_id and p.products_id = pd.products_id and p.products_status = '1'\r\n                           AND s.status = 1\r\n                           AND pd.language_id = :languagesID\r\n                        ORDER BY s.specials_date_added DESC\";\r\n  $specials_query_raw = $db->bindVars($specials_query_raw, ':languagesID', $_SESSION['languages_id'], 'integer');\r\n  $specials_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_SPECIAL_PRODUCTS);\r\n}<\/pre>\n<p>Save the file and you are done. Pretty simple!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you are a customer browsing a website, you probably do not differentiate a special from a sale.\u00a0 Why would you, they are exactly the same thing right?\u00a0 Not as far as Zen Cart is concerned.\u00a0 The default is that only specials display in their own listing and all sales items display inside the regular&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[210,208,209,8],"class_list":["post-488","post","type-post","status-publish","format-standard","hentry","category-zen-cart-optimization","tag-product-listing","tag-salemaker","tag-specials","tag-zen-cart"],"modified_by":"Jeff Lew","jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/posts\/488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/comments?post=488"}],"version-history":[{"count":0,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/posts\/488\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/media?parent=488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/categories?post=488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/tags?post=488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}