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?

Zen Cart Attribute Required for Text not working?

If you have added a text attribute to a product in  your Zen Cart installation (any version), and clicked the “Attribute Required for Text” = Yes radio button at the bottom of the screen, but noticed that it can be added to the cart without setting the text attribute, this post is for you.

There is a bug in a number of older Zen Cart contributions that leads to configuration group 0 getting deleted.  As it turns out, this is where some critical fields for Attribute Required for Text reside.   You can see if you have this problem by going to

http://YOUR-SITE/your-admin-page/configuration.php?gID=0

You should see three entries.  If you see zero entries, you can add them back using this SQL:

INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, last_modified, date_added, use_function, set_function) VALUES ('Product option type Select', 'PRODUCTS_OPTIONS_TYPE_SELECT', '0', 'The number representing the Select type of product option.', 0, NULL, now(), now(), NULL, NULL);
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, last_modified, date_added, use_function, set_function) VALUES ('Upload prefix', 'UPLOAD_PREFIX', 'upload_', 'Prefix used to differentiate between upload options and other options', 0, NULL, now(), now(), NULL, NULL);
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, last_modified, date_added, use_function, set_function) VALUES ('Text prefix', 'TEXT_PREFIX', 'txt_', 'Prefix used to differentiate between text option values and other option values', 0, NULL, now(), now(), NULL, NULL);

Once this is done, your attribute checking should work.

A list of some of the contributions which had this issue (as well as the background on this issue) is provided in this Zen Cart forum post.

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;

Interesting application for Zen Cart Better Together Admin and Checkbox Cross Sell

A client wanted to use Better Together Admin for Zen Cart to configure cross sells, and wanted to use Checkbox Cross Sell for Zen Cart to display them.  Easy enough – but here’s the twist: he wanted any cross sell to be applied to all products (rather than configuring each product with the same cross sells).

This kind of thing can be done with just a little custom programming.  On my Advanced Discount Configuration for Zen Cart page, I show how to do it (see example 11).

How to Unfollow someone on LinkedIn

If you see a post you enjoy on LinkedIn, you might be tempted to click the Follow button to see  more posts from that person.  But what if they’re *too* chatty?

Unfollowing someone is a bit tricky, but here are the steps I use:

  • Hover over the flag on the upper right, then click their name in one of their posts.
  • Scroll down below the picture on the post and click their name again – this will bring you to their profile page.
  • Scroll to the Posts box on their profile page, and click See More.
  • Click the Unfollow button on the right hand side of that page.

How can I set a price for a group of items in Zen Cart?

You have a couple of options here:

a) With Zen Cart Table Discounts, you can provide a final price for specific bulk quantities (quantity discounts) of certain items or groups of items.  It’s a good option if you have multiple specific price points for quantity purchases.

Example: Category 1: Buy 10 for $35; buy 20 for $50, buy 40 for $80.

b) With Zen Cart Free Gift Chooser, you can provide a final price on a package (a collection of items) where certain quantities of items should be chosen from specific categories. (This is sometimes called a kit discount.)

Example: Buy an item from each of category 1, category 2, and category 3, get them all for $20.  Choose any 5 items from category 1 or category 2 for $30.

Table Discounts and Free Gift Chooser do not actually lower the prices of the items; they create a discount so that the final price of the items is what you have configured.   So for example, here’s Free Gift Chooser (with the discount shown on the Shopping Cart page by Discount Preview):

(Table Discounts looks the same – the discount is a line item on the shopping cart page if you have Discount Preview, and a line item on the Checkout Payment page and the Checkout Confirmation Page.)