My Zen Cart modules are up to date for 1.5.4

The following mods of mine have been updated for Zen Cart 1.5.4:

In addition, the following mods were updated for 1.5.3 (no extra changes needed for 1.5.4) – they were missed when I did the big 1.5.3 update in July of last year.

MailChimp Zen Cart sidebox issue

If you are using my MailChimp Sidebox plugin for Zen Cart, and you installed it a while back, please take a look at something: the form created by the sidebox should say

<form action=”//something-something.list-manage.com…

NOT

<form action=”http://something-something.list-manage.com…

The latter can cause the lock icon to be slashed out, so an SSL page will appear to not be encrypted.

If the MailChimp sidebox is shown on your login page, you can easily test this by going to the login page and checking the lock icon for your site (assuming you have an SSL certificate).

Showing off your Zen Cart Newsletter Discount in the MailChimp Sidebox

If you are using Newsletter Discount, and you want to show off the discount in the sidebox, add this block to

includes/templates/template_default/sideboxes/tpl_mailchimp_sidebox.php

right after the “</form>:

  if (MODULE_ORDER_TOTAL_NEWSLETTER_DISCOUNT_AMOUNT > 0) {
    $content .= "Newsletter subscribers enjoy a " . MODULE_ORDER_TOTAL_NEWSLETTER_DISCOUNT_AMOUNT ."% discount!";
  }

Your sidebox will now look like this:
MailChimp signup with newslettere discount
Since Discount Preview does not support Newsletter Discount, this is a good compromise.

Zen Cart Optional Payment Method

Getting payments by Paypal is incredibly convenient for me – it means I can roll up dozens of small transactions into a single checkbook update showing the transfer from Paypal.  But some people don’t like Paypal, for a variety of reasons.  So I want to have a payment mechanism that will work for them.

Well, as I said in Monday’s blog post, I have a LOT of payment methods, but for the folks who just want to use a credit card, I use BrainTree.  Here’s the BrainTree Zen Cart integration, which works well except for one small bug in version 4 that I documented a fix for in this Zen Cart forum post.

But I don’t show two credit card payment methods at checkout, and I want to encourage people to use Paypal.  So what I did was create the Optional Payment Method module for Zen Cart, which allows you to enable only specific customers to see the optional payment module, and hide it from the rest.

Hopefully this contribution will help other folks too.

New Payment Methods for That Software Guy!

Most people pay me by Paypal, either directly or via my store.
But some people don’t like Paypal – for a variety of reasons. For a while, the payment alternative I offered was Google Checkout, but Google killed that product off. So now I offer three non-Paypal options for people to make payments or donations:

I also offer, for select customers, credit card processing via BrainTree.  More on this topic tomorrow!

Challenge for Zen Cart store owners: are you making it as easy as possible for your customers to pay you?

Finding Zen Cart products with no default attribute set

A client called me and told me that someone had added a $0 product to their order!  When I looked at the product, I noticed that it was priced by attributes, but didn’t have a default setting for the attribute which priced it.  So the attributes, which were radio buttons, looked like this:

no_set

See how none of the radio buttons are selected?

Now this is easy enough to fix – go to Zen Admin, to Catalog->Attributes Controller, select the product, and then edit the attribute that you want to be the default, and set the  Default Attribute
to be Marked Selected:
radio button at the bottom of the page in the Attribute Flags.  But how do we determine how many products have this problem?

There’s a SQL query you can use in PHPMyAdmin to figure this out:

SELECT p.products_id FROM `zen_products_attributes` p where 1=1 and NOT EXISTS (SELECT products_id from zen_products_attributes p2 where p2.products_id = p.products_id and p2.attributes_default = 1) group by products_id;