There’s a new release of Zen Cart – but why should you upgrade? I’ll review some of the key reasons in this post.
- Compatibility with PHP 7.2 and 7.3: PHP is constantly changing, and as new versions are introduced, older ones fall by the wayside. This means they no longer receive bug fixes or even security patches for issues which are discovered by researchers and hackers. If you look at the PHP supported versions page, you’ll see that versions prior to PHP7 won’t even receive security patches after January 2019. To stay secure, you must update your PHP, which means you must update your Zen Cart software.
- All security patches released in Zen Cart 1.5.5 and before included: if your Zen Cart hasn’t been actively maintained, you may have missed the PHPMailer security patch, the Trustwave patch, or any of the other Zen Cart security patches which has been released in the last few years. Upgrading to Zen Cart 1.5.6 gets you all those patches without any extra work.
- All prior bugfixes from ZenCart 1.5.5 and below are included: how many times have you struggled with an issue, only to find that it has been resolved in a newer release? Upgrading means you’re using the latest fixes.
- Improved admin appearance: the Zen Cart 1.5.6 admin is much easier on the eyes than the older versions. Works great on mobile too!
Google Customer Reviews basically takes over from Trusted Stores (which was sunsetted). You need to have a Google Merchant Center account to use it, and the threshold for having your reviews show up is pretty high (150 reviews), but I think it could be useful for some web shops.
One change I needed to make because my store is downloads-only: the file
checks the delivery_country field in the orders object. I changed this to check the billing_country.
If you get prompted to take this Google survey after making a purchase from my store, I would appreciate you filling it out! Thank you.
When I created Buy Both Now and Buy The Set for Zen Cart, I never took account of the possibility that templates would use the CSS buttons feature, which is available in Admin->Configuration->Layout Settings.
I have updated the help for these mods to show how they can be adopted to use CSS buttons too. It’s easy – for Buy Both Now, just modify
$bbn_string_end = '<input type="image" src="' . $button . '" alt="Buy both now" title="Buy both now" /></form>';
$bbn_string_end = " " . zen_image_submit($image, "Buy Both Now") . "</form>";
and similarly, for Buy the Set, just modify
$bts_string_end = '<input type="image" src="' . $button . '" alt="Buy the set" title="Buy the set" /></form>';
$bts_string_end = " " . zen_image_submit($image, "Buy the set") . "</form>";
I just created a new WordPress plugin called Zen Cart Product Display. Giving it a try right now with OpenCart Discount Chooser:
Discount Chooser simplifies the process of creating discounts based on items in the cart. You can create buy one, get one at a discount, buy two get one at a discount, or buy get a choice of at a discount. Item specification may be done by category or by product.
Back in 2013 I extended the one-to-one linkage concept in Zen Cart Better Together with the One-to-Many feature. This addition of three new radio buttons in the Zen Cart admin panel effectively tripled the number of permutations of computed discounts. What could go wrong?
Well, as it turned out, a number of things! Freed from the classic one-to-one constraint, the configuration
would discount a *single* product 3, because it miscounted the number of items in the cart. You can see this error in the screenshot above.
This bug is fixed in Better Together 2.5.3 for Zen Cart, which is available in the Plugins area.
If you are willing to send multiple newsletters every month (I think the minimum cadence should be monthly), and you want to do some market segmentation, you may want to try this technique. It assumes you have already installed my Mailchimp Integration for Zen Cart.
- Login to Mailchimp and click the Lists menu at the top. Then on the right, click the Stats dropdown and select Signup forms.
- Click the Select button on Embedded Forms.
- Under Manage Contacts, click Groups.
- Click the Create Groups button, and add Checkboxes and Radio buttons as need be. You can add many Groups, so don’t be afraid to partition your questions.
- Click Signup Forms and Embedded Forms again. The code for the form shown in the preview is right below the preview window. Copy this code and paste it into a new page (or sidebox) on your site.
You can read more about creating groups on the Mailchimp Getting Started with Groups page.
So after a while you’ll (hopefully!) have some newsletter signups, with people identifying as being part of one group or another. How do you utilize this data?
- Select Campaigns, name the campaign and make it a regular campaign.
- You will be prompted to select Recipients. Select Group or New Segment.
- Use the query-by-example form to select the target group for your campaign.
You can read more about this on the Mailchimp Sending to Groups page.
As a convincer, see the email signup form we are using on keylessentrylocks.com:
There was a bug in the subscriber check in the discount logic which has just been fixed; please update to version 4.0b, which is available in the Zen Cart downloads area. Links and documentation are on the Zen Cart Newsletter Discount Help page.
I told you a while ago about my experience building a static site with Hugo. I was updating the page to show a few changes (notably to my book group website, but also to update the year in the footer). I stumbled upon a small bug in Hugo’s date reporting, but the real issue that caused me to waste a ton of time was that in my aggravation, I wound up deleting the
public folder to ensure a clean start. But in a Github Pages based site, the
public folder should really be a separate Github repo pointing to your target site!
So now I do a quick check in my deployment script to make sure I haven’t accidentally done this again. Be sure you do something similar!
Note: If you are using Jekyll instead of Hugo, the same advice applies, but you’ll want to check
_site instead of