Showing posts with label magento community. Show all posts
Showing posts with label magento community. Show all posts

Tuesday, November 13, 2012

7 Tips for On-page SEO Success


When searching for an SEO strategic consultant, your best option is to go with someone who not only has years of SEO training and experience but someone that has in-depth experience in website coding, programming, designing and developing. As a SEO strategist who began her professional career as not only a software application programmer but also a website designer and developer, I always take into consideration the front end and back end of a company’s success online. In order to help your online success, I’m going to give you 7 tactics to successful on-page SEO problems that happen quite frequently but can be fixed quickly.
1. Create Unique TITLE Tags
One of the most powerful ranking factors is the TITLE tag on your website. The TITLE tag is the text that appears at the top of your browser bar that will usually state your business name and specialty. These tags should always be unique, keyword rich and descriptive. Each page should have it’s own unique TITLE tag to illustrate to the search engine spiders that each page contains unique and relevant content. If you have a huge site that is running on a specific platform (WordPress, Joomla, .NET, etc) there are ways to code appropriately to automate this field to pull a specific area of content from the page.
2. Create Unique META DESCRIPTION Tags
Although the DESCRIPTION tag does not directly impact your search engine rankings (SER), it does indirectly impact your website in:
+ It most often determines the snippet of content that is displayed in your listing on the search engine results page (SERP).
+ Creates a value added that attracts your visitors to click on your link in the search engines to visit your website.
As with the TITLE tag, the DESCRIPTION tag should be unique to differentiate it from other areas of your website and attract more relevant traffic.
3. Keep Your TITLE Tags Short
SEO is an art and a science but still has certain rules it must follow. One of these rules is the limit of character displayed in the TITLE tag on your website and the fact that the more words in this tag, the more diluted your optimization efforts. Keep your TITLE tags relevant but do not make your other pages compete with each other. Keep the TITLE tags short and relevant to the content on the page.
Along with this, the TITLE tag has a limited character threshold on the search engine results page (SERP). Don’t make your TITLE tag contain “…” after it. When it does, the search engines and potential visitors are missing out on quality keyword content.
4. The Importance of Canonicalizing Internal Duplicates
There is a lot of duplicate content available on the Internet and Google has been implementing new algorithms to ward off websites that scrap and steal quality content. In order to help increase your website’s search engine ranking you need to be aware of three common kinds of internal duplicates:
+ Those caused by alternate URL paths to the same page
+ Those caused by tracking parameters and session variables
+ Those caused by search filters and sorts
In these cases, it is important to canonicalize these pages by either using a canonical tag or 301-permanent redirect. This will inform the search engine spiders which page is the original content and help prevent duplicate content indexing.
5. Create Direct Product Links
If you’re website is e-commerce based or has thousands of pages, then having a simple website architecture platform is not a viable option. Normally, you never want to make your website visitor click more than 3 levels deep to find the page or product they are looking for on your website. In this case, it is best to add direct product links, from your best sellers, on your homepage. For bestsellers or featured products, keep the direct links to a minimum but by implementing this strategy, both your visitors and search engines can more easily get to deeper levels of your website.
6. Get Rid of Low Quality Links
The more links you have on your website, the more diluted the weight of each link becomes. Websites with limited links (internal and external) demonstrate to the search engines that each link is of high value and therefore should be treated as such. Keep the linking limited to a few high quality pages and websites in order to increase the weight of each of those links.
7. Modify Internal Anchor Text
Don’t over-think the keywords you use to link to other pages in your website. Keywords should always reflect your keyword strategy and remain simple but relevant to both your visitors and search engines. Use common words that your customers or visitors would use to find your products or services. For example, if you are a B2C company, don’t use language or jargon that only the internal employees would know for your consumer website. Simple and relevant anchor text should remain a priority.
Although there are many parts to a complete SEO strategic plan, website owners and companies should not ignore the important of on-site tactics. Link building and off-site tactics may bring some traffic and search engine spiders to a website but it is what happens on the website that determines the overall success of a SEO strategy. Without a solid on-site SEO strategic plan, search engine spiders may not only have difficulty indexing and ranking your website correctly but customers may become frustrated – which highly decreases the chance of conversion.
I welcome you to implement these solid SEO strategic tactics on your own website and when you are ready to take your website/online brand management success to the next level, don’t hesitate to contact us.

