Extending Magento

While Magento CE has a robust built-in feature set, there are times when desired functionality is seemingly non-existent (e.g Full page cache, Google Shopping feeds, Affiliates program, etc…).  In this post, we’ll review some “best practices” for addressing functionality gaps in Magento.

 

Requirements

magento-logoTo get started, we highly recommend outlining known requirements, expectations and assumptions.  This critical first step can mean the difference between success and failure.

Sharing a consistent set of well written requirements with each technical contact you consult (e.g. community boards, developers, web hosts, vendors, etc…), helps ensure recommendations are accurate and their experience and expertise fully leveraged.  Spending quality time on requirements saves time and money, while also reducing frustration (for everyone, including the merchant).  Bottom line – Don’t skip this step :)

 

Perception vs. Reality

The Magento backend is highly configurable and at times quite complex.  Prior to extending core functionality, it’s important to dedicate some time to ruling out the possibility a desired change could be met using existing functionality.  Leveraging a core feature avoids not only the upfront costs associated with extensions and custom development, but also the on-going maintenance third-party code brings to the table (especially during upgrades).

Some built-in features, such as pricing & cart rules, are quite flexible and can be extended beyond their advertised usage.  A little “outside the box” thinking goes along way when evaluating requirements against existing features.

A thorough overview of Magento features and how they are configured can be found at:

http://www.magentocommerce.com/resources/magento-user-guide

Also, specific topics can be researched on the community message boards at: (read-only as of 2014):

http://www.magentocommerce.com/boards

 

Magento Connect

If existing functionality will not satisfy requirements, the next step would be to search for an extension on Magento Connect.

http://www.magentocommerce.com/magento-connect/

magento-connect

An account on Magento Connect (free) is required in order to download/install extensions.

First-time users will want to read this short installation guide:

http://info.magento.com/rs/magentocommerce/images/InstallingMagentoConnectExtensions4%200.pdf

Some things to consider when deciding on an extension (assuming you have multiple options):

  • Does the extension fully meet your requirements?  Documentation can be sparse, so it may be necessary to temporarily install the extension to fully evaluate it (preferably in a test environment).
  • Is the extension actively supported (free or paid support)?  If an extension has been abandoned (i.e. not compatible with the latest stable core release), there is usually good reason – either it didn’t meet expectations or the functionality was incorporated into the core product.
  • Cost (many are free)

 

Customization

magento-codeWhen required functionality isn’t available in the core product or via a community extension, the next option is to hire a developer who can build a custom solution.

Here are some things to consider when going the customization route:

  • Magento uses a configuration based MVC architecture.  If that doesn’t mean anything to you, it may be best to consult with a Magento developer, preferably one that is Magento Certified.
  • Customizations should be built as extensions of core functionality.
  • Modifying core files is bad and should be avoided at all costs.  “Hacking” core files can result in unintended consequences for dependent features (often outside your scope of testing).  If you must edit a core file, be sure to keep a detailed record of your changes.  It’s likely you will need to manually apply them after an upgrade.

 

Leave a Reply