<![CDATA[Magento Help]]> http://magentist.com/magento_help/ Thu, 17 May 2012 22:41:54 +0000 Zend_Feed http://blogs.law.harvard.edu/tech/rss <![CDATA[The only Magento Checkout Extension that's worth your while]]> http://magentist.com/magento_help/magento-checkout-extensions/
The problem is that most checkout extensions are actually harmful to conversion rates and checkout usability. Except for one!

All Magento checkout extensions I've seen out there are very bad in terms of load speed, conversions, and stability.

Don't combine checkout steps into a single crowded step

First of all I have no idea why but all checkout extensions I've ever seen combine the checkout steps into a crowded 3-column design and promote this as if it's a positive thing.

Here's a screenshot taken from one such extension to illustrate what I mean:

Magento Checkout Extensions

Even the savviest users get confused with such a layout! Not to mention most internet shoppers eager to complete their purchase quickly and move on. I mean - which fields are you supposed to fill out first? Why are there so many options everywhere? It's really overwhelming - especially if you're just buying a shirt or a pair of shoes!

There are a ton of checkout extensions but somehow they all combine all checkout steps into one crowded page with 3 columns. It doesn't get any worse in terms of usability and conversions!

Don't overwrite Magento's functionality

These extensions also completely overwrite Magento's checkout functionality which is a big no no in terms of upgade-ability, stability and security.

What that means is that you'll run into countless issues and problems with new Magento verions, and other 3rd party extensions (such as payment methods, shipping methods, etc).

Don't weigh down your checkout page

In addition these extensions add their own style files, template files, and layout files to the checkout page which will affect load speed and page performance - actually slowing down the most important page of an online store!

Don't trust anything but numbers

If you're trying out a Magento checkout extension, you should make sure to test conversion rates with A/B testing (you can use Google Website Optimizer for that if you want a free and quick implementation). One company did test conversion rates and saw a huge decrease in conversion rates when compared to the original Magento checkout process!

Well, that's expected to anyone with any sense of design and usability.

Look for an alternative

You can stick with the native Magento checkout functionality and that's fine. Except for the very first step which is very confusing to users:

Magento Checkout

Fortunately this first step can be easily and seamlessly removed with the Optimized Checkout Extension without affecting any of the checkout functionality and all its possible scenarios.

If you want users to sign up for your newsletter at checkout you can incorporate this very simple extension which adds a newsletter check-box with a bunch of possible scenarios you can configure in the admin.

Links mentioned in this post:


Cross posted from Noam Design.]]>
Sun, 23 Oct 2011 20:56:32 +0000
<![CDATA[Google Analytics Tracking Bugs]]> http://magentist.com/magento_help/magento-google-analytics-issues/
Here's a quick way to fix these issues (Magento CE 1.5.1):

In Magento, the file responsible for parsing the Google Analytics code is located here:

app/code/core/Mage/GoogleAnalytics/Block/Ga.php
Scroll down to line 142 and you'll see the function that renders Google Analytic tracking scripts:

    /**
     * Render GA tracking scripts
     *
     * @return string
     */
    protected function _toHtml()
    {
        if (!Mage::helper('googleanalytics')->isGoogleAnalyticsAvailable()) {
            return '';
        }
        $accountId = Mage::getStoreConfig(Mage_GoogleAnalytics_Helper_Data::XML_PATH_ACCOUNT);
        return '
<!-- BEGIN GOOGLE ANALYTICS CODE -->
<script type="text/javascript">
//<![CDATA[
(function() {
var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
(document.getElementsByTagName(\'head\')[0] || document.getElementsByTagName(\'body\')[0]).appendChild(ga);
})();

var _gaq = _gaq || [];
' . $this->_getPageTrackingCode($accountId) . '
' . $this->_getOrdersTrackingCode() . '
//]]>
</script>
<!-- END GOOGLE ANALYTICS CODE -->';
    }
}
First of all we can see that the order of the script is not correct - the function should come after the variables and not the other way around. Second, the last line in the function differs from Google Analytics' instructions. After fixing these 2 issues, we get the following function:

    /**
     * Render GA tracking scripts
     *
     * @return string
     */
    protected function _toHtml()
    {
        if (!Mage::helper('googleanalytics')->isGoogleAnalyticsAvailable()) {
            return '';
        }
        $accountId = Mage::getStoreConfig(Mage_GoogleAnalytics_Helper_Data::XML_PATH_ACCOUNT);
        return '
<!-- BEGIN GOOGLE ANALYTICS CODE -->
<script type="text/javascript">
//<![CDATA[
var _gaq = _gaq || [];
' . $this->_getPageTrackingCode($accountId) . '
' . $this->_getOrdersTrackingCode() . '

(function() {
var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);
})();
//]]>
</script>
<!-- END GOOGLE ANALYTICS CODE -->';
    }
}
That should already fix most issues. Except for one:

Tracking across sub domains

If your Magento store runs across multiple sub domains, you'll experience problems with Google Analytics tracking because Magento is not prepared for such scenarios.

So for example if your secure pages are set on a sub domain (such as secure.mydomain.com for example) while your unsecure pages use the main URL (such as mydomain.com), you will encounter several issues with Google Analytic tracking.

To fix this problem we need to do 2 things - first we need to add this line to the Google Analytics script:

_gaq.push(["_setAllowHash", false]);
And second we need to set the domain name. For this let's create a small function that will strip the main domain from the sub domains:

	/**
	 * Added to fix cross sub-domain tracking issue
	 */
	public function getDomainName()
	{
	$removepre = array ("http://","/","www","secure");
	if (!$this->hasData('domain_name')) {
		$this->setDomainName(str_replace($removepre, "", Mage::getBaseUrl()));
	}
	return $this->getData('domain_name');
	} 
Note that in this case I included "www" and "secure" to be removed but you should list there all the prefixes of the sub domains you are using (i.e. "store", "webshop", etc).

We can now use this function in the Google Analytics script like so:

_gaq.push(["_setDomainName", "' . $this->getDomainName() . '"]);
The end result is simple - the native "Render GA tracking scripts" Magento function should be replaced by the following:

	/**
	 * Added to fix cross sub-domain tracking issue
	 */
	public function getDomainName()
	{
	$removepre = array ("http://","/","www","secure");
	if (!$this->hasData('domain_name')) {
		$this->setDomainName(str_replace($removepre, "", Mage::getBaseUrl()));
	}
	return $this->getData('domain_name');
	} 

    /**
     * Render GA tracking scripts
     *
     * @return string
     */
    protected function _toHtml()
    {
        if (!Mage::helper('googleanalytics')->isGoogleAnalyticsAvailable()) {
            return '';
        }
        $accountId = Mage::getStoreConfig(Mage_GoogleAnalytics_Helper_Data::XML_PATH_ACCOUNT);
        return '
<!-- BEGIN GOOGLE ANALYTICS CODE -->
<script type="text/javascript">
//<![CDATA[
var _gaq = _gaq || [];
' . $this->_getPageTrackingCode($accountId) . '
_gaq.push(["_setDomainName", "' . $this->getDomainName() . '"]);
_gaq.push(["_setAllowHash", false]);
' . $this->_getOrdersTrackingCode() . '

(function() {
var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);
})();
//]]>
</script>
<!-- END GOOGLE ANALYTICS CODE -->';
    }
}
That's it ;).

To not overwrite the core Ga.php file, you can either copy it over to the local folder and make the changes there, or create an extension to overwrite the block - sorry I don't have time to do it right now but I could if I get enough requests ;).

For reference here's the entire Ga.php file with the changes discussed above:

<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category    Mage
* @package     Mage_GoogleAnalytics
* @copyright   Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*/


/**
* GoogleAnalitics Page Block
*
* @category   Mage
* @package    Mage_GoogleAnalytics
* @author     Magento Core Team <core@magentocommerce.com>
*/
class Mage_GoogleAnalytics_Block_Ga extends Mage_Core_Block_Text
{
    /**
     * @deprecated after 1.4.1.1
     * @see self::_getOrdersTrackingCode()
     * @return string
     */
    public function getQuoteOrdersHtml()
    {
        return '';
    }

    /**
     * @deprecated after 1.4.1.1
     * self::_getOrdersTrackingCode()
     * @return string
     */
    public function getOrderHtml()
    {
        return '';
    }

