<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Magento Design and Development &#187; Google</title>
	<atom:link href="http://inchoo.net/tag/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://inchoo.net</link>
	<description>Magento Design and Magento Development Professionals - Inchoo</description>
	<lastBuildDate>Wed, 23 May 2012 06:32:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Geocoding Customer Addresses in Magento via Google Maps</title>
		<link>http://inchoo.net/ecommerce/magento/geocoding-customer-addresses-in-magento-via-google-maps/</link>
		<comments>http://inchoo.net/ecommerce/magento/geocoding-customer-addresses-in-magento-via-google-maps/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 14:35:22 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[map]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=11874</guid>
		<description><![CDATA[Geocoding is the process of finding associated geographic coordinates (often expressed as latitude and longitude) from other geographic data, such as street addresses, or zip codes (postal codes)&#8230; so says &#8230;]]></description>
			<content:encoded><![CDATA[<p>Geocoding is the process of finding associated geographic coordinates (often expressed as latitude and longitude) from other geographic data, such as street addresses, or zip codes (postal codes)&#8230; so says Wikipedia. Geocoding an address is pretty simple if you are using Google Maps API. Since all we do here is Magento, let me show you how easily you can geocode customer address.<span id="more-11874"></span></p>
<p>We will start with adding the Gmap.php helper to our extension:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/**
 * @author Branko Ajzele &lt;ajzele@gmail.com&gt;
 */
class Inchoo_Extension_Helper_Gmap extends Mage_Core_Helper_Abstract
{
    const GOOGLE_MAPS_HOST = 'maps.google.com';
    const CONFIG_PATH_GOOGLE_MAPS_API_KEY = 'inchoo_google/maps/api_key';

    public function getGoogleMapsApiKey()
    {
        return Mage::getStoreConfig(self::CONFIG_PATH_GOOGLE_MAPS_API_KEY);
    }

    /**
     *
     * @param Mage_Customer_Model_Address $address
     * @param boolean $saveCoordinatesToAddress
     * @param boolean $forceLookup
     * @return array Returns the array of float values like {[0] =&gt; float(18.4438156) [1] =&gt; float(45.5013644)}
     */
    public function fetchAddressGeoCoordinates(Mage_Customer_Model_Address $address, $saveCoordinatesToAddress = true, $forceLookup = false)
    {
        /**
         * USAGE EXAMPLE

            $customer = Mage::getModel('customer/customer');
            $customer-&gt;setWebsiteId(Mage::app()-&gt;getWebsite()-&gt;getId());
            $customer-&gt;loadByEmail('some-email@domain.com');

            Mage::helper('inchoo/gmap')-&gt;fetchAddressGeoCoordinates($customer-&gt;getDefaultBillingAddress())

         */

        $coordinates = array();

        if ($address-&gt;getId() &amp;&amp; $address-&gt;getGmapCoordinatePointX() &amp;&amp; $address-&gt;getGmapCoordinatePointY() &amp;&amp; $forceLookup == false) {
            $coordinates = array($address-&gt;getGmapCoordinatePointX(), $address-&gt;getGmapCoordinatePointY());
        } else if (!$address-&gt;getGmapCoordinatePointX() &amp;&amp; !$address-&gt;getGmapCoordinatePointY())
            OR ($address-&gt;getId() &amp;&amp; $address-&gt;getGmapCoordinatePointX() &amp;&amp; $address-&gt;getGmapCoordinatePointY() &amp;&amp; $forceLookup == true)) {

            $lineAddress = $address-&gt;getStreet1(). ', '.$address-&gt;getPostcode().' '.$address-&gt;getCity().', '.$address-&gt;getCountry();

            $client = new Zend_Http_Client();
            $client-&gt;setUri('http://'.self::GOOGLE_MAPS_HOST.'/maps/geo');
            $client-&gt;setMethod(Zend_Http_Client::GET);
            $client-&gt;setParameterGet('output', 'json');
            $client-&gt;setParameterGet('key', $this-&gt;getGoogleMapsApiKey());
            $client-&gt;setParameterGet('q', $lineAddress);

            $response = $client-&gt;request();

            if ($response-&gt;isSuccessful() &amp;&amp; $response-&gt;getStatus() == 200) {
                $_response = json_decode($response-&gt;getBody());
                $_coordinates = @$_response-&gt;Placemark[0]-&gt;Point-&gt;coordinates;

                if (is_array($_coordinates) &amp;&amp; count($_coordinates) &gt;= 2) {

                    $coordinates = array_slice($_coordinates, 0, 2);

                    if ($saveCoordinatesToAddress) {
                        try {
                            $address-&gt;setGmapLng($coordinates[0]);
                            $address-&gt;setGmapLat($coordinates[1]);

                            $address-&gt;save();
                        } catch (Exception $e) {
                            Mage::logException($e);
                        }
                    }
                }
            }
        }

        return $coordinates;
    }
}
</pre>
<p>As you can see above in the code, function getGoogleMapsApiKey() pulls the API key info from my system configuration. I will not show you that part here. So for the sake of simplicity if you do not know how to code a configuration for your module you can just return a raw API key string here (surely this approach is then just for testing/playing not on production).</p>
<p>Since this helper references the two non-defualt-existing attributes on the address we will need to add those attributes. We do so trough install/upgrade scripts (you know, the files under app/code/{codePool}/Company/Extension/sql/extension_setup/ folder). I will not give you the full example of the file and it&#8217;s corresponding config.xml entry, as you should know how to do it yourself already, rather just the partial code that goes into the install/upgrade script in order to add the two missing customer address attributes:</p>
<pre class="brush: php; title: ; notranslate">
//Add attribute that will be used for Google Maps as a coordinate lng
$installer-&gt;addAttribute('customer_address', 'gmap_lng', array(
    'type'     =&gt; 'varchar',
    'input'    =&gt; 'hidden',
    'visible'  =&gt; false,
    'required' =&gt; false
));
//Add attribute that will be used for Google Maps as a coordinate lat
$installer-&gt;addAttribute('customer_address', 'gmap_lat', array(
    'type'     =&gt; 'varchar',
    'input'    =&gt; 'hidden',
    'visible'  =&gt; false,
    'required' =&gt; false
));
</pre>
<p>Next, we will add the observer to the proper _beforeSave() dispatched event of the Mage_Customer_Model_Address model class. Since Mage_Customer_Model_Address extends the Mage_Customer_Model_Address_Abstract which defines the &#8220;protected $_eventPrefix = &#8216;customer_address&#8217;;&#8221; we can easily conclude the all it takes is to create observer for &#8220;customer_address_save_before&#8221; event (Mage_Core_Model_Abstract::_beforeSave() &#8230; we have Mage::dispatchEvent($this-&gt;_eventPrefix.&#8217;_save_before&#8217;, $this-&gt;_getEventData());).</p>
<p>So we add something like this to the config.xml file of our extension:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;global&gt;

    &lt;events&gt;
        &lt;customer_address_save_before&gt;
            &lt;observers&gt;
                &lt;inchoo_observer_customer_address_save_before&gt;
                    &lt;type&gt;singleton&lt;/type&gt;
                    &lt;class&gt;Inchoo_Extension_Model_Observer&lt;/class&gt;
                    &lt;method&gt;geocodeAddress&lt;/method&gt;
                &lt;/inchoo_observer_customer_address_save_before&gt;
            &lt;/observers&gt;
        &lt;/customer_address_save_before&gt;
    &lt;/events&gt;

&lt;/global&gt;
</pre>
<p>Then we create the observer Inchoo_Extension_Model_Observer with something like:</p>
<p>Within that observer we simply need to call something like:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
class Inchoo_Extension_Model_Observer
{
	public function geocodeAddress()
	{
		Mage::helper('inchoo/gmap')
			-&gt;fetchAddressGeoCoordinates($observer-&gt;getEvent()-&gt;getCustomerAddress());

		return $this;
	}
}
</pre>
<p>Basically that&#8217;s it. Now each time an address is saved in Magento, there should be a lookup on Google Maps API in order to fetch the longitude and latitude coordinates. Please note, that all of this is just to fetch the coordinates and save them under the address. Showing the actual map somewhere on the frontend or backend requires a bit more input.</p>
<p>To show the Google Map on the frontend with the proper location marker shown on the map you need two things. First we need to add the script like shown below to the head part of the page:</p>
<pre class="brush: php; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.googleapis.com/maps/api/js?key=&lt;?php echo Mage::helper('inchoo/gmap')-&gt;getGoogleMapsApiKey() ?&gt;&amp;sensor=false&quot;&gt;&lt;/script&gt;
</pre>
<p>Then finally we need to add something like:</p>
<pre class="brush: php; title: ; notranslate">

&lt;div id=&quot;address&lt;?php echo $_address-&gt;getId() ?&gt;-gmap&quot; style=&quot;width:480px; height:480px;&quot;&gt;&lt;/div&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
//&lt;![CDATA[

	Event.observe(window, 'load', function() {

			  var myLatlng = new google.maps.LatLng(&lt;?php echo $_address-&gt;getGmapLat() ?&gt;,&lt;?php echo $_address-&gt;getGmapLng() ?&gt;);
			  var myOptions = {
				zoom: 4,
				center: myLatlng,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			  }
			  var map = new google.maps.Map(document.getElementById(&quot;address&lt;?php echo $_address-&gt;getId() ?&gt;-gmap&quot;), myOptions);

			  var marker = new google.maps.Marker({
				  position: myLatlng,
				  map: map,
				  title:&quot;Address Location&quot;
			  });

	});
//]]&gt;
&lt;/script&gt;
</pre>
<p>And that&#8217;s it. Please note, the code above might not be fully copy paste, check the JavaScript when you implement it, and test if your customer address attributes are installed correctly. This article is not for Magento beginners so if you experience some difficulties implementing this approach, please consult the <a href="http://www.magentocommerce.com/knowledge-base">Magento Knowledge Base</a> first.</p>
<p><em>P.S. I was playing with this on Magento CE 1.6.1.0.</em></p>
<p>Hope this was helpful. Cheers.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/geocoding-customer-addresses-in-magento-via-google-maps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Recent Changes in Google Analytics &#8211; Real Time, Keyword Not Provided, Search Engine Optimization</title>
		<link>http://inchoo.net/online-marketing/recent-changes-in-google-analytics-real-time-keyword-not-provided-search-engine-optimization/</link>
		<comments>http://inchoo.net/online-marketing/recent-changes-in-google-analytics-real-time-keyword-not-provided-search-engine-optimization/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 10:04:39 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=11089</guid>
		<description><![CDATA[A few interesting changes have happened within Google Analytics in the past few weeks, and I&#8217;d like to write them down and explain it as clearly as I can for &#8230;]]></description>
			<content:encoded><![CDATA[<p>A few interesting changes have happened within Google Analytics in the past few weeks, and I&#8217;d like to write them down and explain it as clearly as I can for the online store owners and other people reading our blog. <span id="more-11089"></span></p>
<h3>1. Real Time Analytics</h3>
<p>Some of you who requested to be included into the Real Time Google Analytics beta recently received an e-mail with the happy news that real time data reports are now showing in your accounts. We were among the lucky bunch. In order to see it, you need to switch to the new Google Analytics interface (the red link in the top right) if you haven&#8217;t so far. </p>
<p><a href="http://inchoo.net/wp-content/uploads/2011/10/real-time-analytics.png"><img src="http://inchoo.net/wp-content/uploads/2011/10/real-time-analytics-600x340.png" alt="" title="real-time-analytics" width="600" height="340" class="alignnone size-medium wp-image-11090" /></a></p>
<p>From what I can tell, real-time Analytics will be extremely useful whenever you&#8217;re starting a new campaign and promoting something aggressively, trying out which channel works best, or trying out which time of the day is the best for your marketing activities. You can get some nice data from it, and it really works real time, just like advertised. I tweeted a link and few seconds later, the traffic from t.co (twitter&#8217;s shortening service) went wild and perfectly corelated with the data of which URLs are being visited the most right now. </p>
<h3>2. Keyword (Not provided.)</h3>
<p>Nop, this is not the data from a non-linked AdWords account, this is actually organic search data from logged-in users. Google decided to protect the privacy of their logged-in users, redirecting their search queries to https and not providing the keyword they used in the Google Analytics data. This is terrible for website owners since we get less data, but good for the user as the user&#8217;s privacy is even more protected right now. The problem is, data was anonymous anyways and such a &#8220;protection&#8221; was really unnecessary. Also, PPC campaigns still show data for keywords from logged-in users, which means only organic privacy is protected (Dear Google, WTF?). Only possible explanation that I can think of is that Google wants to protect the data of how they personalize the search results, meaning PPC ads are not personalized while organic results are. </p>
<p><strong>How much data is actually being protected this way?</strong></p>
<p>From the data I can gather, and data publicly available, only 1-2% of organic traffic will be shown as &#8220;(Not provided.)&#8221;. This means the number of users that are searching through Google while logged-in is really low. </p>
<h3>3. Traffic Sources &#8211; Search Engine Optimization</h3>
<p>You probably noticed the new tab under the traffic sources in the new Analytics user interface. It&#8217;s called &#8220;Search Engine Optimization&#8221;. It can integrate with your Google Webmaster Tools account and data. The data you get from it is far from accurate and more of an approximation, but there are no &#8220;(Not provided.)&#8221; keywords for logged-in users in there (Again Google, why? Why not Zoidberg?). </p>
<p>Some people ask why is the average position for some top keywords so low. The thing is, the way they calculate average position is kind of stupid, data actually seams much more accurate once you understand this. In case your website appears on more than one spot in the SERP, all will be counted and avarage will be made from it. Meaning, if inchoo.net&#8217;s pages appear on first 8 results for keyword &#8220;inchoo&#8221;, the avarage position is not 1st, but rather the avarage of all of these positions, around 4th place. </p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/online-marketing/recent-changes-in-google-analytics-real-time-keyword-not-provided-search-engine-optimization/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How do rel=&#8221;next&#8221; and rel=&#8221;prev&#8221; work?</title>
		<link>http://inchoo.net/online-marketing/how-do-relnext-and-relprev-work/</link>
		<comments>http://inchoo.net/online-marketing/how-do-relnext-and-relprev-work/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 11:20:41 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=10741</guid>
		<description><![CDATA[When dealing with online stores with a lot of products, pagination on category pages can get really problematic for search engines. Link juice gets distributed all over the place, your &#8230;]]></description>
			<content:encoded><![CDATA[<p>When dealing with online stores with a lot of products, pagination on category pages can get really problematic for search engines. Link juice gets distributed all over the place, your internal linking structure is terrible, indexing of deep page products is difficult and anchor text values that pagination sends have nothing to do with the content of the page, but there was no better way to do it. It came down to choosing between SEO and usability. <span id="more-10741"></span></p>
<p>Yesterday, Google explained how they look at rel=&#8221;next&#8221; and rel=&#8221;prev&#8221; in an <a href="http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html">official blog post</a>. It solves the great problem of paginated products on category pages of online stores.</p>
<p>The most important thing you need to know is that Google will treat all pages inside the pagination that have rel=&#8221;next&#8221; and rel=&#8221;prev&#8221; implemented as one unit in regards to link attribution. This means you no longer need to worry about dispersing your internal link juice to paginated pages or external link juice that&#8217;s coming into these pages. They will treat them as a whole and collect link juice from all of them, while shoving the most relevant page in the search result (most often the 1st page of the paginated unit). </p>
<p>I&#8217;m actually very impressed by this solution, since the best thing we could do so far was implement a rel=&#8221;canonical&#8221; which is really applicable in some <a href="http://inchoo.net/ecommerce/magento/magento-and-relcanonical/" title="Magento and rel="canonical"">rare cases I described here</a>, but not in most of the pagination problems (since content of the page 2 is often completely different than the content of the page 1 etc.).</p>
<p>The technical implementation of rel=&#8221;prev&#8221; and rel=&#8221;next&#8221; is very similar to the way you implement rel=&#8221;canonical&#8221;:</p>
<p>It is placed in the head in this form:</p>
<pre class="brush: xml; title: ; notranslate">&lt;link rel=&quot;next&quot; href=&quot;http://www.example.com/article?story=abc&amp;page=2&quot;/&gt;</pre>
<p>and</p>
<pre class="brush: xml; title: ; notranslate">&lt;link rel=&quot;prev&quot; href=&quot;http://www.example.com/article?story=abc&amp;page=1&quot;/&gt;</pre>
<p>The first page, obviously, should not have a rel=&#8221;prev&#8221;.</p>
<p>UPDATE: Google made a video that explains a lot of things about rel prev and rel next:</p>
<p><iframe width="600" height="315" src="http://www.youtube.com/embed/njn8uXTWiGg" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Need help with your Magento store&#8217;s SEO? <a href="http://inchoo.net/get-a-quote/">Request a quote</a>!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/online-marketing/how-do-relnext-and-relprev-work/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Facebook Avatar &#8211; I have returned</title>
		<link>http://inchoo.net/fun-zone/facebook-avatar-i-have-returned/</link>
		<comments>http://inchoo.net/fun-zone/facebook-avatar-i-have-returned/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 07:15:51 +0000</pubDate>
		<dc:creator>Davor Budimcic</dc:creator>
				<category><![CDATA[Fun & Events]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=10587</guid>
		<description><![CDATA[Over the last few months there was a lot of buzz when Google Plus arrived. Initial reaction was very positive and it became hugely popular over the night. Many people &#8230;]]></description>
			<content:encoded><![CDATA[<p>Over the last few months there was a lot of buzz when Google Plus arrived. Initial reaction was very positive and it became hugely popular over the night. Many people saw it as Facebook demise and you could see a lot fo funny videos of Google+ vs. Facebook fight. One of the avatars became quite popular at that time. The one that says &#8220;I have moved&#8221; and has Google Plus logo. Even three Inchooers placed it on their own profiles.</p>
<p>However, we are recognizing a trend where those same users are now putting their profile pictures back and continuing to use Facebook like nothing happened. For those traitors, we made this avatar. It would be fair if they would now wear it at least the same time as they wore &#8220;I have moved&#8221; one. Enjoy!<br />
<span id="more-10587"></span></p>
<div style="border: 1px solid #090; background: #fff; padding: 7px;"><a href="http://inchoo.net/wp-content/uploads/2011/08/returned.jpg"><img class="aligncenter size-full wp-image-10589" title="I have returned - Facebook Avatar" src="http://inchoo.net/wp-content/uploads/2011/08/returned.jpg" alt="I have returned - Facebook Avatar" width="300" height="298" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/fun-zone/facebook-avatar-i-have-returned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customer reviews and their influence on conversion rate and search engine CTR</title>
		<link>http://inchoo.net/ecommerce/customer-reviews-and-their-influence-on-conversion-rate-and-search-engine-ctr/</link>
		<comments>http://inchoo.net/ecommerce/customer-reviews-and-their-influence-on-conversion-rate-and-search-engine-ctr/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 10:27:14 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[conversion rate optimization]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=10557</guid>
		<description><![CDATA[Customer&#8217;s reviews are a powerful tool that strongly affect your online store&#8217;s conversion rates and &#8211; if implemented properly &#8211; click through rates in your SERPs. This article will cover &#8230;]]></description>
			<content:encoded><![CDATA[<p>Customer&#8217;s reviews are a powerful tool that strongly affect your online store&#8217;s conversion rates and &#8211; if implemented properly &#8211; click through rates in your SERPs. This article will cover just how much do they affect it in numbers and point out some of the best practices in acquiring these reviews and implementing them properly into your store. <span id="more-10557"></span> </p>
<h2>Third party review services vs on-site reviews</h2>
<p>Well known eCommerce solutions such as <a href="http://inchoo.net/category/ecommerce/magento/">Magento</a> have a built-in product review functionality. The problem with it is pretty obvious: the store owner can moderate the reviews and some customers are well aware of that. This means you could simply disapprove or edit negative reviews, which sounds as an awesome feature but it makes experienced users doubt in the quality of your review score. </p>
<h2>Amount of reviews and its affect on Conversion Rate</h2>
<p>Does amount of reviews matter? Short answer: Yes it does! An aggregate rating of 5 out of 10 stars means a lot more if 50 people left the review compared to the same rating with only 5 reviews. Most customers are very aware of this and you&#8217;d be amazed just how much a large number of reviews can increase your conversion rate. </p>
<p><img src="http://inchoo.net/wp-content/uploads/2011/08/ecommercereviews.png" style="margin-right: 5px;" alt="" title="ecommercereviews" width="420" height="311" class="alignleft size-full wp-image-10559" />According to <a href="http://www.reevoo.com/">Reevoo</a>, a company that analysed 2.5 million customer reviews, there is no cap on how many reviews add to your conversion rate. The more you have the higher the rate is. Interesting part of their research is where they concluded that there is a very small difference in the range of 10 and 30 reviews in regards to improving your conversion rate (~3% vs ~3.3%). </p>
<p>As you can see in the graph on the left, it&#8217;s pretty much the same thing if you have 20 or 30 reviews, but conversion rate starts going up rapidly after that. There is also a pretty big difference in range of 0-10 reviews and above, raising your conversion rate by 1% with the first 10 reviews on a product. </p>
<h2>User reviews&#8217; affect on SEO and search engine CTR</h2>
<p>The affect of user reviews on SEO is pretty obvious. It&#8217;s a fresh, unique piece of user generated content that search engines can index and it enhances and enriches the content you provided in product description. It also enables you to rank for &#8220;product name review&#8221; keywords which are in some niches used pretty often. Product reviews bring another thing with them that doesn&#8217;t have much to do with SEO: they improve the rate at which users click on your result in the search. </p>
<p>So lets move on to the numbers. Just how much improvement in CTR can you expect after implementing reviews? According to Reevoo, we&#8217;re talking about <strong>10-20% increase in CTR</strong>, depending on the amount of reviews and aggregate score. </p>
<h2>How do you display reviews in the search results?</h2>
<p><img src="http://inchoo.net/wp-content/uploads/2011/08/serpreviews.png" alt="" title="serpreviews" width="619" height="101" class="alignnone size-full wp-image-10567" /></p>
<p>In June, I wrote <a href="http://inchoo.net/ecommerce/what-is-schema-org-and-what-about-my-rich-snippets/">about Schema.org</a>, a new microdata standard that 3 major search engines agreed upon. Schema.org has standardised markup for reviews and agregate reviews that can be implemented into your online store. If you&#8217;re trying to implement them into Magento, you can <a href="http://inchoo.net/contact/">talk to us</a>, we have lots of experience with it. </p>
<p><strong>Need help with your Magento store&#8217;s SEO? <a href="http://inchoo.net/get-a-quote/">Request a quote</a>!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/customer-reviews-and-their-influence-on-conversion-rate-and-search-engine-ctr/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>HowTo &#8211; &#8220;Google +1&#8243; extension for Magento</title>
		<link>http://inchoo.net/ecommerce/magento/howto-google-1-extension-for-magento/</link>
		<comments>http://inchoo.net/ecommerce/magento/howto-google-1-extension-for-magento/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 19:26:31 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[plus]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=10501</guid>
		<description><![CDATA[Embedding Google&#8217;s +1 button is pretty easy and straightforward. All it takes is to include 2 code snippets in your web page. One goes in the header of the page, &#8230;]]></description>
			<content:encoded><![CDATA[<p>Embedding Google&#8217;s +1 button is pretty easy and straightforward. All it takes is to include 2 code snippets in your web page. One goes in the header of the page, and the other one goes to wherever where you want the +1 button to render. To do so all you need is to follow the official Google guideline outlined <a href="http://www.google.com/intl/en/webmasters/+1/button/index.html">here</a>.</p>
<p>With that in mind, let&#8217;s build us Magento extension, preferably the <a href="http://inchoo.net/ecommerce/magento/developing-extensions-that-react-unobtrusively-with-magento/">non-obtrusive</a> one.<span id="more-10501"></span></p>
<p>We will call our extension &#8220;GPlusOne&#8221; and place it under the &#8220;Inchoo&#8221; namespace. Let&#8217;s start by creating the /app/etc/modules/Inchoo_GPlusOne.xml file with the following content:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;config&gt;
    &lt;modules&gt;
        &lt;Inchoo_GPlusOne&gt;
            &lt;active&gt;true&lt;/active&gt;
            &lt;codePool&gt;community&lt;/codePool&gt;
        &lt;/Inchoo_GPlusOne&gt;
    &lt;/modules&gt;
&lt;/config&gt;
</pre>
<p>Now we need to create second file, app/code/community/Inchoo/GPlusOne/etc/<strong>config.xml</strong> with the following content:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;config&gt;
    &lt;modules&gt;
        &lt;Inchoo_GPlusOne&gt;
            &lt;version&gt;1.0.0.0&lt;/version&gt;
        &lt;/Inchoo_GPlusOne&gt;
    &lt;/modules&gt;
    &lt;global&gt;
        &lt;blocks&gt;
            &lt;inchoo_gplusone&gt;
                &lt;class&gt;Inchoo_GPlusOne_Block&lt;/class&gt;
            &lt;/inchoo_gplusone&gt;
        &lt;/blocks&gt;
    &lt;/global&gt;

    &lt;frontend&gt;
        &lt;layout&gt;
            &lt;updates&gt;
                &lt;inchoo_gplusone&gt;
                    &lt;file&gt;inchoo/gplusone.xml&lt;/file&gt;
                &lt;/inchoo_gplusone&gt;
            &lt;/updates&gt;
        &lt;/layout&gt;
    &lt;/frontend&gt;
&lt;/config&gt;
</pre>
<p>As you can see we are declaring a new layout file here, called gplusone.xml which we will place under the app/design/frontend/default/default/layout/inchoo/<strong>gplusone.xml</strong>, with the following content:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;layout version=&quot;1.0.0&quot;&gt;
    &lt;catalog_product_view&gt;
        &lt;reference name=&quot;head&quot;&gt;
            &lt;block type=&quot;core/template&quot; name=&quot;inchoo_gplusone_head&quot; template=&quot;inchoo/gplusone_head.phtml&quot; /&gt;
        &lt;/reference&gt;
        &lt;reference name=&quot;alert.urls&quot;&gt;
            &lt;block type=&quot;inchoo_gplusone/PlusButton&quot; name=&quot;inchoo_gplusone&quot; /&gt;
        &lt;/reference&gt;
    &lt;/catalog_product_view&gt;
&lt;/layout&gt;
</pre>
<p>Carefully observing the gplusone.xml layout update shows that my layout is to &#8220;kick in&#8221; only on the product view page. Since embedding the Google +1 Button reguires two scripts to be loaded on page, I&#8217;m splitting them into two view files, app/design/frontend/default/default/template/inchoo/<strong>gplusone_head.phtml</strong> and app/design/frontend/default/default/template/inchoo/<strong>gplusone_button.phtml</strong>.</p>
<p>File app/design/frontend/default/default/template/inchoo/gplusone_head.phtml is loaded into the head area of HTML via ‘reference name=&#8221;head&#8221;&#8216; layout update, having the following content:</p>
<pre class="brush: php; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;https://apis.google.com/js/plusone.js&quot;&gt;&lt;/script&gt;
</pre>
<p>While file app/design/frontend/default/default/template/inchoo/gplusone_button.phtml is loaded into the content area of the page, more specifically &#8220;alert.urls&#8221; block via ‘reference name=&#8221;alert.urls&#8221;. For more detailed understanding one should study the app/design/frontend/base/default/layout/catalog.xml file and its ‘<catalog_product_view translate="label">&#8216; section. Content of gplusone_button.phtml  is as follows:</p>
<pre class="brush: php; title: ; notranslate">
&lt;g:plusone &lt;?php if($size = $this-&gt;getSize()) { echo ' size=&quot;'.$size.'&quot;'; } ?&gt;&gt;&lt;/g:plusone&gt;
</pre>
<p>Which bring&#8217;s us to the final file needed to get this running, app/code/community/Inchoo/GPlusOne/Block/<strong>PlusButton.php</strong> with the following content:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

class Inchoo_GPlusOne_Block_PlusButton extends Mage_Core_Block_Template
{
    /**
     * Constructor. Set template.
     */
    protected function _construct()
    {
        parent::_construct();
        $this-&gt;setTemplate('inchoo/gplusone_button.phtml');
    }

    public function getSize()
    {
        //Here we can implement the code to read the config values for sizes
        return '';
    }
}
</pre>
<p>If you look at the gplusone_button.phtml file you will see it has a call towards getSize() method from Inchoo_GPlusOne_Block_PlusButton class. At the moment, this method does nothing. It&#8217;s merely here for possible extension of this simple module. Given that Google +1 button supports various sizes (&#8220;small&#8221;, &#8220;medium&#8221;, &#8220;tall&#8221;, or no size definition for standard size) you can easily add some extra logic to this extension to have it read some config values that could be set from Magento admin.</p>
<p>The point of this article was not to give you a full blown extension ready to be used in instance, rather to show you the amount of effort needed to implement something as simple as Google +1 button in Magento the right way (not to say that this is the best possible way).</p>
<p>And here is the screenshot of the final result.</p>
<p><a href="http://inchoo.net/wp-content/uploads/2011/07/gplus.png"><img src="http://inchoo.net/wp-content/uploads/2011/07/gplus-300x150.png" alt="" title="gplus" width="300" height="150" class="alignnone size-thumbnail wp-image-10505" /></a></p>
<p>Hope someone finds it useful. </p>
<p>Cheers.</catalog_product_view></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/howto-google-1-extension-for-magento/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>What is schema.org and what about my rich snippets?</title>
		<link>http://inchoo.net/ecommerce/what-is-schema-org-and-what-about-my-rich-snippets/</link>
		<comments>http://inchoo.net/ecommerce/what-is-schema-org-and-what-about-my-rich-snippets/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 07:37:59 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[bing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=9733</guid>
		<description><![CDATA[Schema.org has recently been announced by Google. It&#8217;s an innitiative by Google, Bing and Yahoo to create one microdata standard for structuring web content. Basically it&#8217;s the good old Google &#8230;]]></description>
			<content:encoded><![CDATA[<p>Schema.org has recently been <a href="http://googlewebmastercentral.blogspot.com/2011/06/introducing-schemaorg-search-engines.html">announced by Google</a>. It&#8217;s an innitiative by Google, Bing and Yahoo to create one microdata standard for structuring web content. Basically it&#8217;s the good old Google Rich Snippets, but followed by all three major search engines and it also brought a lot of new markup. <span id="more-9733"></span></p>
<h2>eCommerce related microdata markup</h2>
<p>Schema.org brings several interesting opportunities to structure eCommerce data. Here are some that would be very useful in a Magento store:</p>
<p><strong>Schema.org <a href="http://schema.org/Product">Product</a> markup &#8211; example</strong>:</p>
<pre class="brush: php; title: ; notranslate">&lt;div itemscope itemtype=&quot;http://schema.org/Product&quot;&gt;
  &lt;span itemprop=&quot;name&quot;&gt;Kenmore White 17&quot; Microwave&lt;/span&gt;
  &lt;img src=&quot;kenmore-microwave-17in.jpg&quot; /&gt;
  &lt;div itemprop=&quot;aggregateRating&quot;
    itemscope itemprop=&quot;http://schema.org/AggregateRating&quot;&gt;
   Rated &lt;span itemprop=&quot;ratingValue&quot;&gt;3.5&lt;/span&gt;/5
   based on &lt;span itemprop=&quot;reviewCount&quot;&gt;11&lt;/span&gt; customer reviews
  &lt;/div&gt;

  &lt;div itemprop=&quot;offers&quot; itemscope itemtype=&quot;http://schema.org/Offer&quot;&gt;
    &lt;span itemprop=&quot;price&quot;&gt;$55.00&lt;/span&gt;
    &lt;link itemprop=&quot;availability&quot; href=&quot;http://schema.org/InStock&quot; /&gt;In stock
  &lt;/div&gt;

  Product description:
  &lt;span itemprop=&quot;description&quot;&gt;0.7 cubic feet countertop microwave.
  Has six preset cooking categories and convenience features like
  Add-A-Minute and Child Lock.&lt;/span&gt;

  Customer reviews:

  &lt;div itemprop=&quot;reviews&quot; itemscope itemtype=&quot;http://schema.org/Review&quot;&gt;
    &lt;span itemprop=&quot;name&quot;&gt;Not a happy camper&lt;/span&gt; -
    by &lt;span itemprop=&quot;author&quot;&gt;Ellie&lt;/span&gt;,
    &lt;time itemprop=&quot;publishDate&quot; datetime=&quot;2011-04-01&quot;&gt;April 1, 2011&lt;/time&gt;
    &lt;div itemprop=&quot;reviewRating&quot; itemscope itemtype=&quot;http://schema.org/Rating&quot;&gt;
      &lt;meta itemprop=&quot;worstRating&quot; content = &quot;1&quot;&gt;
      &lt;span itemprop=&quot;ratingValue&quot;&gt;1&lt;/span&gt;/
      &lt;span itemprop=&quot;bestRating&quot;&gt;5&lt;/span&gt;stars
  &lt;/meta&gt;&lt;/div&gt;
  &lt;span itemprop=&quot;description&quot;&gt;The lamp burned out and now I have to replace it.
  &lt;div itemprop=&quot;reviews&quot; itemscope itemtype=&quot;http://schema.org/Review&quot;&gt;
    &lt;span itemprop=&quot;name&quot;&gt;Value purchase&lt;/span&gt; -
    by &lt;span itemprop=&quot;author&quot;&gt;Lucas&lt;/span&gt;,
    &lt;time itemprop=&quot;publishDate&quot; datetime=&quot;2011-03-25&quot;&gt;March 25, 2011&lt;/time&gt;
    &lt;div itemprop=&quot;reviewRating&quot; itemscope itemtype=&quot;http://schema.org/Rating&quot;&gt;
      &lt;meta itemprop=&quot;worstRating&quot; content = &quot;1&quot;/&gt;
      &lt;span itemprop=&quot;ratingValue&quot;&gt;4&lt;/span&gt;/
      &lt;span itemprop=&quot;bestRating&quot;&gt;5&lt;/span&gt;stars
    &lt;/div&gt;
    &lt;span itemprop=&quot;description&quot;&gt;Great microwave for the price. It is
      small and fits in my apartment.&lt;/span&gt;
  &lt;/div&gt;
  ...
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</pre>
<p><strong>Schema.org <a href="http://schema.org/Review">Review</a> markup &#8211; example</strong>:</p>
<pre class="brush: php; title: ; notranslate">&lt;div itemscope itemtype=&quot;http://schema.org/Product&quot;&gt;
  &lt;span itemprop=&quot;name&quot;&gt;Kenmore White 17&quot; Microwave&lt;/span&gt;
  &lt;img src=&quot;kenmore-microwave-17in.jpg&quot; /&gt;
  &lt;div itemprop=&quot;aggregateRating&quot;
    itemscope itemprop=&quot;http://schema.org/AggregateRating&quot;&gt;
   Rated &lt;span itemprop=&quot;ratingValue&quot;&gt;3.5&lt;/span&gt;/5
   based on &lt;span itemprop=&quot;reviewCount&quot;&gt;11&lt;/span&gt; customer reviews
  &lt;/div&gt;

  &lt;div itemprop=&quot;offers&quot; itemscope itemtype=&quot;http://schema.org/Offer&quot;&gt;
    &lt;span itemprop=&quot;price&quot;&gt;$55.00&lt;/span&gt;
    &lt;link itemprop=&quot;availability&quot; href=&quot;http://schema.org/InStock&quot; /&gt;In stock
  &lt;/div&gt;

  Product description:
  &lt;span itemprop=&quot;description&quot;&gt;0.7 cubic feet countertop microwave.
  Has six preset cooking categories and convenience features like
  Add-A-Minute and Child Lock.&lt;/span&gt;

  Customer reviews:

  &lt;div itemprop=&quot;reviews&quot; itemscope itemtype=&quot;http://schema.org/Review&quot;&gt;
    &lt;span itemprop=&quot;name&quot;&gt;Not a happy camper&lt;/span&gt; -
    by &lt;span itemprop=&quot;author&quot;&gt;Ellie&lt;/span&gt;,
    &lt;time itemprop=&quot;publishDate&quot; datetime=&quot;2011-04-01&quot;&gt;April 1, 2011&lt;/time&gt;
    &lt;div itemprop=&quot;reviewRating&quot; itemscope itemtype=&quot;http://schema.org/Rating&quot;&gt;
      &lt;meta itemprop=&quot;worstRating&quot; content = &quot;1&quot;&gt;
      &lt;span itemprop=&quot;ratingValue&quot;&gt;1&lt;/span&gt;/
      &lt;span itemprop=&quot;bestRating&quot;&gt;5&lt;/span&gt;stars
  &lt;/div&gt;
  &lt;span itemprop=&quot;description&quot;&gt;The lamp burned out and now I have to replace it.
  &lt;div itemprop=&quot;reviews&quot; itemscope itemtype=&quot;http://schema.org/Review&quot;&gt;
    &lt;span itemprop=&quot;name&quot;&gt;Value purchase&lt;/span&gt; -
    by &lt;span itemprop=&quot;author&quot;&gt;Lucas&lt;/span&gt;,
    &lt;time itemprop=&quot;publishDate&quot; datetime=&quot;2011-03-25&quot;&gt;March 25, 2011&lt;/time&gt;
    &lt;div itemprop=&quot;reviewRating&quot; itemscope itemtype=&quot;http://schema.org/Rating&quot;&gt;
      &lt;meta itemprop=&quot;worstRating&quot; content = &quot;1&quot;/&gt;
      &lt;span itemprop=&quot;ratingValue&quot;&gt;4&lt;/span&gt;/
      &lt;span itemprop=&quot;bestRating&quot;&gt;5&lt;/span&gt;stars
    &lt;/div&gt;
    &lt;span itemprop=&quot;description&quot;&gt;Great microwave for the price. It is
      small and fits in my apartment.&lt;/span&gt;
  &lt;/div&gt;
  ...
&lt;/div&gt;
</pre>
<p><strong>Schema.org <a href="http://schema.org/AggregateRating"> Aggregate Rating</a> markup &#8211; example</strong>:</p>
<pre class="brush: php; title: ; notranslate">
&lt;div itemscope itemtype=&quot;http://schema.org/Restaurant&quot;&gt;
  &lt;span itemprop=&quot;name&quot;&gt;GreatFood&lt;/span&gt;

  &lt;div itemprop=&quot;aggregateRating&quot; itemscope itemtype=&quot;http://schema.org/AggregateRating&quot;&gt;
    &lt;span itemprop=&quot;ratingValue&quot;&gt;4&lt;/span&gt; stars -
    based on &lt;span itemprop=&quot;reviewCount&quot;&gt;250&lt;/span&gt; reviews
  &lt;/div&gt;

  &lt;div itemprop=&quot;address&quot; itemscope itemtype=&quot;http://schema.org/PostalAddress&quot;&gt;
    &lt;span itemprop=&quot;streetAddress&quot;&gt;1901 Lemur Ave&lt;/span&gt;
    &lt;span itemprop=&quot;addressLocality&quot;&gt;Sunnyvale&lt;/span&gt;,
    &lt;span itemprop=&quot;addressRegion&quot;&gt;CA&lt;/span&gt; &lt;span itemprop=&quot;postalCode&quot;&gt;94086&lt;/span&gt;
  &lt;/div&gt;
  &lt;span itemprop=&quot;telephone&quot;&gt;(408) 714-1489&lt;/span&gt;
  &lt;a itemprop=&quot;url&quot; href=&quot;http://www.dishdash.com&quot;&gt;www.greatfood.com&lt;/a&gt;

  Hours:
  &lt;time itemprop=&quot;openingHours&quot; datetime=&quot;Mo-Sa 11:00-14:30&quot;&gt;Mon-Sat 11am - 2:30pm&lt;/time&gt;
  &lt;time itemprop=&quot;openingHours&quot; datetime=&quot;Mo-Th 17:00-21:30&quot;&gt;Mon-Thu 5pm - 9:30pm&lt;/time&gt;
  &lt;time itemprop=&quot;openingHours&quot; datetime=&quot;Fr-Sa 17:00-22:00&quot;&gt;Fri-Sat 5pm - 10:00pm&lt;/time&gt;

  Categories:
  &lt;span itemprop=&quot;servesCuisine&quot;&gt;
    Middle Eastern
  &lt;/span&gt;,
  &lt;span itemprop=&quot;servesCuisine&quot;&gt;
    Mediterranean
  &lt;/span&gt;

  Price Range: &lt;span itemprop=&quot;priceRange&quot;&gt;$$&lt;/span&gt;
  Takes Reservations: Yes
&lt;/div&gt;
</pre>
<h2>What if I already implemented Google Rich Snippets?</h2>
<p>We have a tutorial on <a href="http://inchoo.net/ecommerce/magento/google-rich-snippets-in-magento/">how to do that</a>. For now, we&#8217;re sure Google will support the good old GRS format in the foreseeable future, but if you&#8217;re doing some major upgrade on your website or you&#8217;re starting out from the scratch, I&#8217;d switch to schema.org markup. </p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/what-is-schema-org-and-what-about-my-rich-snippets/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Google Rich Snippets in Magento</title>
		<link>http://inchoo.net/ecommerce/magento/google-rich-snippets-in-magento/</link>
		<comments>http://inchoo.net/ecommerce/magento/google-rich-snippets-in-magento/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 08:34:51 +0000</pubDate>
		<dc:creator>Vedran Subotic</dc:creator>
				<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Front-End]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=8769</guid>
		<description><![CDATA[Probably most of the store owners would like to have their products to be highlighted among other search results in search engines. Google&#8217;s Rich snippets can help you to get &#8230;]]></description>
			<content:encoded><![CDATA[<p>Probably most of the store owners would like to have their products to be highlighted among other search results in search engines.<br />
Google&#8217;s Rich snippets can help you to get desired results. All you need is to integrate them in your Magento store.<br />
<span id="more-8769"></span></p>
<p>About rich snippets and structured data you can read more <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=99170">here</a>.</p>
<p>Sample of Breadcrumbs integration into magento is pretty simple,<br />
code of &#8220;template/page/breadcrumbs.phtml&#8221;</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if($crumbs &amp;&amp; is_array($crumbs)): ?&gt;
&lt;div class=&quot;breadcrumbs&quot;&gt;
    &lt;ul xmlns:v=&quot;http://rdf.data-vocabulary.org/#&quot;&gt;
        &lt;?php foreach($crumbs as $_crumbName=&gt;$_crumbInfo): ?&gt;
            &lt;li class=&quot;&lt;?php echo $_crumbName ?&gt;&quot; typeof=&quot;v:Breadcrumb&quot;&gt;

            &lt;?php if($_crumbInfo['link']): ?&gt;
                &lt;a href=&quot;&lt;?php echo $_crumbInfo['link'] ?&gt;&quot; title=&quot;&lt;?php echo $this-&gt;htmlEscape($_crumbInfo['title']) ?&gt;&quot; rel=&quot;v:url&quot; property=&quot;v:title&quot;&gt;
                    &lt;span&gt;&lt;?php echo $this-&gt;htmlEscape($_crumbInfo['label']) ?&gt;&lt;/span&gt;
                &lt;/a&gt;
            &lt;?php elseif($_crumbInfo['last']): ?&gt;
                &lt;span rel=&quot;v:child&quot; property=&quot;v:title&quot;&gt;
                        &lt;strong&gt;&lt;?php echo $this-&gt;htmlEscape($_crumbInfo['label']) . ' for sale' ?&gt;&lt;/strong&gt;
                &lt;/span&gt;
            &lt;?php else: ?&gt;
                &lt;span&gt;&lt;?php echo $this-&gt;htmlEscape($_crumbInfo['label']) ?&gt;&lt;/span&gt;
            &lt;?php endif; ?&gt;
            &lt;?php if(!$_crumbInfo['last']): ?&gt;
                &lt;span&gt;/ &lt;/span&gt;
            &lt;?php endif; ?&gt;
            &lt;/li&gt;
        &lt;?php endforeach; ?&gt;
    &lt;/ul&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;
</pre>
<p>Rich snippets types that you can implement:</p>
<ul>
<li>            Reviews</li>
<li>            Review ratings</li>
<li>            People</li>
<li>            Events</li>
<li>            Recipes</li>
<li>            Shopping and products</li>
<li>            Marking up products for rich snippets</li>
<li>            Organizations</li>
<li>            Breadcrumbs</li>
<li>            Videos: Facebook Share and RDFa</li>
</ul>
<p>Rich Snippets Testing Tool is at url: <a href="http://www.google.com/webmasters/tools/richsnippets">http://www.google.com/webmasters/tools/richsnippets</a><br />
We&#8217;ll take an example of <a href="http://www.keepshooting.com/military-surplus/gas-masks">gas masks</a>. Just copy/paste the link:<br />
<a href="http://www.keepshooting.com/finnish-m-61-military-gas-mask.html">http://www.keepshooting.com/finnish-m-61-military-gas-mask.html</a><br />
into input field and you&#8217;ll see results like this:<br />
<a href="http://inchoo.net/wp-content/uploads/2011/03/grst.png"><img src="http://inchoo.net/wp-content/uploads/2011/03/grst-600x608.png" alt="" title="grst" width="600" height="608" class="alignleft size-medium wp-image-8840" /></a></p>
<p>Snippets that you can implement on Magento store are breadcrumbs, products, reviews and ratings as you can see on the described example.</p>
<p>Enjoy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/google-rich-snippets-in-magento/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>How to move existing WordPress site to another server</title>
		<link>http://inchoo.net/wordpress/how-to-move-existing-wordpress-site-to-another-server/</link>
		<comments>http://inchoo.net/wordpress/how-to-move-existing-wordpress-site-to-another-server/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 10:21:53 +0000</pubDate>
		<dc:creator>Darko Goles</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Tools & Frameworks]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=8773</guid>
		<description><![CDATA[Some experienced developers would say: &#8220;Piece of cake , I can do it for about 15 minutes!&#8221; But, is it really so easy and trivial task? It&#8217;s not so heavy, &#8230;]]></description>
			<content:encoded><![CDATA[<p>Some experienced developers would say: &#8220;Piece of cake , I can do it for about 15 minutes!&#8221;<br />
But, is it really so easy and trivial task?</p>
<p>It&#8217;s not so heavy, but you have to pay attention on some really important things and because of that,  I would like to say that it is not heavy but more sensitive task to do.</p>
<p>So, let&#8217;s start with article.</p>
<p><span id="more-8773"></span></p>
<p>Imagine this situation:<br />
We have one live site on <em>http://somedomainold.com</em> with fully functional WordPress installation, many articles, plugins installed on the site. Let&#8217;s say that current database is bigger than 500 Mb. We have access to control panel, ftp and also ssh on live server.<br />
Now we want now to copy same WordPress installation to<em> http://portal.somedomain.com</em> (into sub-domain of new domain on new server).</p>
<p>Why did I mentioned SSH?</p>
<p>Because I don&#8217;t want to download database file and then upload it again on new test server but I want to transfer whole data without downloading it.<br />
(Of course, in this case we must have ftp and ssh access to new server also).</p>
<p><em>TIP: For those that never used SSH before, I would advice that use Google for basic UNIX terminal commands, because they would need them. <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </em></p>
<p>First of all, we have to back up live site (just in case something goes wrong) and also we can use backup to transfer both database backup and files backup to new server without problems.<br />
Often it could be done through control panel of live site. If not, there are alternatives, but I will talk just about  first mentioned case for now.</p>
<p>When backup of whole site is finished, copy that &#8216;somefile.tgz&#8217; backup file into public folder either from control panel or from some root ftp access so we could download that file via URL (for example: www.somedomainold.com/somefile.tgz.  (Do not forget to delete it after transferring!)<br />
Next, we have to connect by SSH to new server with our credentials (I often use Putty for SSH access because it is relatively simple, but there are more tools available for free).<br />
Fire up Putty and enter basic connection information in sessions category: Host-name / IP address of server we will connect to and press &#8216;Open&#8217; button to start the session.</p>
<p><img class="alignleft size-full wp-image-8777" title="moving_wp1" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp1.jpg" alt="" width="600" height="183" /></p>
<p><img class="alignleft size-full wp-image-8778" title="moving_wp2" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp2.jpg" alt="" width="600" height="87" /></p>
<p>If all went right you should see console like this:</p>
<p><img class="alignleft size-full wp-image-8779" title="moving_wp3" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp3.jpg" alt="" width="600" height="89" /></p>
<p>Now it&#8217;s time to do some UNIX stuff.<br />
First we want to choose our folder on server where we will host out new wordpress installation. (Using comands “cd”, “ls” will give us that possibility).<br />
Next, we need to is &#8216;download&#8217; that backup file from old server to new. We can do it with “wget” command in terminal.</p>
<p><img class="alignleft size-full wp-image-8780" title="moving_wp4" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp4.jpg" alt="" width="600" height="40" /></p>
<p>After that we want to decompress our downloaded backup package and move site files from inside unpacked folder to our sub-domain directory and also extract our sqldump file so we could restore it on our mysql database on new server. (I didn&#8217;t mention that we should first create mysql database and assign a database user with root credentials to it and one of the easiest possibilities is to do that through control panel of new site).<br />
For file decompressing you can use &#8216;tar -zxvf yourfile.tar.gz &#8216;.</p>
<p>Because I went too deep in details, let&#8217;s back to main theme.</p>
<p>After these &#8216;few&#8217; steps, we should ensure that all is on it&#8217;s place, so finally we should finish with folder structure like this:</p>
<p>/html/portal/<br />
here should be out wordpress installation (index.php, .htaccess, folders wp-content etc.)</p>
<p>(By the way, folder &#8216;html&#8217; is in our case root domain public directory and folder name portal is our sub-domain folder where http://portal.somedomain.com points to). Why is this important? Because of .htaccess setup later in this article.</p>
<p>Next we should replace all occurrences of &#8216;http://somedomainold.com&#8217; with &#8216;http://portal.somedomain.com&#8217; in our sqldump file.<br />
First time I tried to do that with &#8216;nano&#8217; text editor in SSH terminal, but database was too big for that editor, so Putty and SSH connection crashed every time and I decided to take advantage of another tool in terminal, so I used &#8216;vi&#8217; editor for that purpose because it won&#8217;t load whole file in memory, just visible part so terminal wouldn&#8217;t crash.<br />
(Use Google to search for &#8216;find and replace with vi&#8217; tutorial).</p>
<p>After replacing domain names in sql dump file save it and exit vi editor.</p>
<p>So, now we have files of site on right place and also sql dump file ready to restore to new database.<br />
(of course while &#8216;vi&#8217; editor is open we should probably add line on top of existing sql statements: USE new_database_name; )</p>
<p>Let&#8217;s Google again for instructions how to restore sql dump file to mysql using console. There are plenty of tutorials doing that.</p>
<p>When restoring database is completed we are almost ready to start our transferred wordpress site.</p>
<p>Open up your browser and try to enter to wp-admin:  http://portal.somedomain.com/wp-admin,<br />
log in with old site credentials and check general settings for updating URLs of the site. Also check permalinks settings and save it again.<br />
If new wordpress site is not working or displays only frontpage and not other pages in menu, probably is some problem with rewrite and / or permissions in .htaccess file. So in that case – delete .htaccess file or rename it via ftp and go to wp-admin &#8211; &gt; settings &#8211; &gt; permalinks again and save it again and new .htaccess file will be created  with some wordpress lines.<br />
From my experience because our installation was in root domain before and now is on subdomain,<br />
we need to add subdomain folder name before /index.php in .htaccess file (like on image) and all should be OK.</p>
<p><img class="alignleft size-full wp-image-8781" title="moving_wp5" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp5.jpg" alt="" width="600" height="354" /></p>
<p>Maybe there are easier ways to move site, maybe there are better ways, but I felt that I have to write about that from my experience before, so thank you for reading <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/wordpress/how-to-move-existing-wordpress-site-to-another-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ZendFramework example on using Google URL Shortener service</title>
		<link>http://inchoo.net/tools-frameworks/zendframework-example-on-using-google-url-shortener-service/</link>
		<comments>http://inchoo.net/tools-frameworks/zendframework-example-on-using-google-url-shortener-service/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 00:20:52 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Tools & Frameworks]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=10033</guid>
		<description><![CDATA[Seems like URL shorteners have gain extreme popularity with web services like Twitter. Not to mention the fact that long URLs are somewhat hard to pass along. They are also &#8230;]]></description>
			<content:encoded><![CDATA[<p>Seems like URL shorteners have gain extreme popularity with web services like Twitter. Not to mention the fact that long URLs are somewhat hard to pass along. They are also harder to verbalize in a conversation, and above all in some cases they are almost impossible to remember.</p>
<p>There are quite a large number of URL shorteners out there these days, mostly free. One of the freshest is Google’s URL shortener. This article is not about outlining the features that make this shortener better then the other ones (as I am sure some offer more features at the moment). This article is merely for the purpose of showing you how easy it is to use the Google URL Shortener service via your ZendFramework libraries.<span id="more-10033"></span></p>
<p>Basically all we need is the instance of Zend_Http_Client class and preferably the API key for Google URL Shortener. For API key, just follow the instructions outlined here.</p>
<p>Here are the few actions you can with the Google URL Shortener at the moment:</p>
<ul>
<li>Shorten a long URL</li>
<li>Expand a short URL</li>
<li>Look up a short URL&#8217;s analytics</li>
<li>Look up a user&#8217;s history</li>
</ul>
<p><strong><em>Example #1</em> &#8211; Shorten a long URL</strong></p>
<pre class="brush: php; title: ; notranslate">
$client = new Zend_Http_Client();

$client-&gt;setUri('https://www.googleapis.com/urlshortener/v1/url');
$client-&gt;setHeaders(Zend_Http_Client::CONTENT_TYPE, 'application/json');
$client-&gt;setMethod(Zend_Http_Client::POST);

$payload = json_encode(array(
    'longUrl' =&gt; 'http://activecodeline.net/',
    'key' =&gt; '___YOUR_API_KEY_HERE___'
));

$client-&gt;setRawData($payload);

$response = $client-&gt;request();
</pre>
<p>Below you can see the example of response for the above request.</p>
<pre class="brush: php; title: ; notranslate">
Zend_Debug::dump($response, '$response');

/**
$response object(Zend_Http_Response)#225 (5) {
  [&quot;version&quot;:protected] =&gt; string(3) &quot;1.1&quot;
  [&quot;code&quot;:protected] =&gt; int(200)
  [&quot;message&quot;:protected] =&gt; string(2) &quot;OK&quot;
  [&quot;headers&quot;:protected] =&gt; array(11) {
    [&quot;Cache-control&quot;] =&gt; string(46) &quot;no-cache, no-store, max-age=0, must-revalidate&quot;
    [&quot;Pragma&quot;] =&gt; string(8) &quot;no-cache&quot;
    [&quot;Expires&quot;] =&gt; string(29) &quot;Fri, 01 Jan 1990 00:00:00 GMT&quot;
    [&quot;Date&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 08:06:45 GMT&quot;
    [&quot;Content-type&quot;] =&gt; string(31) &quot;application/json; charset=UTF-8&quot;
    [&quot;X-content-type-options&quot;] =&gt; string(7) &quot;nosniff&quot;
    [&quot;X-frame-options&quot;] =&gt; string(10) &quot;SAMEORIGIN&quot;
    [&quot;X-xss-protection&quot;] =&gt; string(13) &quot;1; mode=block&quot;
    [&quot;Server&quot;] =&gt; string(3) &quot;GSE&quot;
    [&quot;Connection&quot;] =&gt; string(5) &quot;close&quot;
  }
  [&quot;body&quot;:protected] =&gt; string(104) &quot;{
 &quot;kind&quot;: &quot;urlshortener#url&quot;,
 &quot;id&quot;: &quot;http://goo.gl/7rDDa&quot;,
 &quot;longUrl&quot;: &quot;http://activecodeline.net/&quot;
}
&quot;
}

*/
</pre>
<p><strong><em>Example #2</em> &#8211; Expand a short URL</strong></p>
<pre class="brush: php; title: ; notranslate">
$client = new Zend_Http_Client();

$client-&gt;setUri('https://www.googleapis.com/urlshortener/v1/url');
$client-&gt;setMethod(Zend_Http_Client::GET);
$client-&gt;setParameterGet('shortUrl', 'http://goo.gl/7rDDa');
$client-&gt;setParameterGet('key', '___YOUR_API_KEY_HERE___');

$client-&gt;setRawData($payload);

$response = $client-&gt;request();
</pre>
<p>Below you can see the example of response for the above request.</p>
<pre class="brush: php; title: ; notranslate">
Zend_Debug::dump($response, '$response');

/**

$response object(Zend_Http_Response)#225 (5) {
  [&quot;version&quot;:protected] =&gt; string(3) &quot;1.1&quot;
  [&quot;code&quot;:protected] =&gt; int(200)
  [&quot;message&quot;:protected] =&gt; string(2) &quot;OK&quot;
  [&quot;headers&quot;:protected] =&gt; array(11) {
    [&quot;Expires&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 08:37:13 GMT&quot;
    [&quot;Date&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 08:32:13 GMT&quot;
    [&quot;Content-type&quot;] =&gt; string(31) &quot;application/json; charset=UTF-8&quot;
    [&quot;X-content-type-options&quot;] =&gt; string(7) &quot;nosniff&quot;
    [&quot;X-frame-options&quot;] =&gt; string(10) &quot;SAMEORIGIN&quot;
    [&quot;X-xss-protection&quot;] =&gt; string(13) &quot;1; mode=block&quot;
    [&quot;Server&quot;] =&gt; string(3) &quot;GSE&quot;
    [&quot;Cache-control&quot;] =&gt; string(50) &quot;public, max-age=300, must-revalidate, no-transform&quot;
    [&quot;Age&quot;] =&gt; string(2) &quot;48&quot;
    [&quot;Connection&quot;] =&gt; string(5) &quot;close&quot;
  }
  [&quot;body&quot;:protected] =&gt; string(121) &quot;{
 &quot;kind&quot;: &quot;urlshortener#url&quot;,
 &quot;id&quot;: &quot;http://goo.gl/7rDDa&quot;,
 &quot;longUrl&quot;: &quot;http://activecodeline.net/&quot;,
 &quot;status&quot;: &quot;OK&quot;
}
&quot;
}

*/
</pre>
<p><strong><em>Example #3</em> &#8211; Look up a short URL&#8217;s analytics</strong></p>
<pre class="brush: php; title: ; notranslate">
$client = new Zend_Http_Client();

$client-&gt;setUri('https://www.googleapis.com/urlshortener/v1/url');
$client-&gt;setMethod(Zend_Http_Client::GET);
$client-&gt;setParameterGet('shortUrl', 'http://goo.gl/7rDDa');
$client-&gt;setParameterGet('projection', 'FULL');
$client-&gt;setParameterGet('key', '___YOUR_API_KEY_HERE___');

$client-&gt;setRawData($payload);

$response = $client-&gt;request();
</pre>
<p>Below you can see the example of response for the above request.</p>
<pre class="brush: php; title: ; notranslate">
Zend_Debug::dump($response, '$response');

/**

$response object(Zend_Http_Response)#225 (5) {
  [&quot;version&quot;:protected] =&gt; string(3) &quot;1.1&quot;
  [&quot;code&quot;:protected] =&gt; int(200)
  [&quot;message&quot;:protected] =&gt; string(2) &quot;OK&quot;
  [&quot;headers&quot;:protected] =&gt; array(10) {
    [&quot;Expires&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 08:36:40 GMT&quot;
    [&quot;Date&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 08:36:40 GMT&quot;
    [&quot;Cache-control&quot;] =&gt; string(48) &quot;public, max-age=0, must-revalidate, no-transform&quot;
    [&quot;Content-type&quot;] =&gt; string(31) &quot;application/json; charset=UTF-8&quot;
    [&quot;X-content-type-options&quot;] =&gt; string(7) &quot;nosniff&quot;
    [&quot;X-frame-options&quot;] =&gt; string(10) &quot;SAMEORIGIN&quot;
    [&quot;X-xss-protection&quot;] =&gt; string(13) &quot;1; mode=block&quot;
    [&quot;Server&quot;] =&gt; string(3) &quot;GSE&quot;
    [&quot;Connection&quot;] =&gt; string(5) &quot;close&quot;
  }
  [&quot;body&quot;:protected] =&gt; string(2042) &quot;{
 &quot;kind&quot;: &quot;urlshortener#url&quot;,
 &quot;id&quot;: &quot;http://goo.gl/7rDDa&quot;,
 &quot;longUrl&quot;: &quot;http://activecodeline.net/&quot;,
 &quot;status&quot;: &quot;OK&quot;,
 &quot;created&quot;: &quot;2011-02-26T08:06:45.845+00:00&quot;,
 &quot;analytics&quot;: {
  &quot;allTime&quot;: {
   &quot;shortUrlClicks&quot;: &quot;1&quot;,
   &quot;longUrlClicks&quot;: &quot;1&quot;,
   &quot;referrers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Unknown/empty&quot;
    }
   ],
   &quot;countries&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;HR&quot;
    }
   ],
   &quot;browsers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Chrome&quot;
    }
   ],
   &quot;platforms&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Windows&quot;
    }
   ]
  },
  &quot;month&quot;: {
   &quot;shortUrlClicks&quot;: &quot;1&quot;,
   &quot;longUrlClicks&quot;: &quot;1&quot;,
   &quot;referrers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Unknown/empty&quot;
    }
   ],
   &quot;countries&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;HR&quot;
    }
   ],
   &quot;browsers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Chrome&quot;
    }
   ],
   &quot;platforms&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Windows&quot;
    }
   ]
  },
  &quot;week&quot;: {
   &quot;shortUrlClicks&quot;: &quot;1&quot;,
   &quot;longUrlClicks&quot;: &quot;1&quot;,
   &quot;referrers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Unknown/empty&quot;
    }
   ],
   &quot;countries&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;HR&quot;
    }
   ],
   &quot;browsers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Chrome&quot;
    }
   ],
   &quot;platforms&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Windows&quot;
    }
   ]
  },
  &quot;day&quot;: {
   &quot;shortUrlClicks&quot;: &quot;1&quot;,
   &quot;longUrlClicks&quot;: &quot;1&quot;,
   &quot;referrers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Unknown/empty&quot;
    }
   ],
   &quot;countries&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;HR&quot;
    }
   ],
   &quot;browsers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Chrome&quot;
    }
   ],
   &quot;platforms&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Windows&quot;
    }
   ]
  },
  &quot;twoHours&quot;: {
   &quot;shortUrlClicks&quot;: &quot;1&quot;,
   &quot;longUrlClicks&quot;: &quot;1&quot;,
   &quot;referrers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Unknown/empty&quot;
    }
   ],
   &quot;countries&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;HR&quot;
    }
   ],
   &quot;browsers&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Chrome&quot;
    }
   ],
   &quot;platforms&quot;: [
    {
     &quot;count&quot;: &quot;1&quot;,
     &quot;id&quot;: &quot;Windows&quot;
    }
   ]
  }
 }
}
&quot;
}

*/
</pre>
<p>The above 3 examples are pretty easy, and straight forward. Last example, &#8220;Look up a user&#8217;s history&#8221;, requires a bit more finesse as it requires your/user authentication in order to get the proper response. There are several ways you can authenticate (OAuth, ClientLogin). OAuth is the preferred mechanism for logging in and performing actions on behalf of a Google user. </p>
<p>If Oauth is not feasible, you can use ClientLogin. With this mechanism, you give google.com an email and password in exchange for an access token.</p>
<p>In this last example &#8220;Look up a user&#8217;s history&#8221; I will show you how to do it with ClientLogin approach as it is somewhat simpler. However, this does not mean that ClientLogin approach will suite your needs, in which case you should really study the Oauth implementation.</p>
<p><strong><em>Example #4</em> &#8211; Look up a user&#8217;s history</strong></p>
<pre class="brush: php; title: ; notranslate">
$clientLogin = new Zend_Http_Client();

$clientLogin-&gt;setUri('https://www.google.com/accounts/ClientLogin');
$clientLogin-&gt;setMethod(Zend_Http_Client::POST);
$clientLogin-&gt;setHeaders(Zend_Http_Client::CONTENT_TYPE, 'application/x-www-form-urlencoded');
$clientLogin-&gt;setParameterPost('accountType', 'HOSTED_OR_GOOGLE');
$clientLogin-&gt;setParameterPost('Email', '_YOUR_GOOGLE_EMAIL_HERE_');
$clientLogin-&gt;setParameterPost('Passwd', '_YOUR_GOOGLE_PASS_HERE_');
$clientLogin-&gt;setParameterPost('service', 'urlshortener');
$clientLogin-&gt;setParameterPost('source', 'myname-testapp-1.0.1');

$responseLogin = $clientLogin-&gt;request();
$responseLoginBody = $responseLogin-&gt;getBody();

$loginTokens = explode(&quot;\n&quot;, $responseLoginBody);
$authToken = '';

foreach ($loginTokens as $r) {
    $_r = explode(&quot;=&quot;, $r);
    if (count($_r) &gt; 1) {
        if ($_r[0] == 'Auth') {
            $authToken = $_r[1];
        }
    }
}

if (!empty($authToken)) {
    $clientHistory = new Zend_Http_Client();

    $clientHistory-&gt;setUri('https://www.googleapis.com/urlshortener/v1/url/history');
    $clientHistory-&gt;setMethod(Zend_Http_Client::GET);
    $clientHistory-&gt;setHeaders(Zend_Http_Client::CONTENT_TYPE, 'application/json');
    $clientHistory-&gt;setHeaders('Authorization', 'GoogleLogin auth='.$authToken);
    $clientHistory-&gt;setParameterGet('key', '___YOUR_API_KEY_HERE___');

    $responseHistory = $clientHistory-&gt;request();
    $responseHistoryBody = $responseHistory-&gt;getBody();
    //Zend_Debug::dump($responseHistoryBody, '$responseHistoryBody');
    //Zend_Debug::dump($responseHistory, '$responseHistory');
}
</pre>
<p>Below you can see the example of response for the above request.</p>
<pre class="brush: php; title: ; notranslate">
Zend_Debug::dump($responseHistory, '$responseHistory');

/**

$responseHistory object(Zend_Http_Response)#237 (5) {
  [&quot;version&quot;:protected] =&gt; string(3) &quot;1.1&quot;
  [&quot;code&quot;:protected] =&gt; int(200)
  [&quot;message&quot;:protected] =&gt; string(2) &quot;OK&quot;
  [&quot;headers&quot;:protected] =&gt; array(10) {
    [&quot;Expires&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 10:20:34 GMT&quot;
    [&quot;Date&quot;] =&gt; string(29) &quot;Sat, 26 Feb 2011 10:20:34 GMT&quot;
    [&quot;Cache-control&quot;] =&gt; string(49) &quot;private, max-age=0, must-revalidate, no-transform&quot;
    [&quot;Content-type&quot;] =&gt; string(31) &quot;application/json; charset=UTF-8&quot;
    [&quot;X-content-type-options&quot;] =&gt; string(7) &quot;nosniff&quot;
    [&quot;X-frame-options&quot;] =&gt; string(10) &quot;SAMEORIGIN&quot;
    [&quot;X-xss-protection&quot;] =&gt; string(13) &quot;1; mode=block&quot;
    [&quot;Server&quot;] =&gt; string(3) &quot;GSE&quot;
    [&quot;Connection&quot;] =&gt; string(5) &quot;close&quot;
  }
  [&quot;body&quot;:protected] =&gt; string(2943) &quot;{
 &quot;kind&quot;: &quot;urlshortener#urlHistory&quot;,
 &quot;totalItems&quot;: 13,
 &quot;itemsPerPage&quot;: 30,
 &quot;items&quot;: [
  {
   &quot;kind&quot;: &quot;urlshortener#url&quot;,
   &quot;id&quot;: &quot;http://goo.gl/IkFNS&quot;,
   &quot;longUrl&quot;: &quot;http://www.jetbrains.com/phpstorm/whatsnew/index.html&quot;,
   &quot;status&quot;: &quot;OK&quot;,
   &quot;created&quot;: &quot;2011-02-25T09:29:03.995+00:00&quot;
  },
  {
   &quot;kind&quot;: &quot;urlshortener#url&quot;,
   &quot;id&quot;: &quot;http://goo.gl/NpdS9&quot;,
   &quot;longUrl&quot;: &quot;http://www.eclipse.org/egit/?gclid\u003dCPfd-5L_oqcCFZMK3wodkC6_BA&quot;,
   &quot;status&quot;: &quot;OK&quot;,
   &quot;created&quot;: &quot;2011-02-25T09:28:28.545+00:00&quot;
  },
  {
   &quot;kind&quot;: &quot;urlshortener#url&quot;,
   &quot;id&quot;: &quot;http://goo.gl/RiVJH&quot;,
   &quot;longUrl&quot;: &quot;http://www.flickr.com/photos/ajzele/sets/72157626133406912/detail/&quot;,
   &quot;status&quot;: &quot;OK&quot;,
   &quot;created&quot;: &quot;2011-02-25T08:46:47.203+00:00&quot;
  },

*/
</pre>
<p>That’s it. Examples above cover the most of what you can do with the Google URL Shortener API at the moment. Hope you find the article useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/tools-frameworks/zendframework-example-on-using-google-url-shortener-service/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google AdWords free coupon is not really free</title>
		<link>http://inchoo.net/online-marketing/google-adwords-free-coupon-is-not-really-free/</link>
		<comments>http://inchoo.net/online-marketing/google-adwords-free-coupon-is-not-really-free/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 12:32:44 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[AdWords]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[marketing]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=7279</guid>
		<description><![CDATA[What a title, right? When I say Googl&#8217;s AdWords free coupon is not free, I don&#8217;t mean like you&#8217;ll probably spend some of your money afterwards (which is also probably &#8230;]]></description>
			<content:encoded><![CDATA[<p>What a title, right? When I say Googl&#8217;s AdWords free coupon is not free, I don&#8217;t mean like you&#8217;ll probably spend some of your money afterwards (which is also probably true) kind of not free. I mean literally, if Google gives you $100 free coupon, Google will earn $100.<span id="more-7279"></span></p>
<p>There is no trick, no small hidden text, it&#8217;s all out there, perfectly clear. The thing is, it&#8217;s not the person who is receiving the coupon that&#8217;s going to pay Google $100, it&#8217;s other already existing advertisers that are going to do so. </p>
<p>Google AdWords is bid based system. Once you inject more money into it (free coupon), you are automatically raising the keyword bids needed to advertise. So when Google hands out a $100 coupon to a new advertiser, this advertiser&#8217;s competitors who are already Google&#8217;s most valuable paying customers are going to loose $100. Unbelievable, right? Google didn&#8217;t just attract a new customer for free, Google actually earned money by hurting its longterm customers. Do no evil&#8230; right.</p>
<p><img src="http://inchoo.net/wp-content/uploads/2010/12/google1.png" alt="" title="google1" width="620" class="alignnone size-full wp-image-7284" /></p>
<p>Now that you know this fact, you&#8217;re probably not really happy about <a href="http://www.google.com/ads/holiday/">Google&#8217;s new campaign</a> in which they will give $100 coupons to first 1 000 000 small businesses that sign-up for local search advertising. Yes, you got the numbers right, Google will take 100 million from our pockets for this campaign.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/online-marketing/google-adwords-free-coupon-is-not-really-free/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Magento and Google Services Integration – All-In-One Guide</title>
		<link>http://inchoo.net/ecommerce/magento/magento-and-google-services-integration-all-in-one-guide/</link>
		<comments>http://inchoo.net/ecommerce/magento/magento-and-google-services-integration-all-in-one-guide/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 08:46:56 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=6302</guid>
		<description><![CDATA[There are tutorials all around the web as well as at the Inchoo website that guide you through various Google services integration with Magento eCommerce platform. I wanted to unite &#8230;]]></description>
			<content:encoded><![CDATA[<p>There are tutorials all around the web as well as at the Inchoo website that guide you through various Google services integration with Magento eCommerce platform. I wanted to unite all of these resources on one place and also bring something new to the table.<span id="more-6302"></span></p>
<p><strong>In this guide, we&#8217;ll talk about:</strong></p>
<p>1. Google Analytics integration with Magento<br />
2. Google AdWords conversion tracking with Magento<br />
3. Google Base integration with Magento<br />
4. Google&#8217;s Feedburner service integration with Magento<br />
5. Tracking conversions in numbers instead of percentage with Google Analytics custom report</p>
<h3>Google Analytics integration with Magento</h3>
<p>This one is pretty simple. One of the things you might do wrong is go and include Google Analytics the &#8220;hardcore&#8221; way, putting the Google Analytics code directly into the theme file. Magento has its own way of handling Google Analytics integration from the admin panel. <a href="http://inchoo.net/ecommerce/magento/google-analytics-in-magento/">Tomislav wrote a detailed article on how to do it, as well as how to enable eCommerce tracking in your Google Analytics account</a>.</p>
<h3>Google AdWords conversion tracking with Magento</h3>
<p>In case you use Google AdWords to promote your Magento store, you might wish to track conversions directly through AdWords interface. Magento doesn&#8217;t support this by default, however, my coworker <a href="http://inchoo.net/ecommerce/magento/magento-and-google-adwords-conversion-tracking/">Domagoj wrote this awesome Magento module that will enable you to do just that</a>!</p>
<h3>Google Base integration with Magento</h3>
<p>Magento has its own integration with Google Base (Google Product Search), but implementing it is kind of tricky. There are several errors that very often occur. Luckily for you, I wrote this <a href="http://inchoo.net/ecommerce/magento/adding-magento-products-to-google-base/">step by step guide to Google Base integration with Magento</a>, which also tells you how to fix most of the known errors that can happen during the process.</p>
<h3>Google&#8217;s Feedburner service integration with Magento</h3>
<p>RSS feeds are very useful, but are generally used mostly by tech savvy shoppers. If you don&#8217;t have RSS feeds enabled, go to admin section of your Magento store and navigate to System > Configuration > RSS Feeds tab in the left column. You can enable feeds in the RSS Config section. Now you should be able to see an RSS icon on the front-end of your store. If you click on it, it will take you to a special page that lists all of your enabled RSS feeds. </p>
<p>Feedburner is a service that was not-so-recently acquired by Google. It is very useful service that enables you to track the number of subscribers, views and clicks per RSS item. You simply take one or more of your Magento feeds, head over to <a href="http://feedburner.google.com">Feedburner</a>, paste it and burn it. You will need a Google account just like with other Google services. </p>
<p>Google recently announced new experimental Feedburner user interface that I really like. It has enhanced usability and additional features, <a href="http://feedburner.google.com/gfb/">you can access it via this link</a>.</p>
<p>Unfortunately, I can&#8217;t find a good way of easily integrating Feedburner with Magento since no one coded a module that would automatically replace all of your Magento RSS feeds with Feedburner links, so until someone does it, you&#8217;ll need to hardcode it into the template.</p>
<h3>Tracking conversions in numbers instead of percentage with Google Analytics custom report</h3>
<p>It always amazes me how inconsistent Google Analytics interface is. They spend so much time and effort into building an awesome analytical software and yet it lacks some of the most basic reports a person would need. For example, when you set-up a goal in Google Analytics, you can only track goal reach in form of percentage, which can be really painful if you simply wanna see how many transactions came from which source (organic, paid, referral, direct etc.).</p>
<p>This is why I created a custom report that I use a lot that lets me view the exact number of conversions (not percentage) by different sources. If you want such a custom report (and I know you do <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), go to your Google Analytics, choose a project and navigate to Custom Reports (left sidebar) > Manage Custom Reports > Create new custom report (top right corner).</p>
<p>Now place your metrics and dimensions like I did in this screenshot (click on image to enlarge):</p>
<p><a href="http://inchoo.net/wp-content/uploads/2010/10/goalsconversions.png"><img src="http://inchoo.net/wp-content/uploads/2010/10/goalsconversions.png" alt="" title="goalsconversions" width="620" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/magento-and-google-services-integration-all-in-one-guide/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google TV and e-commerce</title>
		<link>http://inchoo.net/ecommerce/google-tv-and-e-commerce/</link>
		<comments>http://inchoo.net/ecommerce/google-tv-and-e-commerce/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 07:44:28 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4677</guid>
		<description><![CDATA[By now, everybody that reads this blog has probably heard of upcoming Google TV, a device that is set to revolutionize the broadcasting industry and finally take it to the &#8230;]]></description>
			<content:encoded><![CDATA[<p>By now, everybody that reads this blog has probably heard of upcoming <a href="http://www.google.com/tv/">Google TV</a>, a device that is set to revolutionize the broadcasting industry and finally take it to the next step &#8211; the world of actual two way interaction. Since we deal with e-commerce here at inchoo, the first thing that popped into my head when I saw what Google TV is was its effect on e-commerce world.<span id="more-4677"></span></p>
<p>Since <a href="http://www.google.com/tv/developer/">Google TV will be able to run Android apps</a>, what should we actually call this kind of shopping &#8211; <strong>e-commerce, m-commerce or tv-commerce</strong>? Well, first of all, your TV is not very mobile, so I guess m-commerce is disqualified as a valid name, no matter it can run apps initially intended for mobile use. E-commerce should be a pretty valid name, since your TV will be connected with the internet so you are actually buying via the internet. I think tv-commerce or TVcommerce would be the most proper name, but it could get confused with &#8220;old tv-commerce&#8221;.</p>
<h3>Marketing and TVcommerce</h3>
<p>I think marketing to the TVcommerce potential buyers will not be much different than marketing to the e-commerce audience. You will have mostly the same mediums for advertising. With TVcommerce, I believe video content will get much more influence on buyers&#8217; behavior which will mostly benefit the <strong>online video publishing industry</strong> that will finally get it&#8217;s deserved share of world&#8217;s advertising budget. TVcommerce solutions, however, will have interfaces similar to the mCommerce applications, rather than eCommerce. </p>
<p>If Google TV  goes mainstream, people like <a href="http://www.youtube.com/user/sxephil">Philip DeFranco</a> that are very strong influences in the online video community as well as among the viewers, will become extremely powerful individuals. I took Philip DeFranco as an example not just because he is one of the most subscribed YouTubers of all time, but also because of the content of his show. He was able to collect 1.1 million subscribers by expressing his opinion about daily news. It&#8217;s his opinion that people want to hear, which means he has a strong influence on people&#8217;s perceptions of brands and products. His influence with Google TV will only grow. It&#8217;s a remarkable power given into the hands of a sole individual. </p>
<p>All things considered, I expect a very turbulent age is ahead of us. We will probably witness the great fight between broadcasting and &#8220;two-way-communication industry&#8221;. Pick a side, get some popcorns and enjoy the match! </p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/google-tv-and-e-commerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento 1.4.0.1 Google Analytics fix</title>
		<link>http://inchoo.net/ecommerce/magento/magento-1-4-0-1-google-analytics-fix/</link>
		<comments>http://inchoo.net/ecommerce/magento/magento-1-4-0-1-google-analytics-fix/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 09:29:56 +0000</pubDate>
		<dc:creator>Ivan Weiler</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4222</guid>
		<description><![CDATA[If you updated to latest Magento 1.4.0.0 or 1.4.0.1 version you may notice that Google Analytics implementation is broken. Here are few easy instructions how to fix this. Navigate to &#8230;]]></description>
			<content:encoded><![CDATA[<p>If you updated to latest Magento 1.4.0.0 or 1.4.0.1 version you may notice that Google Analytics implementation is broken. Here are few easy instructions how to fix this.<br />
<span id="more-4222"></span></p>
<p>Navigate to and open app/code/core/Mage/GoogleAnalytics/Block/Ga.php and add this on line 179</p>
<pre class="brush: php; title: ; notranslate">
var _gaq = _gaq || [];
</pre>
<p><img src="http://inchoo.net/wp-content/uploads/2010/03/google-analytics-fix.png" alt="" title="google-analytics-fix" width="600" height="240" style="margin-bottom:25px;" class="alignleft size-full wp-image-4232" /></p>
<p>Since this bug is already reported and fix can be seen on latest official svn, I don&#8217;t see any harm in modifying core files in this particular situation.<br />
<a href=" http://www.magentocommerce.com/bug-tracking/issue?issue=8658" target="_blank"></p>
<p>http://www.magentocommerce.com/bug-tracking/issue?issue=8658</a></p>
<p><a href="http://svn.magentocommerce.com/source/branches/1.4-trunk/app/code/core/Mage/GoogleAnalytics/Block/Ga.php" target="_blank">http://svn.magentocommerce.com/source/branches/1.4-trunk/app/code/core/Mage/GoogleAnalytics/Block/Ga.php</a></p>
<p>As Magento Team said, changes will be included in next stable release.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/magento-1-4-0-1-google-analytics-fix/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Google, why are you wasting our time?</title>
		<link>http://inchoo.net/online-marketing/google-why-are-you-wasting-our-time/</link>
		<comments>http://inchoo.net/online-marketing/google-why-are-you-wasting-our-time/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 12:04:11 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4127</guid>
		<description><![CDATA[We are witnessing something amazing in the search industry right now. Bing is growing and as the Bing and Yahoo integration goes through, for the first time in a decade, &#8230;]]></description>
			<content:encoded><![CDATA[<p>We are witnessing something amazing in the search industry right now. <a href="http://www.bing.com">Bing</a> is growing and as the Bing and <a href="http://www.yahoo.com">Yahoo</a> integration goes through, for the first time in a decade, <a href="http://www.google.com">Google</a> will get a worthy competitor.<span id="more-4127"></span></p>
<p>While Google&#8217;s algorithm still gives me more relevant results for most of the searches, there are searches where Bing&#8217;s results are much more relevant and spam free.</p>
<p>I think Google&#8217;s biggest disadvantage in this war for the search industry share will be it&#8217;s constant improvements. When we compare the results Google is giving us today to the results we got several years ago, we can see Google is wasting a lot of our time.</p>
<h2>1. Images in search results</h2>
<p>I just hate it when Google serves me images in normal search. If i wanted to look at the images I&#8217;d use the image search. There is simply no need for you to show me images. In most cases, things I search for can&#8217;t even be described with an image. Why are you forcing these images on me? Did I ask for them?</p>
<h2>2. Video in search</h2>
<p>This one is pretty similar to the image problem. Why are you giving me video if I didn&#8217;t ask for one? I can&#8217;t even imagine a situation in which I&#8217;d use your search to find a video I wanna watch. I&#8217;d probably search YouTube or maybe in some extreme situations use your video search. I don&#8217;t want videos in my normal search results so stop wasting my time please.</p>
<h2>3. Personalized search</h2>
<p>No, I don&#8217;t want my search results to be personalized. Why would I want that? I&#8217;m using a search engine to find stuff I don&#8217;t know about, why would I want the websites I visit all the time and know about them already show up on top of my <strong>search</strong> results? If I want a bookmarking service I&#8217;ll use one. I don&#8217;t want my search engine to be the bookmarking service. Chris Crum of the WebProNews wrote about the similar <a href="http://www.webpronews.com/topnews/2010/03/05/how-badly-do-people-want-personalized-search">issue with personalized search</a>.</p>
<h2>4. Geo-location based redirection</h2>
<p>Sometimes I have a need to check something on Google.com but due to my geographic location I get redirected back to Google.hr. Why would you do that? That doesn&#8217;t make any sense whatsoever! If I wanted Google.hr I&#8217;d go to Google.hr</p>
<p>At Bing, I simply tell it which country preference I want in my searches and it stays that way. It doesn&#8217;t redirect me back to my country if I don&#8217;t ask for it. That&#8217;s the way it should be, it&#8217;s the only logical way.</p>
<h2>5. Google accounts</h2>
<p>I once spent half a day trying to integrate my AdWords and <a href="http://inchoo.net/ecommerce/magento/google-analytics-in-magento/">Analytics</a> goals on two different accounts. I&#8217;ve read the entire help section to find the crucial information buried somewhere deep inside the sea of text. Why is this so complex? Why doesn&#8217;t your account simply work on your products? Why is there a difference between &#8220;Google account&#8221; and &#8220;gmail account&#8221; while both are &#8220;email&#8221;? Google, why are you wasting my time?</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/online-marketing/google-why-are-you-wasting-our-time/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Writing Domain Name in Google Instead of Address Bar</title>
		<link>http://inchoo.net/online-marketing/writing-domain-name-in-google-instead-of-address-bar/</link>
		<comments>http://inchoo.net/online-marketing/writing-domain-name-in-google-instead-of-address-bar/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 13:04:41 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4036</guid>
		<description><![CDATA[Yesterday, MG Siegler wrote a blog post at TechCrunch pointing out a mysterious Google Trends drop for major social sites like Facebook, YouTube, Twitter, Flickr, and Foursquare somewhere in the &#8230;]]></description>
			<content:encoded><![CDATA[<p>Yesterday, MG Siegler wrote a blog post at TechCrunch pointing out a <a href="http://techcrunch.com/2010/02/22/the-mysterious-social-search-abyss-of-2010/">mysterious Google Trends drop</a> for major social sites like Facebook, YouTube, Twitter, Flickr, and Foursquare somewhere in the January of 2010.<span id="more-4036"></span> The drop is only visible with searches for the domain name (not word), for example Google trends for &#8220;facebook.com&#8221;, not &#8220;facebook&#8221;. Basically, something a user should write in the address bar instead of the Google search box.</p>
<p>We still don&#8217;t have exact theory on what happened, but reading through comments it appears we have a fine idea on what might have caused this &#8220;coincidental&#8221; decrees in search volume for these major brands.</p>
<p><a href="http://www.facebook.com/profile.php?id=5136658">Joey Primiani</a> has offered an explanation: &#8220;<strong>It is the inclusion of the providing the direct link inside Google Suggest.</strong>&#8221;</p>
<p>Following up to that comment, <strong>Dain Binder</strong> of the <a href="http://dainsmoviereviews.com">dainsmoviereviews.com</a> adds:</p>
<blockquote><p>Joey, I just did some tests on this and I think you are correct. When searching for “facebook.com” and going to the results it registers a search. When searching “facebook.com” and clicking on the suggestion direct link it does not.</p>
<p>I would say Google Trends is more accurate now; eliminating people that use it as a “browser”.</p>
<p>(Verified using Chrome with SideWiki with full search and browsing history saved by Google.)</p></blockquote>
<p>Google&#8217;s engineer <a href="http://www.mattcutts.com/blog/"><strong>Matt Cutts</strong></a> joined the thread with:</p>
<blockquote><p>I don’t have any first-hand knowledge and haven’t asked anyone else at Google about this, but I’d lean toward this sort of explanation.</p></blockquote>
<p>Basically what this means is, Google is including the direct links for domain quarries to &#8220;fix&#8221; the problem of typical users who actually wanna &#8220;feel lucky&#8221; instead of search for all websites that contain the URL they entered in the search box.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/online-marketing/writing-domain-name-in-google-instead-of-address-bar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google says: &#8220;Hasta la vista, baby&#8221; !</title>
		<link>http://inchoo.net/fun-zone/google-says-hasta-la-vista-baby/</link>
		<comments>http://inchoo.net/fun-zone/google-says-hasta-la-vista-baby/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 09:26:21 +0000</pubDate>
		<dc:creator>Zeljko Prsa</dc:creator>
				<category><![CDATA[Fun & Events]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=3917</guid>
		<description><![CDATA[Today, my colleague Ivan Weiler entered the office announcing great news: &#8220;Google will stop supporting old browsers&#8221;. And we all know what that means, nudge, nudge&#8230; It means that google &#8230;]]></description>
			<content:encoded><![CDATA[<p>Today, my colleague Ivan Weiler entered the office announcing great news: &#8220;Google will stop supporting old browsers&#8221;. And we all know what that means, nudge, nudge&#8230; <span id="more-3917"></span><br />
It means that google has oficialy joined the IE6 shut-down campaign that&#8217;s been raging all over the net since ever now.</p>
<p><strong>To quote the great Governator:</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/capBDkzAlnM&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/capBDkzAlnM&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>&#8230;and an official mail sent to all google apps admins:</p>
<p><a href="http://inchoo.net/wp-content/uploads/2010/02/Picture-1.png"><img class="alignnone size-medium wp-image-3918" title="no-more-ie6" src="http://inchoo.net/wp-content/uploads/2010/02/Picture-1-489x700.png" alt="No more internet Explorer 6 for you!" width="489" height="700" /></a></p>
<p>This is a quote from a <a href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html">polite blog post</a> on discontinuing support for old browsers:</p>
<blockquote><p>The web has evolved in the last ten years, from simple text pages to rich, interactive applications including video and voice. Unfortunately, very old browsers cannot run many of these new features effectively. So to help ensure your business can use the latest, most advanced web apps, we encourage you to update your browsers as soon as possible.</p></blockquote>
<p>Read the rest of their <a href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html">blog post</a> and join the google wave of heading forward <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/fun-zone/google-says-hasta-la-vista-baby/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Adding Magento products to Google Base</title>
		<link>http://inchoo.net/ecommerce/magento/adding-magento-products-to-google-base/</link>
		<comments>http://inchoo.net/ecommerce/magento/adding-magento-products-to-google-base/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 12:57:57 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=3764</guid>
		<description><![CDATA[Magento made adding products to Google Base (Google Product Search / Google Shopping) a pretty simple process that can be done using Magento&#8217;s admin interface. This guide will tell you &#8230;]]></description>
			<content:encoded><![CDATA[<p>Magento made adding products to <a title="Google Base" href="http://www.google.com/base/">Google Base</a> (Google Product Search / Google Shopping) a pretty simple process that can be done using Magento&#8217;s admin interface. This guide will tell you how to do it and how to fix known issues.<span id="more-3764"></span></p>
<p>First of all, I wanna show you this really nice screencast I found on Vimeo that guides you through the process of adding your Magento products to Google Base, however you will probably have some issues after you follow the screencast since it doesn&#8217;t really tell you everything there is to know.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="620" height="349" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=2368176&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=02ab26&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="620" height="349" src="http://vimeo.com/moogaloop.swf?clip_id=2368176&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=02ab26&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h3>UPDATE (November 2010): &#8220;product_type&#8221;</h3>
<p>Google Base recently started to require a product type attribute. You need to create a new attribute called &#8220;Product Type&#8221; and map it with Google&#8217;s &#8220;product_type&#8221; attribute. For instructions, have a look further in this blog post how we created the Condition attribute. The process is the same. For the list of supported values for the &#8220;Product type&#8221; attribute, <a href="http://www.google.com/support/merchants/bin/answer.py?hl=en&#038;answer=160081">refer to the table here</a>. </p>
<h2>Step by step guide to importing Magento products into Google Base:</h2>
<p><strong>Step 1:</strong> Create a Google Base (merchant) account. This is the first thing you need to do since you&#8217;ll need to enter account access data in the next step.</p>
<p><strong>Step 2:</strong> Log-In to your Magento admin panel and go to System &gt; Configuration &gt; Google API &gt; Google Base and enter your Google Base account data, Save Config.</p>
<p><strong>Step 3:</strong> Go to Catalog &gt; Google Base &gt; Manage Attributes and synchronize the applicable Magento&#8217;s attributes with Google Base attributes.</p>
<p><strong>Step 4:</strong> Go to Catalog &gt; Google Base &gt; Manage Items. View Available Products button will show you items in your store that can be added to the Google Base.</p>
<p>That&#8217;s it, pretty simple, right?</p>
<h2>Known issues:</h2>
<h2>Expected response code 200, got 400. Type: data. Field: condition. Reason: The item is missing a required attribute.</h2>
<p>Google Base requires an attribute that describes the item&#8217;s condition. This is the solution for this problem:</p>
<p><strong>Step 1:</strong> Go to Catalog &gt; Attributes &gt; Manage Attributes. Create a new attribute called &#8220;Condition&#8221; with dropdown values &#8220;New&#8221; and &#8220;Used&#8221; available.</p>
<p><strong>Step 2:</strong> Go to Catalog &gt; Attributes &gt; Manage Attribute Sets and drag the attribute &#8220;Condition&#8221; from the right column to the appropriate place in the left column. Make sure you have dragged it into the attribute set you&#8217;re using with Google Base if you have more then one attribute set defined.</p>
<p><strong>Step 3:</strong> Go to Catalog &gt; Google Base &gt; Manage Attributes and synchronize Magento&#8217;s &#8220;Condition&#8221; attribute with Google Base&#8217;s &#8220;condition&#8221; attribute.</p>
<p><strong>Step 4:</strong> Edit products you wish to include in Google Base and give them appropriate Condition attribute value (New or Used).</p>
<h2>Expected response code 200, got 400. Type: data. Field: description. Reason: There is a problem with the character encoding of this attribute.</h2>
<p>This error is shown when you have characters in your product description that are not supported by Google Base. This (or similar) error is also shown when you&#8217;re using code in your product description.</p>
<p>Removing the code or some strange characters from your product&#8217;s description should fix this problem.</p>
<p>A similar error will also appear if you left your description blank. You will need to add some description to every product you wish to add to the Google Base to fix the issue.</p>
<h2>Unable to read response, or response is empty</h2>
<p>We&#8217;re still trying to find a solution for this one. It might be a problem on Google base&#8217;s side.</p>
<h2>Resubmitting products to Google base</h2>
<p>Products in Google base expire in 30 days. In order to resubmit your products to Google base, you&#8217;ll need to synchronize the products from Magento&#8217;s Google base interface so that Magento would know that products are no longer available at Google base (expired).</p>
<p>Then you can submit your products once again by following simple steps described at the beginning of this article.</p>
<p>If you still can&#8217;t get your head arround this, CreareGroup has provided <a title="CreareGroup" href="http://www.e-commercewebdesign.co.uk/blog/news/products-in-google-shopping-results.php">an alternate way to submitt your Magento products to the Google Base</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/adding-magento-products-to-google-base/feed/</wfw:commentRss>
		<slash:comments>100</slash:comments>
		</item>
		<item>
		<title>How to embed Google Custom Search in Magento</title>
		<link>http://inchoo.net/ecommerce/magento/how-to-embed-google-custom-search-in-magento/</link>
		<comments>http://inchoo.net/ecommerce/magento/how-to-embed-google-custom-search-in-magento/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:34:57 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=3553</guid>
		<description><![CDATA[For those of you who love Google Custom Search and would like to use it with the Magento, here is a little how to. Entire embed process is really easy. &#8230;]]></description>
			<content:encoded><![CDATA[<p>For those of you who love Google Custom Search and would like to use it with the Magento, here is a little how to. Entire embed process is really easy. It all comes down to copy paste-ing few lines of code from Google to Magento. My idea is to create the static block in Magento CMS section and then use the custom CMS page from which I will call this statick block among other HTML content I might wish to throw into the CMS page.<span id="more-3553"></span></p>
<p>For starters, we need to create <a href="http://www.google.com/cse/" target="_blank">Google Custom Search</a> engine. Attached are few screenshots to see how it looks.</p>
<p><img alt="" src="http://inchoo.net/wp-content/uploads/2009/12/cse1.png" title="CSE1" class="alignnone" width="637" /></p>
<p><img alt="" src="http://inchoo.net/wp-content/uploads/2009/12/cse_2.png" title="CSE2" class="alignnone" width="637" /></p>
<p><img alt="" src="http://inchoo.net/wp-content/uploads/2009/12/cse_3.png" title="CSE3" class="alignnone" width="637" /></p>
<p><img alt="" src="http://inchoo.net/wp-content/uploads/2009/12/cse_4.png" title="CSE4" class="alignnone" width="637" /></p>
<p><img alt="" src="http://inchoo.net/wp-content/uploads/2009/12/cse_5.png" title="CSE5" class="alignnone" width="637" /></p>
<p>Once we have created the necesery search engine, we will copy-paste the embed code into the static block of Magento, lets say we login to Magento, and create static block with identifier &#8220;custom-google-search-engine&#8221;.</p>
<p>For our last step, we will create a CMS page, giving it SEF URL Identifier &#8220;custom-search&#8221;, and placing the following <strong>{{block type=&#8221;cms/block&#8221; block_id=&#8221;custom-google-search-engine&#8221;}}</strong> block call into the content area.</p>
<p>That&#8217;s it. Now when you visit the url like http://myshop.domain/custom-search you will see the result like shown on photo below.</p>
<p><img alt="" src="http://inchoo.net/wp-content/uploads/2009/12/cse_10.png" title="CSE10" class="alignnone" width="637" /></p>
<p><em><a href="http://www.flickr.com/photos/ollieolarte/3028314931/sizes/o/">CC Image credits.</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/how-to-embed-google-custom-search-in-magento/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Problems with Google&#8217;s personalized search</title>
		<link>http://inchoo.net/online-marketing/problems-with-googles-personalized-search/</link>
		<comments>http://inchoo.net/online-marketing/problems-with-googles-personalized-search/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 10:32:01 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Online Marketing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=3547</guid>
		<description><![CDATA[The world of SEO goes all crazy in some sort of riot / protest after Google announced the personalized search results for signed-out users. First of all, let me say &#8230;]]></description>
			<content:encoded><![CDATA[<p>The world of SEO goes all crazy in some sort of riot / protest after <a href="http://googleblog.blogspot.com/2009/12/personalized-search-for-everyone.html">Google announced the personalized search results for signed-out users</a>.<span id="more-3547"></span></p>
<p>First of all, let me say &#8211; <strong>I told you so, I told you so!</strong> I noticed Google rolling out this thing a long time ago, I think my first post on the topic was near the end of the 2008, when Matt Cutts announced what to expect from Google in 2009. It was here for some time, it&#8217;s not like they are just throwing it out blind, Google always tests things before going on a large scale implementation.</p>
<p>Now, my post about <a title="SEO ranking reports" href="http://inchoo.net/online-marketing/this-is-why-seo-ranking-reports-are-useless/">SEO ranking reports making no sense whatsoever</a> gains extra value. If you didn&#8217;t read that one you most definitely should.</p>
<p>The thing with big changes is, it always has some things people will like and some things people will hate. In this case, most of the discussions I&#8217;ve seen in the SEO community are extremely negative and hate the idea of Google introducing personalized search results to the singed-out users.</p>
<p>The main problem appears to be that strong branded websites with big audience will become even more powerful and it will become virtually impossible to outrank them on their &#8220;home field&#8221;. This is very true. Search engine traffic for small publishers and other small players will probably start decreasing.</p>
<p>However, this problem also brings you the solution. Without personalized search you had no chance in competing with super high competition keywords in which big brands dominate the market, but now you do!</p>
<p>You don&#8217;t need to outrank them with classical SEO methods anymore. What am I talking about?</p>
<p><strong>Social Networks &#8211; the solution for all of your &#8220;small player&#8221; SEO problems.</strong></p>
<p>You have the ability to capture visitors via social networks and convert them into the ones that will prefer your site in search results over the big brands.</p>
<p>You&#8217;ve always had the ability to become visible to them via social networks, but now things have changed, now you have the ability to become visible to them on search engines using the social networks.</p>
<p><strong>Google&#8217;s personalized search (Official video):</strong></p>
<p><object width="620" height="444"><param name="movie" value="http://www.youtube.com/v/EKuG2M6R4VM&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/EKuG2M6R4VM&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="620" height="444"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/online-marketing/problems-with-googles-personalized-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

