Programming

Magento functional testing with casper.js

Testing can be boring and time consuming task. So why don’t we use some tools and make our lives easier? In Magento there are numerous “boring” tasks that need to be done after the first install and then again when you test a new functionality. For example, create a test account, add product to cart, go trough checkout process, add product to wishlist, compare etc.

Read more

PHP shell scripts for Magento

There are times when it’s necessary to access Magento system from outside Magento. A way to do this is using PHP shell script that bootstraps Magento. An average PHP developer would just go to Magento root directory to create Magento bootstrap file with it’s own code at the bottom. As you’ve probably guessed, there are two ways to bootstrap Magento, regular way and Magento way. In this article I’ll provide an overview of Magento way of creating PHP shell scripts.

Read more

Disabling Magento’s default newsletter transactional emails

Not everyone is satisfied with Magento’s options regarding newsletters so they choose to use some 3rd party service (like MailChimp). In that case it might be a good idea to disable Magento’s default newsletter transactional emails and let that other 3rd party service take care of emails.

In this tutorial I’ll demonstrate how to disable those default Magento’s newsletter transactional emails.

Read more

How to add custom product relations in Magento

Currently there are three types of product relations in Magento: Up-sells, Related Products, and Cross-sell Products. Recently while discussing client’s requirements, we’ve come to conclusion it would serve our purpose best to link products in the same way Magento does, and then use our own relations independently of Magento’s built in product relations. In this article I’ll show you how to add custom product relations as addition to existing Magento product relations.

Read more

Remind customers to place their first order in Magento

Inchoo OrderReminder

Sometimes customers need a little encouragement to place their first order after creating an account. There are many reasons this is the case, for example customers may forget to bookmark your site, thus they might have difficulties finding your store second time around. In this article I’ll present one way of keeping an eye on your customers orders count and sending first order reminder emails, trough free Magento extension named Inchoo_OrderReminder.

Read more

Overriding Magento blocks, models, helpers and controllers

There is no project that uses framework as is. Every now and then there is a need to change something, to add something new or to override something already written. Due to many reasons it’s a bad habit and bad programming if core files are modified and it’s not recommended at all. Therefore Magento brought in an excellent way how to override/overwrite those files.

Read more

Newsletter auto-subscribe on create account and place order in Magento

By default Magento provides a Newsletter feature, which enables store administrators to send newsletters to customers who have registered to receive them. Since most customers tend not to opt-in to any email subscription related services, you might need to automatically subscribe customers when they register or place an order. In this article I’ll present code and simple Magento extension to make it easier for you to accomplish this task.

Read more

Per product meta robots tag control in Magento

My first Magento related task here at Inchoo was to assist our client to gain control over his meta robots tag on per product basis. In this article I’ll present simple Magento extension designed to do just that. I’ll also show you how to create custom product attribute programmatically trough setup resource installer script and how to retrieve this attribute later on.

Read more

301 redirects vs canonical links in Magento

What can you do to prevent duplicated content of products from different stores?

Recently we’ve received one inquiry to optimize an existing Magento website.
Shortly, there are 2 stores with codes: store1 and store2. Store code is included in the URL.

While we were working on the optimization, the client has reported that some of the products show in both: store1 and store2 but they should be visible only in one of those stores (imagine that you’re on store1 and you see there some related products but from store2).

Read more