    /**
     * @deprecated after 1.4.1.1
     * @see _toHtml()
     * @return string
     */
    public function getAccount()
    {
        return '';
    }

    /**
     * Get a specific page name (may be customized via layout)
     *
     * @return string|null
     */
    public function getPageName()
    {
        return $this->_getData('page_name');
    }

    /**
     * Render regular page tracking javascript code
     * The custom "page name" may be set from layout or somewhere else. It must start from slash.
     *
     * @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApiBasicConfiguration.html#_gat.GA_Tracker_._trackPageview
     * @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gaq.html
     * @param string $accountId
     * @return string
     */
    protected function _getPageTrackingCode($accountId)
    {
        $pageName   = trim($this->getPageName());
        $optPageURL = '';
        if ($pageName && preg_match('/^\/.*/i', $pageName)) {
            $optPageURL = ", '{$this->jsQuoteEscape($pageName)}'";
        }
        return "
_gaq.push(['_setAccount', '{$this->jsQuoteEscape($accountId)}']);
_gaq.push(['_trackPageview'{$optPageURL}]);
";
    }

    /**
     * Render information about specified orders and their items
     *
     * @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApiEcommerce.html#_gat.GA_Tracker_._addTrans
     * @return string
     */
    protected function _getOrdersTrackingCode()
    {
        $orderIds = $this->getOrderIds();
        if (empty($orderIds) || !is_array($orderIds)) {
            return;
        }
        $collection = Mage::getResourceModel('sales/order_collection')
            ->addFieldToFilter('entity_id', array('in' => $orderIds))
        ;
        $result = array();
        foreach ($collection as $order) {
            if ($order->getIsVirtual()) {
                $address = $order->getBillingAddress();
            } else {
                $address = $order->getShippingAddress();
            }
            $result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);",
                $order->getIncrementId(), Mage::app()->getStore()->getFrontendName(), $order->getBaseGrandTotal(),
                $order->getBaseTaxAmount(), $order->getBaseShippingAmount(),
                $this->jsQuoteEscape($address->getCity()),
                $this->jsQuoteEscape($address->getRegion()),
                $this->jsQuoteEscape($address->getCountry())
            );
            foreach ($order->getAllVisibleItems() as $item) {
                $result[] = sprintf("_gaq.push(['_addItem', '%s', '%s', '%s', '%s', '%s', '%s']);",
                    $order->getIncrementId(),
                    $this->jsQuoteEscape($item->getSku()), $this->jsQuoteEscape($item->getName()),
                    null, // there is no "category" defined for the order item
                    $item->getBasePrice(), $item->getQtyOrdered()
                );
            }
            $result[] = "_gaq.push(['_trackTrans']);";
        }
        return implode("\n", $result);
    }

	/**
	 * Added by noam to fix cross sub-domain tracking issue
	 */
	public function getDomainName()
	{
	$removepre = array ("http://","/","get","secure");
	if (!$this->hasData('domain_name')) {
		$this->setDomainName(str_replace($removepre, "", Mage::getBaseUrl()));
	}
	return $this->getData('domain_name');
	} 

    /**
     * Render GA tracking scripts
     *
     * @return string
     */
    protected function _toHtml()
    {
        if (!Mage::helper('googleanalytics')->isGoogleAnalyticsAvailable()) {
            return '';
        }
        $accountId = Mage::getStoreConfig(Mage_GoogleAnalytics_Helper_Data::XML_PATH_ACCOUNT);
        return '
<!-- BEGIN GOOGLE ANALYTICS CODE -->
<script type="text/javascript">
//<![CDATA[
var _gaq = _gaq || [];
' . $this->_getPageTrackingCode($accountId) . '
_gaq.push(["_setDomainName", "' . $this->getDomainName() . '"]);
_gaq.push(["_setAllowHash", false]);
' . $this->_getOrdersTrackingCode() . '

(function() {
var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);
})();
//]]>
</script>
<!-- END GOOGLE ANALYTICS CODE -->';
    }
}
Hope this helps someone!]]>
Wed, 22 Jun 2011 16:06:49 +0000
<![CDATA[New Products Currency Switcher Bug]]> http://magentist.com/magento_help/new-products-currency-switcher-homepage-bug-patch/ Magento bug involving the currency switcher while working on a site for a client. The currency switcher was enabled and working perfectly everywhere on the site except the home page. Any products shown on the homepage (such as in a New Products block or widget) remained in the original currency.

After a bit of digging, I realized it was a cache issue, since disabling Magento's "Blocks HTML output" cache brought the currency switcher's full functionality back to life. It seems the products on the homepage were being cached as a part of the home HTML block, and therefor did not change with the currency switcher.

Of course, it's best to leave Magento's "Blocks HTML output" cache enabled to improve site performance. So what's the fix? Add a "cache_lifetime" node on your new products block and set it to the minimum allowed (1 second). In the end, your block code should look something like this:

{{block type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml" _productsCount="8" cache_lifetime="1"}}
This will effectively keep the New Products block un-cached while safely keeping all other HTML block elements cached as usual. And if this issue is fixed in a future release of Magento, this fix can easily be removed by simply deleting the cache_lifetime="1" from your code!]]>
Wed, 25 May 2011 03:24:11 +0000
<![CDATA[Newsletter Subscribe At Checkout]]> http://magentist.com/magento_help/newsletter-subscribe-checkout/ Newsletter Checkout Option Magento Extension

This Magento extension lets new customers sign up for the store newsletter with a simple checkbox on the checkout page. It's 100% compatible with all magento checkout scenarios and all newsletter signup scenarios. There are also several useful admin options, such as enabling the check box to be checked by default etc, which are managable from the Magento admin panel.

Because the Newsletter Checkout plugin is designed in an inobtrusive way, using Magento's native One Page Checkout functionality and your own theme's CSS, upgrades are hassle free! Newsletter Checkout will continue to be compatible with all major browsers and the latest releases of Magento.

Check it out!]]>
Wed, 18 May 2011 21:28:39 +0000
<![CDATA[Discussion Plugin Update v1.1]]> http://magentist.com/magento_help/discussion-plugin-update-1-1/ Discussion Extension for Magento! This Magento extension allows customers to engage in questions, support queries, and other discussions about the product, and get answers directly from the shop owner - all right on the product view page!

The new release has been made even lighter and more efficient, making the extension perform even faster than the previous version to keep your site lightweight and blazingly fast.

If you have already purchased the extension, you may download the updated files by logging in to your Magentist account and re-downloading the extension from the same link you followed when you first purchased the extension.]]>
Mon, 18 Apr 2011 20:23:08 +0000
<![CDATA[Simple Product Sizes]]> http://magentist.com/magento_help/simple-product-sizes/ Magento comes with a great demo catalog, and inspecting it can be a great way to get tips on how to set up your products in your store. However, you may want to think twice before following its example for setting up products that come in different sizes, such as clothing.

The demo catalog contains a Simple Product for every single size of a product you wish to sell. These products are not visible in the catalog, but are available as options on a Configurable Product in the catalog. Not only can this quickly bloat your back-end, but if you should decide to begin offering sizing options after the product is created, you'd have to scrap your product and begin again as a Configurable Product.

Fortunately, there's a much more streamline way of accomplishing this: Simply add Custom Options to your product. This option allows you to add options which carry their own SKU, and can even affect the price (eg +$3 for XXL). Here's how to do it:

Log into your admin panel and navigate to Catalog > Manage Products and click on a product to edit it.

Select the "Custom Options" tab from the left-side navigation and click on the orange "Add New Option" button that appears in the upper right corner of the main area.

Set a title (eg 'Size'), set Input Type to "Drop-down" and set as Required. Then click the orange "Add New Row" button below. Fill in the Title, SKU, and Sort Order for the first size, then click the "Add New Row" button again and repeat for the remaining sizes.

That's it! Now you can sell multiple sizes of your product on your Magento store in a single catalog entry!]]>
Mon, 10 Jan 2011 20:21:33 +0000
<![CDATA[Create A Buzz About Your Store]]> http://magentist.com/magento_help/create-a-buzz-about-your-store-promotional-offer/ Magento themes set to your needs. You've done a lot of work on your SEO and you're starting to get some decent traffic, but you could use a little boost.

A limited-time special promotion might be just the thing you need to get a buzz going and really get people excited about your Magento store.

