Custom Reports in Magento with Clean_SqlReports

Magento comes with a number of built-in reports covering areas like: sales, taxes, customers, products, abandoned carts, and reviews. However many merchants have reporting needs beyond Magento has to offer. For some merchants, a third-party extension like Aheadworks' Advanced Reports module will do the trick. However if an existing module doesn't fit the bill, then you'll need to build a custom report. Traditionally, a Magento developer would build a report into Magento following the same pattern of Magento's native reports. However this approach can take a while and will often be cost-prohibitive. To make building custom reports an easier task, Kalen Jordan built a module called Clean_SqlReports that allows you to take a MySQL query and automatically turn it into a Magento...

Posted on September 24, 2014

Posted under Magento Development by Erik Hansen

An In-Depth Look at Magento Theme Fallback

Magento supports unparalleled theme flexibility and sophistication that allow for incredibly custom branding while still retaining development efficiency and upgrade compatibility. In particular, the theme asset fallback system allows theme developers to only modify the parts of a theme which actually need to be customized. This feature also enables merchants to quickly deploy stylized stores while still retaining features developed for the overall brand. Current Fallback Structure Magento Enterprise 1.14 and Community 1.9 introduced a new, more flexible theme fallback mechanism. Each theme can now specify its parent, which can then specify its parent, and so on. This theoretically allows infinite fallback levels instead of the fixed number of fallback "slots" in older versions. As...

Posted on August 5, 2014

Posted under Magento, Magento Development, Theme Fallback by Eric Wiese

Currency in Magento

Magento is built to be an extensible multi-lingual, multi-currency, and multi-national platform. It's flexibility can create significant challenges for merchants and developers alike. This has led me to dig deep into the currency systems that are built into the pricing and sales portions of Magento. At a basic level, native Magento currency options can be expressed as three possibilities. The first option is to simply have your base price set on every product using a single currency. This base price is the one that you set when you are setting the price value on a product at the default level. The second option is to use Magento's native currency conversion that operates at runtime on a per store basis. As a Magento merchant or developer, you have the option of allowing your...

Posted on January 15, 2014

Posted under E-Commerce, Magento Development, Management by Jonathan Hodges


Save Credit Cards in Magento with Our New PayPal Extension

Classy Llama's newly released PayPal Credit Card Tokenization extension adds a feature to Magento that's been sorely missed by merchants who use PayPal as their payment service of choice: the ability for customers to save a credit card for repeated use. The enhancement has the potential to make PayPal a more attractive option for new merchants choosing an online payment solution as well. With the extension in place on a Magento site using PayPal, logged in or registering customers will now be presented with a "Save this card for future use" checkbox when paying with a credit card. On subsequent visits, any previously saved cards will be available for one-click use. And while this is the most prominent feature of the new extension, it offers quite a few other bells and whistles as...

Posted on August 15, 2013

Posted under Magento, Magento Development by Chris Nanninga


Unravelling Magento's collectTotals: Orders and Caveats

Previous Entries Part 1: Introduction Part 2: The Core Process The focus of this series is Magento's process for calculating and displaying cart totals. We have taken a thorough look at the code involved with the core process, but there are a few important points left to cover. Transferring totals to the order What we've seen so far all relates to what's happening when a cart is still in progress, and it makes sense that that's where the truly hard work is done. But at some point (we hope), a cart will become an order. What happens then? There are several relevant points: Frequently, the same database fields we've seen in the quote tables (ex. "gift_cards_amount" and "base_gift_cards_amount") will show up in the order tables as well. Where these fields are present in...

Posted on May 8, 2013

Posted under Development, Magento Development, PHP by Chris Nanninga


Unravelling Magento's collectTotals: The Core Process

Previous entries Part 1: Introduction In this series, we're looking at Magento's process for calculating and displaying totals for a cart. In our introduction we briefly covered what a "total" or "total collector" is and saw how one is defined in config.xml. Now it's time to take a closer look at the models and data structure involved. The job of a total collector model can be divided into two processes: Calculation and display. You're highly encouraged to open up the Magento codebase and follow along in the referenced code. The collectTotals process As mentioned in the previous article, the calculation of cart totals is kicked off with a call to Mage_Sales_Model_Quote::collectTotals. Before taking a look at code, there are a few things to take note of about the underlying...

Posted on May 1, 2013

Posted under Development, Magento Development, PHP by Chris Nanninga

Unravelling Magento's collectTotals: Introduction

In this series, I'll be explaining the process by which Magento handles calculating and displaying totals in the cart (i.e., subtotal, tax, discount, grand total, etc), and how to customize this process for your own purposes. At its core, handling product prices and totals in an online shopping cart seems simple. Multiply the cart quantities by product prices. Add shipping. Add tax. And there you have it. The first time you have reason to modify the way cart totals are calculated and displayed in Magento, however, what you'll find is anything but simple. In fact, your first impulse may be to run far, far away. Why the complexity? Well, the first and most obvious reason is that even straightforward totals calculations aren't as simple as they appear. Is shipping a percentage or...

Posted on April 24, 2013

Posted under Development, Magento Development, PHP by Chris Nanninga

Layout Caching

Often times when I am developing in Magento, I do not take the time to dig in and find out exactly how something is working.  Instead I assume that they will work the way expect them to work.  I was recently working in a situation where I wanted to change the functionality of a grouped product page to use an entirely different layout.  Normally, I would have expected to be able to simply remove certain handles and add others to the layout.  For products, this is buried inside several different function calls but I eventually found what I was looking for (the addition of the product specific handles) in Mage_Catalog_Helper_Product_View::initProductLayout.  I proceeded to modify the layout to load my code by replacing the default: $update->addHandle('default...

Posted on March 21, 2013

Posted under Magento Development by Jonathan Hodges


Switching Images on a Configurable Product with MagicZoomPlus and Magento

We've found out how to swap images based on a configurable option with MagicZoomPlus! And we've done it despite the inconlusive feature description from Magic Toolbox's Magento Modules FAQ section: Q   Do these tools support configurable products? A   Configurable products are not supported but configurable product attributes and product options are supported. Also, no need to edit any code or install the Better Configurable Products (BCP) Module they suggest! Here's How to Set Up MagicZoomPlus to Get Configurable Products to Swap Images The tricky part is getting all the steps below exactly right. Miss one of them, and the whole thing blows up. Install the Magic Zoom Plus for Magento Module Create a configurable product with associated simple products. CRITICAL...

Posted on August 22, 2012

Posted under configurable, Development, Magento, Magento Development, MagicZoomPlus by Kevin Kirchner


Customer Data Integrity & Magento One-Page Checkout

Do you have clients who are reporting that their customers are unable to checkout, but you can't find any problem with your client's Magento checkout process? Are customers of your Magento site complaining that they have to re-enter their address because they can't check out? We may have an answer for you! Yesterday, we discovered the source of a particularly ugly issue that has been plaguing one of our clients. For months, customers of this client's Magento site have been complaining of problems checking out, but we've never been able to reproduce their issues. We found out yesterday that their was a gap in some of the customer data that had been imported into Magento when the site was first built. Some customers have customer accounts with saved addresses, but those addresses do not...

Posted on June 14, 2012

Posted under General Business, Magento, Magento Development by Rob Tull