Thursday, November 8, 2012

Top 10 Things Customers Expect from Your Online Store


Oneupweb has recently put out some interesting research which includes the top 10 consumer expectations that influence purchase decisions.
Let’s take a closer look at these items:
Pricing/shipping information clearly stated – 95.5%
No surprises here, as several studies have found that “sticker shock” (the unexpected inflation of final price due to shipping and taxes) is the number one reason for cart abandonment.
Crutchfield does a good job presenting not just the price but shipping, warranty and servicing prices on this product page:
Looks credible and trustworthy – 76.5%
If you’re not a household name, you can improve your site’s “trustworthiness” by having a clean and professional design (yes, first impressions count). Security badges, store ratings and a mailing address on your contact page can also help.
You must also avoid things that scare off your customers like expired SSL certificate warning messages (even the largest sites can fall victim to this).
Product displayed on homepage – 70.8%
Most online stores show products on the home page, but not every site. For example, Abercrombie and Fitch:
The study does not specify whether customers prefer to see individual products merchandised on the home page (such as bestsellers, new arrivals, featured items, etc) or simply be shown product (in a banner, rotating Flash presentation, or other creative). But when you consider that the goal of the home page is to keep the customer interested and win a click deeper into the site, it makes sense that the customers would like some idea on what to explore on your site without fudging with menus or search boxes.
Just showing product is not enough. The way you design and merchandise your home page has an impact. If you’ve been reading Get Elastic for a while, you will recall some A/B tests we did for the Vancouver 2010 Olympic Store. One test looked at home page design. We actually found better results showing categorized mini-menus above featured products. Bounce rate, conversion rate and average order value all improved with the test version.
Visually appealing – 66.7%
Similar to looking trustworthy, consumers also consider the look and feel of your site. There are several low-cost tools to help you gauge whether your site is aesthetically pleasing (using real people’s feedback!)
Total cost calculator (shipping, tax, etc) – 59.1%
Showing taxes and shipping before checkout will likely reduce checkout abandonment. But don’t expect it to dramatically boost conversion rate. Rather, more people will abandon before checkout if the additional charges are too high. Customers appreciate you providing these tools, so you do win some warm-fuzzy points.
Search function – 48.2%
The larger your product catalog, the more important site search is to your ecommerce success. While it’s rare to find an ecommerce site without a search box, it happens, even among some of the most famous brands.
It’s not just the presence of a site search box that matters, it’s also the functionality of search. Web users are becoming more comfortable with Google’s “suggest” feature, the search engine will suggest terms as the user types. More and more e-tailers are adopting autocomplete tools to improve usability and relevance of search results and reduce “zero results found” occurrences. It’s possible users may expect suggestions, and even product results, as they type, rather than after they hit “submit.”
Search result usability is also important. Customers expect filtered navigation to further refine results by attributes that are meaningful to them (category, price, star ratings, color, size, etc).
Killer search result pages provide filters, the ability to sort results, prices, stock availability, large thumbnail images, product description snippets and add-to-cart/add-to-wishlist buttons.
Privacy statement – 45.5%
Though the legalese can be overwhelming, some people do look for privacy policies (though they may not read them). It’s important not just to have one but to make it easy to find wherever the customer experiences “privacy anxiety” on your site.
Onsite customer reviews/testimonials – 40.9%
There are plenty of studies that tout the popularity of ratings and reviews with customers. Reviews reduce the risk of making a bad purchase, and show an online seller is trustworthy when negative reviews appear.
Review content can also help your search engine rankings as a wider variety of keyword phrases appear on your pages than your product description alone (provided your reviews do not appear in a frame that is not read by search engines).
Testimonials are not as common (and not always as believable since only the glowing testimonials are published), but they can give the customer a bit more confidence in transacting with you if you’re not a big brand. Marketing Experiments has tips for using testimonials effectively.
Online customer service (live chat) – 32.5%
Not only can live support help customers figure out your site, locate products or ask questions, one study found that 76% of customers wanted to chat about checkout problems, which could prevent cart abandonment.
Live chat can be reactive, where a clear call-to-chat appears on your site, and the customer initiates the conversation, or it can be proactive, where the system triggers a chat invitation based on user behavior.
Links to social networks (Facebook, Twitter, etc) – 22.7%
I was surprised to see that over 1 in 5 consumers expect to see social sharing tools on a commercial site. I can’t imagine the absence of social links would deter someone from making a purchase. Perhaps this stat is the result of how the question was worded. Today’s customers might expect to see these links because so many sites have jumped on the social network bandwagon, but that doesn’t mean they use them or are more likely to purchase because of them.
Though social sharing buttons increase the likelihood the product will be evangelized by your visitors, your site can also take a performance hit (as some have found with the Facebook Like button). This may not be worth it, as we know that site speed is one of the most critical factors in bounce rate, customer satisfaction, loyalty and conversion. (Fast page loads was an item I believe is missing from this questionnaire, it should be #1 or #2!)
Do you agree with this study? Think #10 is way out of left field? What important elements of the sales process was missed (perhaps omitted from the questionnaire?) Speak your mind in the comments!

Tuesday, November 6, 2012

Magento: Module testing and integration methodology


At the moment, Magento has dozens of module vendors with hundreds of different modules. Each of the vendors have their own methodology and coding standards that often clashes with another module from some other vendor. In order to have a stable environment, there are some steps that you could take before transferring your freshly obtained third party module to the production server.
The first rule of dealing with the modules is that there is no “out of the box and working” installation. Magento is built in a way that gives developers a lot of freedom to shape it as they see fit. The module you have purchased might not have any bugs and most likely will work on the default installation right after you install it, but how will it interact with other previously installed modules? Or some custom code you have added? You’ll most likely agree that this is something that you might want to check.
How NOT to do it
Imagine you have a blank project in front of you. You have defined functionalities you will need to cover and decided to get a certain amount of modules from the market in order to cover them. The worst thing you could do is install them all at once and run the tests afterwards. This is a reliable way to make such a mess with your Magento installation that you will end up with a system that is very difficult, if at all possible, to debug. Yes, it might look as a shortcut that could save you some time you should be spending on proper testing, but you will end up having to wipe everything out and start from scratch much more often than not.
What should be done
If your modules are stored in archives, do not unpack multiple modules directly to your Magento installation at once. The obvious reason is that you will be automatically starting multiple module installation the next time you open admin panel. The not so obvious one: If two modules are using the namespace fallback mechanism to override the same core class, you will be forced either to overwrite a file or cancel extraction. The first option will wreck the first module that used namespace override. The second method will leave you with partially extracted archive and a task to manually pick and delete files that were extracted in order to start over. Ideally, module producers should avoid using the “app/code/local/Mage/…” type of overrides, but sadly it is not the case. Always extract the archives in separate folders somewhere on your computer (other than Magento’s folder) and run a quick check to see if there are direct file conflicts. (Exta tip: use version control system of your choice.)
Install each module separately. Always run through the whole process of module installation, including clearing cache and resetting session by logging out and back in your Magento admin panel after each individual installation. Even if a module is built on best programming practices, chances are that you will not be able to use it until you do this. Having your session and cache clean for the next module installation can prevent unnecessary issues during the installation process.
Get familiar with module’s documentation There are hundreds of modules out there. You are not expected to know the details about each one of them and what they are supposed to do, how are they supposed to do it and what should not be expected as a feature. Knowing the exact intended functionality of a module will help you to better understand how it can be used, how it can be modified to fit your needs and will help you in the potential debugging process. This step will also help you define what exactly should be tested before completing the integration.
Configure the module in the admin panel… repeatedly. This will help you define the exact configuration for the module as well as test different settings. Some modules are built in a way that you will need to find an exact configuration that will allow it to function without clashing with other modules. This step is especially important for modules that are using AJAX calls on the same page in frontend – like some AJAX based layered navigation and AJAX based add to cart with lightbox. It is also important for modules that are playing with URLs. Testing to confirm that each of the module’s key settings are working is also useful, since it will allow you to better pinpoint a bug or a conflict later, during the development.
Perform a quick code and database inspection. Some of the module producers out there are not following the best practices and standards in developing modules for Magento. We have seen situations where even core files are modified by the module, which is something that should be avoided at all costs. These cases are rare and are usually linked to just a few producers, but it will not hurt to check anyway. Take a look at the overwrites in the files and overrides in the config.xml and detect potential conflicts with other installed modules. Do a quick inspection on database modifications done by the module as well.
Write down any potential bugs, missing features, issues and conflicts and add module’s name to the note. You should also remember that even if everything went well during your testing process, code and database inspection and configuration, you might still get some bugs later in development. It’s good to know previous issues you had during the installation and testing of the module as it can help you define the source of the current ones.
Read more about Magento: mage-shop.comarrowhitech.com

Friday, November 2, 2012

5 SEO Mistakes To Be Careful Of


When I first started building websites of my own many moons ago, I read almost everything I could lay my hands on about Search Engine Optimization (SEO). I could foresee the importance of search engines then and wanted to be ahead of competition. Soon, I knew by heart the methods needed to improve my websites’ search engine rankings by leaps and bounds, or so I thought.

Unfortunately, not all my websites were able to achieve great SEO as well as I had desired. Some websites were ranked pretty high and were sitting on the first page of search engine results for years; while others did not even make it to page two. Looking back, I saw that I had committed countless mistakes in my quest to SEO my websites. And through the years, I had learned from my mistakes and had managed to put these websites back on track, though it did take some time. Today, I have put together a list of 5 common SEO mistakes to be careful of, that I would be sharing with you, so you don’t have to learn it the hard way like I did.

Mistake #1: Wrong Keywords

Choosing the appropriate keywords is the most important part of the SEO process and yet the most common SEO mistake ever. Most webmasters, regardless of beginners or experts, commit the crime of applying keywords that THEY think best suit the website, instead of what keywords the search engine users pick to look for information offered by these websites. Most of them failed to realize that their keywords are not necessarily the ones that their targeted readers choose to search with. So do ensure that you do keywords research first and one way of doing so is through Google’s free Google Keyword Tool.

A tip here is to concentrate on keywords that have lesser competition and higher monthly searches. This way, you get less competitive sites but comparatively higher traffic, thus elevating your chances of ranking high in the results page.

Mistake #2: Keywords Saturation

I’m sure you have come across some sites which seemed to be saturated with the same keywords. Some webmasters believe that by stuffing the website with the keywords over and over again, the search engines would be able to detect them better. While this may hold some truth few years ago, it is not the case these days. In fact, most popular search engines today would penalize websites that have excessive keywords and poor content.

Regardless of whether it was done intentionally or unintentionally, cramming keywords in the websites or articles should be avoided. Do ensure that you produce quality articles and not quantity keywords only!

Mistake #3: Duplicating Content

Seen an article in another website and think that it’s so well written that you are tempted to just “borrow” it for your website? Don’t even think about it. Not only would search engines drop your site from being indexed but you would also be committing the ultimate crime in writing i.e. plagiarism. It is not worth the trouble.

You may be able to get away with it once or twice but what happens after that? You have to think long term and you definitely have to put in the effort.

It is not easy to come up with quality articles and sometimes you may encountered writer’s block but do persevere through it and your readers will come to appreciate it. So will the search engines.

Mistake #4: Not Doing Any Site-keeping

Like housekeeping, you have to consistently monitor and manage your website’s SEO progress. This is because search engines are changing their algorithms every so often and in order to maintain your high ranking, you would need to constantly put in SEO efforts besides updating your websites.

Mistake #5: Using Black Hat Techniques

Most people are tempted by the less-effort and quick-result offered by black hat SEO techniques like invisible text, doorway pages and overstuffed unrelated keywords. These are short-term and therefore, should be avoided. Bear in mind that search engines are improving their techniques too and will heavily penalize websites found to be using black hat techniques. Do not every use any black hat SEO techniques!


From: hellboundbloggers.com

Wednesday, October 31, 2012

Magicento – PhpStorm plugin for Magento development



This post is intended for all Magento developers who use PhpStorm as their IDE. It’s about Magicento – free PhpStorm plugin for Magento developers.
Features in Magicento:
1. Goto
Magicento extends PhpStorm goto functionality in a way that you can now use goto also for factory methods and templates. You can go to destination class from factory method by using middle click (Ctrl+click, Ctrl+B).



Also, at the same way, you can go to any phtml template from layout xml file.





Clicking at any Mage: dispatchEvent call brings you to observer definition for corresponding event.





2. Class recognition for objects 
You can use Alt+M (Option+M) to assign class for certain object that is defined through factory method. That is very useful for code completion.
3. Creating modules
Click Alt+M (Option+M) -> Create Module anywhere in a file to save time while creating Magento modules.

I hope this post will be useful for all Magento developers that use PhpStorm.

Tuesday, October 30, 2012

Magento SEO: How To Optimize A Magento Product Detail Page


Product detail pages are critical for ecommerce sites. They are also the ones Google and other search engines have the most trouble with.
While Magento provides some basic search-engine-optimization capabilities out of the box, search engines still face challenges when crawling the pages of a Magento-powered storefront. This article will focus on the product detail pages. It is the first in a series where I will review the SEO changes you can do to a Magento setup. The idea is to make it easier for the search engines to find, index and rank the pages — without alienating your users. These detailed SEO changes will dramatically improve the search performance of Magento product detail pages, making them much more effective at doing their job. In subsequent articles, I will go over the changes to other important pages like main category pages, sub-categories, internal search pages, etc.

What Should We Optimize?

There are two classes of SEO elements that need to be optimized on any given page: Those that the user can see on the page and those that primarily the search engine bots can see. The first we call “user visible” and the second we call “machine visible.”

User-visible elements. The user-visible elements are everything a person can see both on the product detail page and in the search engine results page. Examples of these are the breadcrumbs, the main navigation, the layered navigation, and the product description.

Machine-visible elements. Machine-visible elements are what the crawlers see behind the scenes in the source code. It’s where we should start our SEO work. Examples of these are rich snippet markup, search friendly video markup, and meta data.

It’s fairly common to see developers who forget about users when making SEO changes to a site. They’ll change the title tag and make it a long string of keywords separated by commas, but forget that’s the “enticing” message they will present to users — in search engine results — to motivate them to click further. To do the job right, you have to make all of the SEO changes while keeping the site intuitive and usable.

What Are We Trying to Accomplish?

The main goal is getting more traffic and sales. But in order to do so, we need to look at the critical intermediate steps.

1. Increase crawling. If Googlebot can’t find a product detail page, it won’t rank. We address this by submitting comprehensive XML sitemaps and by stopping the spiders from entering infinite crawl spaces  such as those caused by layered navigation.

2. Increase indexation. Getting a page crawled doesn’t necessarily mean it will get indexed. We can get more pages into the index when we increase the page’s reputation with more quality inbound links, add more unique content, and eliminate duplicate content issues.

3. Improve ranking. While you can directly affect crawling and indexation, rankings is something we can only affect indirectly. We do this by making sure each page focuses on a small set of keyword opportunities. A page must realistically rank on its relevancy to the search query and its reputation.

4. Improve search results presentation. By tweaking the titles, meta descriptions and adding rich snippet markup, we can make the product detail pages appear more appealing in the search engine result pages. This will increase the click-through rates.

Improving the Product Detail Page

Let’s look at a sample product detail page. I’ve highlighted the most important elements that need to be changed in our template.

How to increase crawling.

First, let’s get the Magento SEO basics out of the way. Then we’ll focus on canonical URLs and eliminating duplicate content. Note that the steps below will vary based on the specific Magento theme.

Step 1: Go to System > Configuration > General > Web > Search Engines Optimization.
Step 2: Go to System > Configuration > Catalog > Catalog > Search Engine Optimizations.

Step 3: Enable automatic XML sitemap generation. Go to System > Configuration > Catalog > Google Sitemap > Generation Settings.

Step 4: Add robots meta tag with value “noindex/nofollow” to the following pages: “My Account,” “My Wishlist,” “My Cart,” ‘Checkout,” and “Login.” These pages are not useful to search bots. To do this, you need to use layout updates. For example, this is how you add it to “My Wishlist”:

In your Magento installation, open app/design/frontend/base/default/layout/wishlist.xml
Before the closing , add
<reference name="head">
<action method="setRobots"><value>NOINDEX,NOFOLLOW</value></action>
</reference>
Repeat for the rest of the wishlist pages sections in the file.

Step 5: Verify the canonical tags are working properly. For example, different product image views should have the same canonical tag.

How to increase indexation.

Step 1: Avoid using manufacturer provided product descriptions in the details section. Put the extra effort to make them unique and make sure they contain at least 100 words.

Step 2: The related products section is excellent for interlinking similar products and for passing page reputation from the most popular products to the less popular ones. Carefully consider this when adding or updating the related products section.

Step 3: The product reviews contain valuable user generated content. Ideally, they should be on the same page as the product to bolster the amount of written content. Unfortunately, Magento doesn’t provide an easy way to do that. They appear in separate URLs. I’ll address this in detail in a future article.

How to influence rankings.

Step 1: Make sure the product name is part of the title and is the only H1 on the page. For most ecommerce sites, the product name is best keyword the product detail page can rank for.

Step 2: The second best keyword is generally the SKU or any unique product identifier that user might use to search for the product. Surround the unique product identifier with an H2 tag.
Improving search results presentation.

We also want our page to look its best on the Google search engine results page, or SERP. Here is how we do that.

Step 1: Provide enticing titles, and meta descriptions. Consider them “organic ads” users will see in the SERPs. They must motivate searchers to click. You can control them easily via the admin panel.

Step 2: Add Schema.org rich snippet markup and your product pages will stand out in the search results. Explaining this step in detail would take a separate article.


Friday, October 26, 2012

Development: Add breadcrumbs on a page via XML layout

The following article may be useful for front-end developers, it describes how to add breadcrumbs on the page (where it is not supposed to be by default) using layout XML and minimal PHP programming. It describes adding of 2-levels breadcrumbs (i.e. “Home / Some page”) which is needed in most cases.
In this article we will add breadcrumbs to Contact us page. There is no breadcrumbs by default.

Step 1
Modify corresponding XML file, in our case it is contacts.xml. You need to add the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<contacts_index_index translate="label">
....
            <reference name="breadcrumbs">
                    <action method="addCrumb">
                            <name>home</name>
                            <params helper="arrowhitech_mod/getHomeUrl" />
                    </action>
                    <action method="addCrumb">
                            <name>contact</name>
                            <params>
                                    <label>Contact Us</label>
                                    <title>Contact Us</title>
                                    <link/>
                            </params>
                    </action>
            </reference>
</contacts_index_index>
As you see we operating with breadcrumbs block via XML. We added 2 breadcrumbs:
- One for homepage (with a link to homepage).
- One for the current page.
The interesting point here is the assigning of the link to first breadcrumb:
1
2
3
4
<action method="addCrumb">
    <name>home</name>
    <params helper="arrowhitech_mod/getHomeUrl" />
</action>
As you see, we call method getHomeUrl() from helper arrowhitech_mod which insert the link to homepage into breadcrumb. This is our custom helper, lets create it in “Step 2″.

Step 2
First of all, we need to create our own module (Note: If you don’t know how to create your own module in Magento don’t read further).
In below example the module is located in app/code/community/Arrowhitech/Mod/, but you can use any other location you like.
In the /etc/config.xml file of the module we need to define our helper:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<config>

    <modules>
        <Arrowhitech_Mod>
            <version>0.0.1</version>
        </Arrowhitech_Mod>
    </modules>
    <global>
        <helpers>
            <arrowhitech_mod>
                <class>Arrowhitech_Mod_Helper</class>
            </arrowhitech_mod>
        </helpers>
    </global>
</config>
Finally, we need to create a helper file app/code/community/Arrowhitech/Mod/Helper/Data.php:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Arrowhitech_Mod_Helper_Data extends Mage_Core_Helper_Abstract {
    public function getHomeUrl() {
        return array(
            "label" => $this->__('Home'),
            "title" => $this->__('Home Page'),
            "link" => Mage::getUrl('')
        );
    }
}

?>

That’s all. If you did everything right you will see the breadcrumbs on the Contact us page.

Thursday, October 25, 2012

When Should You Override Magento Core Files In app/code/local/Mage?


The short answer is: NEVER!
The longer answer is somewhat less absolute and requires some explanation.


Often you will see Magento tutorials or forum posts that implement a feature or functionality change that is different from what the core does which requires changing something in the core of Magento. Someone may then advise that, instead of hacking core files it is better to copy them into theapp/code/local/Mage location and perform the modifications there, so that, upon upgrade, the modifications are not lost. This process is called overriding Magento core functionality and is based on the fact that Magento sets its PHP include paths to first look in app/code/local/ thenapp/code/community/ and finally in app/code/core/. This has the effect that any files of the same name placed under the local or community name space will take precedence in loading, hence, we can override almost any core file in this way. To learn about how exactly Magento sets up its system, read the excellent series on the Magento Configuration by Alan Storm.
This is one, sometimes recommended, way of overriding core functionality without hacking the core but why is it, as you may conclude from my initial statement, so bad?
First, let’s see what scenarios would be compelling us to override core files:
1. We want to change a piece of functionality in a core method so we copy the php file containing the code and modify one or more methods.
2. We want to add a new method to a core block class, so it’s available for use in the phtml template so we copy the relevant core Block php file and add our method to it.
3. We may have several modifications consisting of core functionality changes and additions over several files.
So, what are we actually doing here, when we override core files?
For one thing, we must override the complete core file because we can’t trim out the stuff that we don’t want changed since we would lose all that functionality and most likely break Magento. Once the overridden file is in place, this will be the file and code Magento will be using from now onwards. Given that most core classes contain several and many times a large number of methods it means that we are effectively overriding all those methods in our file.
Now, remember when we were advised to use this override approach so we can make sure that our customizations are going to be preserved after a Magento version upgrade? Well that, indeed, will be true, but, what if the new Magento version has changes in the very files we have previously overridden? What if they have newly implemented methods or bug fixes in existing methods? Since our override will always take precedence, these new features and fixes will never be operational as our override runs all the old code. If you’re lucky, you may get an error report because a new change falls over due to missing methods but what if you don’t get error reports and instead, somehow, some inexplicable and erratic behavior starts expressing itself on your site?
You can see the problem now, right? After each upgrade, you will have to go and check all yourapp/code/local/Mage/ overrides and compare them to the new core files and port any core changes to your local override in order to maintain your site’s integrity. If you have lots of such overrides, this will be tedious. Also, if you are a developer who gets passed on an existing site with these kinds of overrides, you will not be happy. Often you won’t even know what the purpose of the override was and you’d need to laboriously go from diff to diff and decipher the meaning of any changes. It gets worse if the previous developer already performed some Magento upgrades.
By now, I guess, you have a good idea about the dangers of applying this kind of override, so, let’s get back to our original question, when, if at all, should you use this approach?
There are a few cases when this approach may be justified, in my opinion, these are the cases:
If you want to quickly try a core modification to see if it will solve your task as a proof of concept, but don’t want to create an extension just yet. When you are satisfied, you remove your override and implement a proper Magento extension with rewrites.
If you are implementing a temporary override of some core functionality that you will remove after your task is complete. A prime example of this is overriding the Magento dataflow classes for importing, when you want to change the way the importer handles certain things in an initial customer or product import.
The key concept here is: temporarychanges/experiments. You are not planning on leaving your overrides.
Note: There are some other scenarios where local Mage overrides are the only way to customize parts of Magento’s core functionality. I’d like to encourage a discussion in the comments to see what others think about this.
Conclusion

The take-away from this article is, never use the app/code/local/Mage/ approach to permanently override core functionality! If you must, then only use if for temporary changes that you will remove afterwards.
As for the question that now presents itself: how, then, should you implement core overrides? The answer is by creating a custom Magento module and using the available class rewrite mechanisms, or better yet, using event observers if possible.