We've started a special holiday promo at Magentist offering $1,000 of Magento goodies for just $199! Only good through midnight on December 31, 2010. Check it out: Magento Pack

It may seem like a steep price cut, but what looks like short-term losses will actually create long-term gains. Customers get excited when they see overwhelming values, and the memory of this positive experience with your brand will echo in the future when they come back for more. If you're lucky, they'll tell their friends, and their friends' friends, and your customer base will grow like wildfire.

This isn't a new idea. Perhaps you've seen JetBlue offering $10 airfare for one day only, or Borders offering 50% off any one item plus free shipping. Plenty of business of all shapes and sizes have seen that this is a great way to set a positive tone to their customer relationships.

If you're interested in starting your own limited-time promotional offer, consider creating a pack of products for an unheard of low price. It's an easy way to take products that are already in your store and use them as a powerful marketing force.

Check out our Product Pack Magento Theme, designed just for that. This theme features a special layout specifically for creating product packs in Magento, plus a countdown timer in the header that lets customers know that there's no time to lose!

Try it for yourself! You'll be glad you did. Let's Go!]]>
Wed, 22 Dec 2010 19:19:51 +0000
<![CDATA[Set A Custom List.phtml For A Single Category]]> http://magentist.com/magento_help/set-custom-list-phtml-for-a-single-magento-category/ Magento Portfolio page has a different layout from our Magento Themes and Magento Extensions category pages. Accomplishing this was a bit tricky since it requires the use of a different list.phtml file for the Magento Portfolio page.

At first, in an effort to get things off the ground quickly, we had set up a custom theme for that category, which was essentially the same theme as the rest of the site but with a custom list.phtml. We knew there had to be a cleaner, more elegant solution to this problem; one which wouldn't require further changes to the site to be made in two places; so at last, we've put together a solution using Layout Update XML.

If you'd like to create a custom layout for one category on your own site, locate the file /app/design/frontend/default/your-theme/template/page/list.phtml and duplicate it. For the purpose of this example, let's say the duplicate has been named "list-custom.phtml"

Now, access your Magento admin panel and navigate to Catalog > Manage Categories. Select the theme you wish to have a custom list.phtml and go to the Custom Design tab. Now, in the field labeled "Custom Layout Update," enter this code:

<reference name="product_list">
	<action method="setTemplate">
		<template>catalog/product/list-custom.phtml</template>
	</action>
</reference>
Click the orange "Save Category" button in the upper-right corner and check out your site. This category should now be displayed using the list-custom.phtml file you just created.

That's it! Of course, some custom templates may pose individual challenges not covered by this post, so if you have further difficulty with your customization, go to Magento Expert and get quick answers to your Magento questions from real Magento experts!]]>
Thu, 16 Dec 2010 17:41:29 +0000
<![CDATA[Upgrading To Magento 1.4.2]]> http://magentist.com/magento_help/upgrading-to-magento-1-4-2/ Magento 1.4.2 has just been released! The bad news is that upgrades commonly create new problems with Magento themes that worked just fine on older installations. Fortunately, we're here to shed some light on the most common of these problems.

If you're like us and many others, after upgrading to Magento 1.4.2, your site returns an error starting with something like this:

a:5:{i:0;s:69:"Invalid method Mage_Wishlist_Block_Links::addWishlistLink(Array
(
)
)";i:1;s:2313:"#0 [internal function]: Varien_Object->__call('addWishlistLink', Array)
This error is caused by a change in the way the Wishlist is set up. Fortunately, the fix is very simple:

The Fix:
1. Open the file /app/design/frontend/default/your-theme/layout/wishlist.xml

2. Find this:
<reference name="top.links">
    <block type="wishlist/links" name="wishlist_link">
         <action method="addWishlistLink"></action>
    </block>
</reference>
3. Replace that code with this:
<reference name="top.links">
    <block type="wishlist/links" name="wishlist_link"/>
    <action method="addLinkBlock"><blockName>wishlist_link</blockName></action>
</reference>
4. Save and upload the file, then refresh Magento's cache via System > Cache Management

That's it! Of course, some custom templates may pose individual challenges not covered by this post, so if you have further difficulty with your upgrade, go to Magento Expert and get quick answers to your Magento questions from real Magento experts!]]>
Sat, 11 Dec 2010 02:44:28 +0000
<![CDATA[Get Help With Your Magento Website]]> http://magentist.com/magento_help/get-help-with-your-magento-website/ Check out Magento Expert: a gathering place where Magento users of all levels can ask questions and exchange knowledge.

Whether your customizing Magento themes, installing Magento extensions, managing your product catalog, or any number of thing, all of us could use help with Magento from time to time.

Magento is a vast piece of e-commerce software that could take years to understand fully, inside and out. But that's ok, you don't have to! Magento's user community is equally vast, and the sum of their knowledge is astounding.

Tap into this great resource and check out Magento Expert: a gathering place where Magento users of all levels can ask questions and exchange knowledge. Magento Expert is regularly monitored by real Magento experts, so you can quickly get free professional answers to your Magento questions.

Also, try browsing questions to see if your question has already been answered, or get involved in the community and share your own knowledge to help out a fellow Magento user!

Check It Out Now!]]>
Mon, 06 Dec 2010 20:37:42 +0000
<![CDATA[Display More Than 5 New Products]]> http://magentist.com/magento_help/display-more-than-five-new-products/ New Products block in a Magento CMS page, such as your homepage, the default number of products that will be displayed is 5.

This works great for the standard Magento templates, but if you have a template that has room for more than 5 products in your New Products feed, you'll notice that it stops at 5 and leaves the rest of the block empty.

You may have seen a fix for this that requires you to locate Magento core files, copy them to a local folder, and edit the default New Products count, but there's a much simpler, and much faster way to accomplish this.

Say, for instance, there were room for a grid of 9 products on a New Products block. Just add _productsCount="9" to the block code so that it looks something like this:

{{block  type="catalog/product_new" name="home.catalog.product.new"  alias="product_homepage" template="catalog/product/new.phtml"  _productsCount="9"}}
Voilà! No need to edit backend files, no risk of ruining your Magento installation; just quick, simple, and easily editable. Enjoy!]]>
Fri, 06 Aug 2010 16:36:28 +0000
<![CDATA[Layered Navigation Drop-Down]]> http://magentist.com/magento_help/magento-layered-navigation-drop-down/ layered navigation in Magento is a powerful tool that allows customers the convenience of filtering the catalog by filterable product attributes such as price range, color, etc. This is a great way to increase sales by making it easier for customers to find what they want, faster.

A common drawback to this feature is that catalogs with many attributes and attribute sets will generate a very long list in the layered navigation. Many Magento ecommerce shop owners would rather use this space to add callouts for advertisements or sales promotions, but they don't want to lose the powerful functionality that comes with the layered navigation.

An excellent solution to condense the space occopied by the layered navigation is to convert each list of attribute options into a drop-down menu. This will preserve the powerful functionality of the layered navigation while allowing you more vertical space in your sidebar, and even making the layered navigation options more readable. The result should look like this:



Making this change is quick and simple. First, open the file /app/design/frontend/default/your-magento-template/template/catalog/layer/filter.phtml For Magento templates that do not have this file, you may simply create the file at the specified location. Then, replace the content of this file with the following code:

<select onchange="setLocation(this.value)">
<option value=""><?php echo 'Choose an Option...' ?></option>
<?php foreach ($this->getItems() as $_item): ?>
<option
<?php if ($_item->getCount() > 0): ?>
value="<?php echo $this->urlEscape($_item->getUrl()) ?>"><?php echo $_item->getLabel() ?>
<?php else: echo '>' . $_item->getLabel() ?>
<?php endif; ?>
(<?php echo $_item->getCount() ?>)
</option>
<?php endforeach ?>
</select>
As always, after editing any PHTML file in your Magento template, don't forget to refresh Magento's cache via System > Cache Management to see your changes.

To learn more about the Magento Layered Navigation, check out this Magento Screencast

]]>
Tue, 03 Aug 2010 17:56:00 +0000
<![CDATA[Move Elements In Magento Templates]]> http://magentist.com/magento_help/move-elements-in-magento-templates/ Magento templates is usually fairly simple. A quick drag-and-drop of a small PHP script within a PHTML file is usually all you need.

But what if the layout you want to achieve would require you to move that PHP script to a different PHTML file? This may be fine on occassion, but you may often find that this will fail to output your content.

As an example, let's say you want to move your topLinks bar (the My Account, My Wishlist, My Cart, etc links) from the header.phtml file to the page layout files (1column.phtml, 2columns-left.phtml, etc). The php code you're looking for in header.phtml will look like this:

<?php echo $this->getChildHtml('topLinks') ?>
This cannot be directly transferred to the layout files because the PHP is requesting ChildHtml, and topLinks is a child of header.phtml, not the layout files. The solution? Reformat the PHP! Instead of using getChildHtml, use getLayout()->getBlock. This format should work in virtually any PHTML file in your Magento templates. The new code for our example would look like this:

<?php echo $this->getLayout()->getBlock('top.links')->toHtml()?>
Notice that the identifier has changed from "topLinks" to "top.links" The new identifier is the block's name, whereas the old identifier used the block's alias. This information was gathered from /app/design/frontend/default/template-name/layout/page.xml on this line:

<block type="page/template_links" name="top.links" as="topLinks"/>
]]>
Fri, 30 Jul 2010 18:50:40 +0000
<![CDATA[Magento CE Version 1.4.1.1 Stable - Patch]]> http://magentist.com/magento_help/magento-ce-1.4.1.1-pear-patch/ Magento users have noticed that there was a problem with one of the PEAR packages the new Magento 1.4.1.1 Stable release.

The problem has now been fixed, so those who have not yet installed or upgraded to Magento 1.4.1.1 are safe to do so. However, if you have already downloaded or upgraded your installation and are experiencing the issue you will need to apply the following patch:

Click on your desired format to download: patch | zip | tar.gz

To learn more, read the artical from the official Magento Blog.]]>
Thu, 29 Jul 2010 19:17:48 +0000
<![CDATA[Magento Version 1.4.2.0-beta1 Now Available!]]> http://magentist.com/magento_help/magento-preview-1.4.2.0-beta1-download/ Magento Blog — Magento Preview Version 1.4.2.0-beta1 is now available for download!

Check out the release notes page for a full list of features and issues fixed in the new release. Diff files are available for download here.

Important! This is a preview beta version and is NOT intended for use on a live production installation. Until a stable version is released, Magento 1.4.2.0 will be available for download only, and will not be available through Magento Connect. Check back later to watch for a stable release!

Find out more on the official Magento Blog or download now!]]>
Wed, 28 Jul 2010 19:23:24 +0000
<![CDATA[Magento CE Version 1.4.1.1 Available For Download And Upgrade]]> http://magentist.com/magento_help/magento-ce-1.4.1.1-stable-download-upgrade/ Magento Blog — Magento CE Version 1.4.1.1 Stable is now available for download and upgrade!

The new Magento platform will include new features like Qty Increments update in products mass-update, and the ability to exclude a category from navigation menu; and a host of known issues with Magento 1.4.1.0 are now fixed in version 1.4.1.1 Check out the release notes page for a full list of features and issues fixed in the new release. Diff files are available for download here.

Important! As always, back up all database and site files before performing an upgrade on your Magento ecommerce website. It is NOT recommended to upgrade Magento directly on a live production installation. Please make sure to check file permission before trying to upgrade through your Magento Connect Manager.

Find out more on the official Magento Blog or download now!]]>
Tue, 27 Jul 2010 18:08:04 +0000
<![CDATA[Magento U - Summer Webinar Series]]> http://magentist.com/magento_help/magento-u-summer-webinar-series/ Magento and feeling a bit overwhelmed by the vast array of features at hand? Are you looking for a clear explanation of all of Magento's user features? You're in luck!

The Magento U - Summer Webinar Series is a "Getting Started" webinar series, which is designed for beginning Magento users to will walk you through how to use some of Magento's core eCommerce functionality. Intermediate Magento users can also benefit, but may have already encountered some of the concepts covered.

Sessions are 45 minutes of presentation with an additional 15 minutes at the end for questions. Enrollment is limited to allow for questions, so sign up early. If you miss a session, you can download the PPT deck and watch a recording. Most sessions will be offered again in the fall as well.

Don't miss out on your chance to gain complete user confidence with Magento! Sign up for the Magento U - Summer Webinar Series today!]]>
Mon, 26 Jul 2010 21:11:47 +0000
<![CDATA[Get Help From Magento Expert]]> http://magentist.com/magento_help/magento-help-from-magento-expert/ Ask Magento Questions
Having trouble with Magento? Get fast Magento help from Magento Expert for free!

Do you need help customizing Magento templates? Having trouble managing your Magento ecommerce store, or creating custom Magento functionality? Magento Expert is the best resource for any Magento question, no matter how big or small.

Why waist your time looking for an answer to your questions in the forums and on every possible site you can find? Whether your question is about Magento in general, or is completely unique to your custom Magento template, you'll get answers from seasoned, expert Magento programmers and designers, quickly, and free of charge!


Answer Magento Questions
Help the Magento users while promoting your business! Soon you'll also be able to make money by providing expert answers to Magento questions posted on Magento Expert.


It's Free!
At this moment there is no charge for this wonderful service! Magento Expert is a new project by Noam Design created because of the gazillion questions we received from Magento users. Instead of answering them all one by one, we created a platform where you can ask specific Magento questions and get quick and knowledgeable answers directly from the experts.

Check out Magento Expert now!]]>
Fri, 23 Jul 2010 19:16:21 +0000
<![CDATA[Use Static Blocks In Your Template]]> http://magentist.com/magento_help/use-static-block-in-magento-template/ Static Blocks are a great way to include HTML content in your Magento ecommerce website, especially if the block content will change frequently. This allows you to edit just the block content, without having to edit the full page.

Static blocks are easy to include in CMS pages, but what about adding a static block to your Magento template files? This can be especially time saving since editing PHTML files in your Magento template requires FTP transfers and refreshing Magento's cache, and can be rather daunting.

So let's say you'd like to add a banner in your header that will change each week. This is a perfect example of a situation where a static block would be very appropriate. Instead of editing the header.phtml file and refreshing Magento's cache every single week, you can include a static block in the header.phtml file once, and from then on, manage your block content through the admin panel. To add a static block to a PHTML file in your Magento template, just follow the steps below:

1. Create a static block in the admin panel via CMS > Static Blocks
2. Enter the following code into the desired PHTML file in the place where you wish the static block code to appear:
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your-static-block-identifier')->toHtml() ?>
3. Refresh Magento's cache via System > Cache Management.

If you have any trouble with this process, check out Magento Expert for quick answers to your Magento question from real Magento experts, for free!]]>
Thu, 22 Jul 2010 21:23:03 +0000
<![CDATA[Choosing The Right Product Type]]> http://magentist.com/magento_help/choosing-the-right-magento-product-type/ Magento has 6 different product type profiles to choose from when creating a new product. Selecting the appropriate product type is essential for accessing the appropriate set of features required to sell your product.

Here's a breakdown of the different product types and what they're intended for to help guide you in setting up your Magento products.

Magento Product Types

Simple Product
The Simple Product profile is best suited for - just as it sounds - simple products. These are generally physical products - basic, no-options, one-size-fits-all products. Examples: toys, office supplies, DVDs and other physical media, etc.

Grouped Product
This profile allows you to take existing products and sell them concurrently as a single, grouped product. A great example from the demo catalog is the Magento Red Furniture Set. The 3 products in this group - Ottoman, Chair, and Couch - are separate products, each available for purchase as their own product. But they are available here as a set.

Note that there is no built-in feature allowing you to set a special price for purchasing a set of products as a grouped product, however this may be accomplished if you set a price rule.

Configurable Product
A very common use for the Configurable Product profile is clothing. Since clothing often comes in multiple sizes, the user will need to be able to "configure" their product (aka, select their size) before purchasing.

Let's say you're selling a shirt that comes in Small, Medium, and Large. You could create a Simple Product for each of the three sizes, setting their Status to "Enabled," and setting their Visibility to "Nowhere" in the Magento admin panel. This will allow the products to be purchased, but will prevent the products from being seen in the catalog. Then, you would create a Configurable Product for the catalog, and under Associated Products, you would select the three products you created for each of the sizes. Note that here you may also set a separate price for each option (for instance, a $2 surcharge for XXXL).

This configuration will automatically create a drop-down menu on your product page allowing the user to select which size they wish to purchase. A great example from the demo catalog is the ASICS® Men's GEL-Kayano® XII.

Virtual Product
If your product does not need to be shipped, downloaded, or delivered in any way, this is probably the most appropriate profile.

This is a great way to sell services such as house cleaning, or intellectual products such as warranties, protenction plans, or usage licenses.

Bundle Product
If you're familiar with other ecommerce platforms, you may refer to this profile type as a "kit." This is the best option for products that have several options for multiple facets.

Check out the My Computer product from the demo catalog. It has several options each for Case, CPU, Hard Drive, RAM, and Monitor.

Note that you have the ability to make an option required or optional; selectable by drown-down menu, radial button, or check box; and each may affect the final price of the product.

Downloadable Product
Just as it sounds, this profile is best for products which have a downloadable counterpart. This is great for software, digital music files, and other electronic products.

Note that a Downloadable Product may include one or more downloadable file, and you have the option to require all files to be purchased or to allow the customer to select which files they would like to include in their purchase. If multiple files are included, you may also include a surcharge for each file, affecting the final price of the product.]]>
Thu, 22 Jul 2010 00:35:49 +0000
<![CDATA[Change Your Template's Favicon]]> http://magentist.com/magento_help/change-magento-template-favicon/ Magento template! You know that icon next to the URL in your browser window? You can easily change it from the default Magento logo to your company's logo by following these steps:

1. Create a 16 x 16 pixel image of the icon you wish to use and save it as a GIF or PNG file.
2. Rename your image "favicon.ico" - eliminating the ".gif" or ".png" extension.
3. Upload your favicon file to /skin/frontend/default/your-template/favicon.ico
4. Refresh Magento's cache via System > Cache Management.

That's it! Now you can more fully enjoy the customization and uniquely branded feel of your Magento template!]]>
Tue, 20 Jul 2010 22:46:17 +0000
<![CDATA[Magento For One Single Product]]> http://magentist.com/magento_help/magento-for-one-single-product/ Magento is obviously the best open source ecommerce solution out there for selling a wide variety of products online, from small boutique shops to massive catalogs with thousands of products. But what if you have just one single product that you'd like to sell on a site rich with marketing content for that product?

Maybe you're trying to sell your band's first CD, or maybe you've developed a piece of revolutionary software and you need a selling platform that will give you adequate space to explain what your product is and what makes it great. Good news! Even if you need to go against the grain and downplay the catalog and play up the product, Magento is flexible enough to meet all of your needs.

The important thing is to look for Magento templates that entirely skip all catalog pages (product listing and product view) which are totally unnecessary if you only sell 1 or 2 products. You need a Magento template that bypasses catalog pages and uses only the necessary functions (CMS, checkout, account, etc).

As always, try to take advantage of all of the great features Magento has to offer, like:
  • Magento Content Management System for content pages (unlimited pages, flexible design, wysiwyg editor, etc)
  • Magento's built in CRM (customer relation manager) to keep track of your customers, offer customer account functionality to your users, etc
  • Magento's wide pool of extensions (for example support systems, faqs, live chat, etc)
  • Default support to most payment methods including all Paypal options, Google Checkout, Authorize.net, etc
  • Magento's order management and default integration with most existing shipping methods
  • Magento's default support for multiple languages and multiple currencies (if you ever want to grow and expand your store)
  • Magento's built in newsletter system (including option to opt-in/opt-out, multiple lists, etc)
  • And much much more!

Here's a great Magento template from Magentist that does a great job of this. You'll see how CMS pages are accessible from the main navigation, giving you ultimate control over content, the product view is very straightforward with limited distraction, and the Buy button is on the main navigation making it accessible from anywhere on the site.]]>
Fri, 16 Jul 2010 18:05:24 +0000
<![CDATA[Magento Coupon Codes & Price Rules]]> http://magentist.com/magento_help/magento-coupon-codes-price-rules/ Magento has a great built-in feature for sales and promotional prices. Ever notice the discount coupon code field in the shopping cart of your Magento ecommerce website? That's just one example of the great price rule tools Magento has to offer.

This can be a great way to implement store-wide sale discounts without having to manage every product's price individually. Or you can create conditional price-driven marketing like "2-for-1" specials or "buy x and get y half-off" promotions. It can also be a great way to target customer groups with exclusive coupon codes.

There are two types of price rules in Magento: Catalog Price Rules and Shopping Cart Price Rules. Catalog Price Rules are implemented into product price before they are added to the cart, while Shopping Cart Price Rules are applied in the shopping cart.

To create a new Catalog Price Rule, navigate to Promotions > Catalog Price Rules and select Add New Rule. Enter the rule's basic information, conditions, and actions; then click Save Rule. For more information on creating Catalog Price Rules, check out this article from the Magento Wiki: Catalog Price Rules

The other kind of price rule is the Shopping Cart Price Rule, which is applied at the shopping cart. This type of rule can work with or without a coupon code. To create a new Shopping Cart Price Rule, navigate to Promotions > Shopping Cart Price Rules and select Add New Rule. Enter the rule's basic information, conditions, and actions; then click Save Rule. For more information on creating Catalog Price Rules, check out this article from the Magento Wiki: Shopping Cart Price Rules

If you need more help, check out Magento Expert to get quick answers to your Magento questions for free!]]>
Wed, 14 Jul 2010 18:04:16 +0000
<![CDATA[Change Magento's Default Logo]]> http://magentist.com/magento_help/change-magento-default-logo/ Magento store that Magento's logo is used as the default logo. A lot of people find this logo image in the default template folder under images/logo.gif and just write over it with their own logo image; but is there a better, more proper way to do this?

What if you want to name your logo image something other than "logo?" Or use a JPG or PNG instead of a GIF? Or what if you want to keep your logo image in a different folder?

Magento actually lets you specify the logo path in the admin, and this is by far the best practice for changing the location or name of your logo file. No need to edit PHP, HTML, or CSS - just a simple switch in the admin panel.

To change the path or filename of the default logo, simply log in to your admin panel and navigate to System > Configuration > Design. Under the Header section, change the Logo Image Src from "images/logo.gif" to whatever file path/name suits your needs.

Keep in mind, this setting can be managed on the Store View level, so if you have multiple store views, make sure each one is using the appropriate logo! If you need more help, check out Magento Expert to get quick answers to your Magento questions for free!]]>
Tue, 13 Jul 2010 19:32:37 +0000
<![CDATA[Magento Product Options Drop-Down Menu]]> http://magentist.com/magento_help/magento-product-options-drop-down-menu/ Magento can be used to sell almost any type of product, from simple products to downloadable products, or even items which can be customized and configured by the customer.

So how can you easily add a drop-down menu on your product page to allow customers to select product options?

Let's say, for example, you have a Magento ecommerce website that sells fashion and accessories, and you want to sell a shirt that's available in several sizes. You can add a drop-down menu to select sizes by following these quick steps:

Log into your admin panel and navigate to Catalog > Manage Products. Click to edit the appropriate product, then click on "Custom Options" in the left-side navigation. In the main content area, find and click on the "Add New Option" button. Call this option Size and then click "Add New Row" to add and configure as many as size options as you have.

If you have more than one option, you can then click "Add New Option" again to create another option, such as "Color."

If you're having difficulty configuring your product options, check out Magento Expert and get a quick answer to your Magento question for free! You can also find many answers on your own by consulting the Magento Users Guide]]>
Thu, 08 Jul 2010 17:16:04 +0000
<![CDATA[Remove Sidebar Blocks With Layout Update XML]]> http://magentist.com/magento_help/remove-sidebar-blocks-with-layout-update-xml/ Magento's sidebar comes with lots of great features like a quick view of your shopping cart and items you've marked to compare.

But what if you don't want to use all of those items on a page? Sure, you could disable features, but what if you only want to hide features on a specific page?

Say, for example, you want to create a homepage using the 2-columns-left layout. Having the sidebar navigation available on your homepage could be a great way to increase accessibility on your site, but the Shopping Cart and other features may not be appropriate for the home page.

The best solution for a scenario like this is to remove unwanted blocks from a specific page using Layout Update XML.

For this example you would set up your categories and your homepage as usual, and then to remove the extra sidebar blocks on the homepage, go to edit your homepage’s CMS page, and under Layout Update XML, create the appropriate remove tags, as in this example:

<reference name="left">
	<remove name="cart_sidebar"></remove>
	<remove name="catalog.compare.sidebar"></remove>
	<remove name="sale.reorder.sidebar"></remove>
</reference>
This method can be used on CMS pages, categories, product pages - just about anywhere on your site!

For more help on this topic, ask a real Magento Expert at http://magentoexpert.com/ and get a quick answer to your Magento question for free!]]>
Tue, 06 Jul 2010 21:12:46 +0000
<![CDATA[Upgrading To Magento 1.4.1]]> http://magentist.com/magento_help/upgrading-to-magento-1-4-1/ Magento 1.4.1 has been released, and fixes many of the issues people have addressed with Magento 1.4.0, but many people are now having trouble converting their Magento templates to be compatible with the new upgrade.

Magento templates designed for Magento 1.4.0 should have no compatibility issues with 1.4.1, but if you've recently converted your Magento 1.3 template to be compatible with Magento 1.4.0, you may find that your template no longer works in Magento 1.4.1

Of course, there's no way to address all of the particular issues of converting every custom template, but for most common templates, following the steps below should have your site up and running again in no time!

If you're trying to convert a Magento 1.3 template to 1.4.1, follow the steps on these helpful web design blog articles and then return for these further instructions: 1. Upgrading To Magento 1.4 2. JavaScript References 3. Pagination

1) Open the file /app/design/frontend/default/YOURTEMPLATE/layout/page.xml

2) Find this code (about line 38):
<action method="addJs" ifconfig="dev/js/deprecation"><script>prototype/deprecation.js</script></action>
3) Add this code directly under it:
<action method="addJs"><script>lib/ccard.js</script></action>
4) Find this code (about lines 64 - 92):
<block type="page/html_notices" name="global_notices" as="global_notices" template="page/html/notices.phtml" />

<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="page/html_header" name="header" as="header">
	 <block type="core/text_list" name="top.menu" as="topMenu"/>
</block>

<block type="page/template_links" name="top.links" as="topLinks"/>

<block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>

<block type="core/text_list" name="left" as="left"/>

<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>

<block type="core/text_list" name="content" as="content"/>

<block type="core/text_list" name="right" as="right"/>

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
	 <block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
	 <block type="page/template_links" name="footer_links" as="footer_links" template="page/template/footer_links.phtml"/>
</block>

<block type="core/text_list" name="before_body_end" as="before_body_end"/>
</block>

<block type="core/profiler" output="toHtml"/>
5) Replace it with this code:
<block type="core/text_list" name="after_body_start" as="after_body_start"/>

<block type="page/html_notices" name="global_notices" as="global_notices" template="page/html/notices.phtml" />

<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="page/html_header" name="header" as="header">
	 <block type="core/text_list" name="top.menu" as="topMenu"/>
</block>

<block type="page/template_links" name="top.links" as="topLinks"/>

<block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>

<block type="core/text_list" name="left" as="left" translate="label">
	 <label>Left Column</label>
</block>

<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>

<block type="core/text_list" name="content" as="content" translate="label">
	 <label>Main Content Area</label>
</block>

<block type="core/text_list" name="right" as="right" translate="label">
	 <label>Right Column</label>
</block>

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
	 <block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label">
		  <label>Page Footer</label>
		  <action method="setElementClass"><value>bottom-container</value></action>
	 </block>
	 <block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
	 <block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
</block>

<block type="core/text_list" name="before_body_end" as="before_body_end"/>
</block>

<block type="core/profiler" output="toHtml" name="core_profiler"/>
6) Save and upload the file, then refresh Magento's cache via System > Cache Management

That should do it! Of course, some custom templates may pose individual challenges not covered by this post, so if you have further difficulty with your upgrade, go to Magento Expert and get quick answers to your Magento questions from real Magento experts.]]>
Mon, 05 Jul 2010 18:23:52 +0000
<![CDATA[Magento Product Attributes]]> http://magentist.com/magento_help/magento-product-attributes/ Magento is packed with features that allow you to promote and sell your products. The Additional Information tab on the product page is a great example.

Filling out a detailed Product Description is important, but also remember to populate the Additional Information tab with key information about your products. This helps your customers feel more informed, and also boosts your SEO.

You can easily populate this area with content that Magento assignes standardly, such as SKU and Weight, but what if you would like to add further information that is unique to your product? Or even add a large area of text, secondary to your Product Description? Follow these simple steps to create and manage your own custom Magento product attributes:

1) Go to Catalog > Attributes > Manage Attributes and click on Add New Attribute.
2) Complete the form to create your new attribute, then click Save Attribute.
3) Go to Catalog > Attributes > Manage Attribute Sets to add the new attribute to the set you wish to apply it to.
4) Manage your products via Catalog > Manage Products and click on the Attributes tab. This is where you can manage the content of your new attribute per product.

That's about it! If you feel you could use more information, you can also watch this helpful video:



If you're having a hard time, check out http://magentoexpert.com/ for quick answers from real Magento experts.]]>
Wed, 30 Jun 2010 21:11:58 +0000
<![CDATA[Magento Image Compression]]> http://magentist.com/magento_help/magento-image-compression/ Magento image compression on product images has been a big complaint for a lot of people who prefer to use high quality product images on their ecommerce website.

By default, Magento compresses the images you upload to increase loading speed and decrease the server load, but presenting your products with high quality images may just provide the extra push to increase conversions in your store. If you find that your product images are too compressed, you can increase image quality by following these simple steps:

1. Locate the file /app/code/core/Mage/Media/Model/File/Image.php
2. Copy file to /app/code/local/Mage/Media/Model/File/Image.php
3. Find this code in the new file (line 174)
$result = imagejpeg($object->getTmpImage(), $object->getFilePath(true), 80);
4. Replace with this code
$result = imagejpeg($object->getTmpImage(), $object->getFilePath(true), 95);
5. Save the file, upload to your server, and refresh Magento's cache via System > Cache Management.

That's it! If you feel you need more information, check out this thread from the official Magento Forum. Or, for more personalized answers, check out http://magentoexpert.com/ for quick answers from real Magento experts.

]]>
Mon, 28 Jun 2010 22:23:54 +0000
<![CDATA[Magento CE 1.4.1.0 Patches]]> http://magentist.com/magento_help/magento-ce-1.4.1.0-patches/ announced on their official blog that they've created a patch to fix many of the issues users have experienced with Magento CE 1.4.1.0

You can download here from a thread they've started, dealing specifically with the issues in version 1.4.1.0

Magento CE 1.4.1.1 is currently being tested, and is expected for release sometime next week or so, so hold on tight! The new release should fix the errors of 1.4.1.0 addressed by the patch. Users will be able to upgrade to 1.4.1.1 with or without having first applied the patch.

For more information, see the thread.]]>
Thu, 24 Jun 2010 16:13:58 +0000
<![CDATA[Magento Categories Don’t Show Up]]> http://magentist.com/magento_help/magento-categories-dont-show-up/
When you setup categories in Magento and they don't show up on your site's front end, most likely your categories aren't setup properly in the admin.

Here is what you should look for:

1. Set the appropriate root category.

This is done in the following way: go to System > Manage Stores and click on your store (not website and not store view – you must click on the store which will show up in the middle column). Then under "Root Category" there is a drop down with all the root categories you have set up – select the correct one.

2. Magento store categories must be sub categories under root category.

All top level categories must be created as sub categories under the root category. Then you can also create sub categories under your top level categories, and sub sub categories, etc.

3. Delete Magento cache and reindex all data!

Most issues will be resolved once you reindex Magento data and refresh all Magento cache. To reindex Magento data follow these quick steps:

  1. Go to System>Index Management
  2. Click on "select all" in the upper left corner
  3. Under "Action" select "Reindex Data" and click submit
To refresh Magento cache, follow these quick steps: Magento Cache Management

4. Lastly I highly recommend manually deleting all files under var/cache and var/sessions.

And remember to delete your browser's cache and cookies to make sure you are viewing the up to date version of your Magento site!]]>
Tue, 22 Jun 2010 15:19:59 +0000
<![CDATA[Adding A "Home" Navigation Link]]> http://magentist.com/magento_help/how-to-add-a-home-link-in-magento-navigation/

Add Home Link To The Menu Bar

This will allow you to add a Home link in the main navigation bar where product categories are listed. Find the file called top.phtml in the folder at app/design/frontend/default/default/template/catalog/navigation/ and make the following change:

<div class="header-nav-container">
	 <div class="header-nav">
		  <h4 class="no-display"><?php echo $this->__('Category Navigation:') ?></h4>
		  <ul id="nav">
 
		  <!-- HOME BUTTON HACK -->
		  <?php $_anyActive = false; foreach ($this->getStoreCategories() as $_category) { $_anyActive = $_anyActive || $this->isCategoryActive($_category); } ?>
		  <li class="<?php echo !$_anyActive ? 'active' : '' ?>"><a href="<?php echo $this->getUrl('')?>"><?php echo $this->__('Home') ?></a></li>
		  <!-- HOME BUTTON HACK -->
 
		  <?php foreach ($this->getStoreCategories(10) as $_category):?>
				<?php echo $this->drawItem($_category) ?>
		  <?php endforeach ?>
		  </ul>
	 </div>
	 <?php echo $this->getChildHtml('topLeftLinks') ?>
</div>


Add Home Link To The Top Links Bar

This will allow you to add a Home link in the Top Links (My Account | My Wishlist | Etc.) before the My Account.

Find the file called links.phtml in the folder at app/design/frontend/default/default/template/page/template/ and make the following change:

<?php $_links = $this->getLinks(); ?>
<?php if(count($_links)>0): ?>
	 <div>
		  <ul<?php if($this->getName()): ?>):?> id="<?php echo $this->getName() ?>"<?php endif;?>>
		 
		  <!-- HOME BUTTON HACK -->
		  <li class="first"><a href="<?php echo $this->getUrl('')?>"><?php echo $this->__('Home') ?></a></li>
		  <!-- HOME BUTTON HACK -->
		 
				<?php foreach($_links as $_link): ?>
					 <li <?php if($_link->getIsLast()): ?> class="last"<?php endif; ?><?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
				<?php endforeach; ?>
		  </ul>
	</div>
<?php endif; ?>

NOTE: The if statement in the foreach loop has changed since "Home" will always be first, it wasn’t needed. Also note that the <li> for the "Home" link automatically gets the class "first". ]]>
Fri, 20 Nov 2009 17:38:11 +0000
<![CDATA[Cache Management]]> http://magentist.com/magento_help/magento-cache-management/

What is a cache?

A cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, it can be used in the future by accessing the cached copy rather than re-fetching or recomputing the original data.

This can create a problem when updating files on websites because the cache may include a backup of out-of-date files. On Magento websites, front-end changes (such as updates to .css files or images) that are not being reflected when viewing the site can usually be corrected by clearing the cache of the browser you are using to view the site.

If you are making back-end changes to a Magento site (such as updates to .phtml or .xml files, or installing an extension) and clearing your browser's cache is still not reflecting the changes in your browser, try refreshing Magento's cache system. This is not the same as your browser's cache. This is a separate cache system that Magento keeps on your server to speed up the rendering of the site.

How do I refresh my browser's cache?

On most Windows browsers, such as Internet Explorer, Firefox, and Chrome, you may access the browser's cache management by pressing Ctrl+Shift+Delete. On Safari 4.x, click on the gear icon in the upper-right corner of the screen and select "Reset Safari."

How do I refresh Magento's cache?

To refresh Magento's cache system, log in to your admin panel and navigate to System > Cache Management. In the Cache Control box, there's a drop-down menu labeled All Cache. Select "Refresh," then click the orange Save Cache Settings button in the top right corner of the screen. This will force Magento to build a new cache of the site using all the current files on the server, and should thus reflect any changes you have made.]]>
Tue, 17 Nov 2009 18:43:58 +0000
<![CDATA[Reading Magento Files In Dreamweaver]]> http://magentist.com/magento_help/reading-magento-files-in-dreamweaver/ PHP code (with coloring, hinting, et al) as well as allow you to see the design in code view if desired. Below are three steps to follow.*

IMPORTANT NOTES: This guide is for Dreamweaver on Windows (XP or Vista) or Mac OS X. Note: I have excluded version numbers from the file locations shown, and if you are using a version older than Dreamweaver 9 (CS3) replace “Adobe” with “Macromedia” in the file locations shown. Some spaces have also been removed to keep the references on one line.

* Dreamweaver 4 users: if you are using the archaic Dreamweaver 4, you only need to follow step one. However, it's highly recommended that you just upgrade to version 8, CS3 or newer for superb CSS and Web Standards support.

* Vista may need to edit files by running notepad as Administrator, however this requirement is not common and if encountered, may be avoidable by following these steps after a fresh restart. However, if unavoidable, simply go to Start > All Programs > Accessories, and then right click on Notepad and select “Run as Administrator”. Once notepad is open, use File > Open to browse to the applicable file before making the necessary changes.

Step One: Add .phtml to extension.txt in your Application Data

Open the following extension configuration file in a notepad and change the lines as specified below:

XP: Documents and Settings > [user] > Application Data > Adobe Dreamweaver > Configuration > extensions.txt

NOTE: If you cannot see the Application Data Folder, go to Tools → Folder Options → View and make sure that Show Hidden Files and Folders is checked.

Vista: Users > [user] > AppData > Roaming > Adobe > Dreamweaver 9 > Configuration > Extensions.txt

Mac OS X: Users > [Home Folder] >Library > Application Support > Adobe > Dreamweaver [Your Version] > [en_US or other locale (only for version CS4)] > Configuration > Extensions.txt

In the first line add PHTML like so:

HTM,HTML,SHTM,SHTML, ... ,TXT,PHP,PHP3,PHP4,PHP5,PHTML,JSP,WML,TPL, ... ,MASTER:All Documents

In the PHP Files line add PHTML like so:

PHP,PHP3,PHP4,PHP5,TPL,PHTML:PHP Files

Step Two: Add .phtml to the extension.txt configuration file

This file is pretty much exactly like the extensions.txt file located in Dreamweaver's Application Data folder, except it is in Dreamweaver's Program Files folder, inside a configuration folder. Just as in Step One, find the file and change the lines as specified below.

XP, Vista: Program Files > Adobe > Dreamweaver [Your Version] > configuration > Extensions.txt

Mac OS X: Applications > Adobe Dreamweaver [Your Version] > configuration > Extensions.txt

In the first line add PHTML like so:

HTM,HTML,SHTM,SHTML, ... ,TXT,PHP,PHP3,PHP4,PHP5,PHTML,JSP,WML,TPL, ... ,MASTER:All Documents

In the PHP Files line add PHTML like so:

PHP,PHP3,PHP4,PHP5,TPL,PHTML:PHP Files

Step Three: Add PHTML to MMDocumentTypes.xml

This file is an XML file which should be located in:

XP, Vista: Program Files > Adobe > Dreamweaver [Your Version] > configuration > DocumentTypes > MMDocumentTypes.xml

Mac OS X: Applications > Adobe Dreamweaver [Your Version] > configuration > DocumentTypes > MMDocumentTypes.XML

Note: Dreamweaver 8 users on Windows may also need to apply these changes to: C:Documents and Settings > [user name] > Application Data > Macromedia > Dreamweaver 8 > Configuration > Document Types > MMDocumentTypes.xml

Add PHTML to this line (approx. line 75) twice, like so:

<documenttype id="PHP_MySQL" servermodel="PHP MySQL" 
internaltype="Dynamic"
winfileextension="php,php3,php4,php5,phtml"

macfileextension="php,php3,php4,php5,phtml" file="Default.php" 
writebyteordermark="false">;
</documenttype>


Restart or Open Dreamweaver and you shouldn't have any problems with PHTML files any longer.]]>
Wed, 11 Nov 2009 22:07:29 +0000
<![CDATA[Installing An Extension Using An Extension Key]]> http://magentist.com/magento_help/installing-a-magento-extention-using-an-extension-key/
Get Extension Key
  1. Find extension in Magento Connect: Click on the extension name to view the extension’s details.
  2. Get Extension Key Click on Extension Key button. Extension key is what MagentoConnect uses to identify the package in PEAR.
  3. Check the box to agree to the extension license agreement
  4. Click on the Get Extension Key again.
  5. Select selection key displaying in the text box and copy.
Download and Installation
  1. Navigate to your Magento Admin Panel and select Manage Extension under the System Menu
  2. After logging in with your Admin login, paste in the extension key you copied and click the “Install” button.
Manage Existing Packages
You can also manage your previously-installed extensions in this interface: reinstall, uninstall or upgrade extensions for which a new release has been issued.]]>
Wed, 11 Nov 2009 19:55:16 +0000
<![CDATA[Getting Started]]> http://magentist.com/magento_help/getting-started-with-magento/
1. First, you'll want to ensure that you have the appropriate platform and environment set up to accommodate Magento. See Magento System Requirements to get started.

2. After checking your system, see our Magento Installation Guide for help with setting up Magento on your server.

3. Once Magento is up and running on your site, you can install your Magento Expert theme using the instructions provided. For general theme installation instructions, you may refer to the following help post: How To Install A Theme

And that's it! Now you're ready to set up your products and start selling on your new ecommerce website!]]>
Fri, 06 Nov 2009 20:35:25 +0000
<![CDATA[SEO Tips]]> http://magentist.com/magento_help/magento-seo-tips/ Search Engine Optimization, or SEO, is the process of improving your website's rank in search engine result pages such as Google and Yahoo. In this article, I will list some quick and easy techniques that can help you accomplish higher page rankings and increase traffic to your web site.

All SEO techniques can be divided into 2 main categories: on-page SEO techniques, and off-page SEO techniques.

On-page SEO

Step 1 - Page Title and URL

  • Use friendly URLs for your website's pages such as www.yourdomain.com/website-design and NOT your www.domain.com/page2.html
  • Check the length of your page title. If it’s under 50 characters then you should add an additional word. The maximum recommended length for page titles is 70 characters. Something thats related to your site such as ‘Shirts’, ‘Flowers’, ‘Web Design’, ‘Coupons’, ‘Envelopes’, or even a name of a local town or county would be a great addition.
  • Make sure your key phrase is at the beginning of your title. Rather than 'Website Temple - Search Engine Optimization' go for 'Search Engine Optimization by Website Temple'. Google prefers key phrases as close to the beginning of your title as possible.

Step 2 Meta Data

  • Keywords - Make the keywords specific to every page they are on. Ensure that your most important phrases are at the beginning.
  • Description - Make sure the main keyword you want your page found for is as close to the beginning of the description as possible. Ideally it should start in the first 3 words.

Step 3 - Good Content

  • Headings and Subheadings
    • Ensure you have only one h1 (heading 1) tag on each page. Subsequent headings can be wrapped around other heading tags such as (H2, H3, H4, H5, H6).
    • Check that every heading relates to your content directly below it. So if a heading contains a keyword, make sure this keyword is in the first sentence below the heading.
  • Internal Linking
    • When linking to other pages within your website, don’t just call them ‘products’, ’services’, ‘gallery’ etc. Try adding an additional word to these to describe the page the link goes to. Something like ‘Marketing Products’, ‘SEO Services’, ‘Web Design Gallery’. These describe the page that the link goes to in better detail.
  • External Linking
    • Links to high rankings sites that are relevant to the content of your page. This may be a link to a news website that talks about the same topic or even Wikipedia.

Off-page SEO

Step 4 - Inbound linking

  • Create quality traffic to your site via 3rd party websites - talk about your business and your website on forums that relate to your industry, blogs, etc… Quality inbound links will not only bring visitors to your site, they will also vastly improve your website ranking on major search engines as they will consider your website as popular and relevant.
  • Submit your website to directories and web galleries.
]]>
Fri, 06 Nov 2009 15:12:26 +0000
<![CDATA[How To Install A Theme]]> http://magentist.com/magento_help/how-to-install-a-magento-theme/ To install your theme in your Magento website, follow these simple steps:

  1. Install Magento
    Install Magento onto your site and create a Website, Store, and Store View. For more information on how to install Magento, see the Magento Installation Guide.

  2. Upload Your Theme
    After installing Magento on your site, upload your theme files to the appropriate folders, following the folder structure in which the theme is provided.

  3. Activate Your Theme
    Access the Admin Panel and navigate to System > Configuration. Select your Store View from the Current Configuration Scope drop-down menu in the upper left corner. Click on "Design" under the "General" section of the left side navigation. Under the "Themes" section, uncheck all of the check boxes titled "Use website." In each text field, enter the name of the folders containing the theme you wish to use.

  4. Setup Your Homepage
    From the top navigation, navigate to CMS > Manage Pages. Click on the "+ Add New Page" button. Enter your desired page title. For the home page, be sure to set your SEF URL Identifier as "home" and select your store view. Select "Custom Design" from the left side navigation and set Layout to "1 column." Return to General Information and enter the HTML for your homepage in the text area labeled "Content." Set the Status to "Enabled" and click on the "Save Page" button in the upper right corner to save and activate your homepage.

That's it! Congratulations! Just set up your categories and products, and you now have a beautiful, fully functioning ecommerce website!

]]>
Mon, 19 Oct 2009 19:01:36 +0000
<![CDATA[Magento Installation Guide]]> http://magentist.com/magento_help/magento-installation-guide/
  • Please refer to Magento's system requirements to ensure you have the appropriate platform and environment set up.
  • Download the .zip or .tar.gz file from the Magento website and decompress it.
  • Upload the Magento web files to your web server via FTP
  • Create a MySQL database and user/password for Magento This step varies by hosting provider and is out of the scope of this document. Consult your provider's support/documentation for instructions on how to do this.
  • Ensure that the file magento/var/.htaccess, the directories magento/app/etc, magento/var, and all the directories under magento/media are writable by the web server. To do so, navigate to the directory with your FTP client. Then locate the function "Change Permissions" or "Change Mode" in your FTP client and select it. Once you find the function, you must set the permissions so the web server can write to this file. There are two typical ways of representing file permissions in Linux:
    • As a number (eg, 755)
    • As a series of permissions categorized into user, group, and other
    If your FTP client uses the first representation, set the permissions on each directory to be 777, or 0777.
  • Use your web browser to surf to the Magento installation wizard. If you've uploaded the Magento files to http://www.example.com/magento/, then the wizard will be located here: http://www.example.com/magento/install/.
  • Once in the wizard, you can configure various system-level settings that are required for Magento to function. Most options will be intelligently guessed for you, but you're free to override any settings that don't look right. At the very least, change the database parameters in the first box “Database connection” to match those of the database you set up in Step 3.
  • Success! You've completed a basic Magento install. You can now visit the administration backend and begin configuring your new online store.
  • UPDATE: If you have installed Version 1.0.19700, you should follow the instructions to install the patch which fixes a known issue with the compare products feature.
  • ** IMPORTANT: Catalog price rules and many other features in Magento require periodical execution of scheduled task. Please refer to this article for information on cronjob setup: http://www.magentocommerce.com/wiki/how_to_setup_a_cron_job
  • ]]>
    Wed, 14 Oct 2009 17:09:41 +0000
    <![CDATA[Magento System Requirements]]> http://magentist.com/magento_help/magento-system-requirements/ The following is a list of software required to successfully operate the Magento ecommerce platform:

    • Supported Operating Systems:
      • Linux x86, x86-64
    • Supported Web Servers:
      • Apache 1.3.x
      • Apache 2.0.x
      • Apache 2.2.x
    • Supported Browsers:
      • Microsoft Internet Explorer 6 and above
      • Mozilla Firefox 2.0 and above
      • Apple Safari 2.x
      • Google Chrome
      • Adobe Flash browser plug-in should be installed
    • PHP Compatibility:
      • 5.2
      • Required extensions:
        • PDO_MySQL
        • simplexml
        • mcrypt
        • hash
        • GD
        • DOM
        • iconv
        • SOAP (if Webservices API is to be used)
      • Safe_mode off
      • Memory_limit 32M or more
    • MySQL:
      • 4.1.20 or newer
      • InnoDB storage engine
    • SSL:
      • If HTTPS is used to work in the admin, SSL certificate should be valid. Self-signed SSL certificates are not supported
    • Server - hosting - setup:
      • Ability to run scheduled jobs (crontab) with PHP 5
      • Ability to override options in .htaccess files
    ]]>
    Wed, 14 Oct 2009 15:11:00 +0000