Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Google Rich Snippets / semantic web for more attractive listings in google


bruyndoncx

Recommended Posts

what is the best way to implement google rich snippets in oscommerce ?

http://support.google.com/webmasters/bin/answer.py?hl=en&answer=99170

 

 

i've found the good relations add -n for oscommerce 2.2RCA but it is fairly old and not updated to v2.3.1 since the summer of 2009.

 

is good relations really the way forward, or are there alternatives to consider ?

KEEP CALM AND CARRY ON

I do not use the responsive bootstrap version since i coded my responsive version earlier, but i have bought every 28d of code package to support burts effort and keep this forum alive (albeit more like on life support).

So if you are still here ? What are you waiting for ?!

 

Find the most frequent unique errors to fix:

grep "PHP" php_error_log.txt | sed "s/^.* PHP/PHP/g" |grep "line" |sort | uniq -c | sort -r > counterrors.txt

Link to comment
Share on other sites

Google is just saying to use html to spruce up the meta description tags of your pages. You need to have a meta tags contribution installed that will allow you to edit the meta description tag. Header Tags SEO will do this but some of the others may as well.

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

If you look at this page

http://support.google.com/webmasters/bin/answer.py?hl=en&answer=146750

it basically explains a whole lot of tags that are recommended by google to explain your offer(just a single product)

 

also there are warnings on the page that you should checkout schema.org for more detailed item types that microsoft and yahoo also support

 

this is way beyond meta tags as far as I can tell, it is really always in the body content

KEEP CALM AND CARRY ON

I do not use the responsive bootstrap version since i coded my responsive version earlier, but i have bought every 28d of code package to support burts effort and keep this forum alive (albeit more like on life support).

So if you are still here ? What are you waiting for ?!

 

Find the most frequent unique errors to fix:

grep "PHP" php_error_log.txt | sed "s/^.* PHP/PHP/g" |grep "line" |sort | uniq -c | sort -r > counterrors.txt

Link to comment
Share on other sites

Yes, you are correct. The example shown on the page the OP posted is of a product description, which google has always taken from the meta desciption, if it was present, so I assumed the markup code was for that tag. But it turns out, on closer examination, they are talking about adding the markup to the text on the page, like the product description. My apologies to the OP for the mistake. And here I've gone all year without making one yet. :/

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

And here I've gone all year without making one yet. :/

 

 

Ten days mistake free ! opps, Zero days mistake free !......lol (just kidding with you)

 

 

 

Chris

Link to comment
Share on other sites

<?php
/*
 $Id$
 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com
 Copyright (c) 2010 osCommerce
 Released under the GNU General Public License
*/
 require('includes/application_top.php');
 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO);
 $product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
 $product_check = tep_db_fetch_array($product_check_query);
 require(DIR_WS_INCLUDES . 'template_top.php');
 ?>
<?php
 if ($product_check['total'] < 1) {
 header('HTTP/1.1 404 Not Found');
?>
<div id="not-found" itemscope itemtype="http://schema.org/Product">
 <div class="center">
<?php echo TEXT_PRODUCT_NOT_FOUND; ?>
</div>
 <div class="floatleft">
<?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', tep_href_link(FILENAME_DEFAULT)); ?>
 </div>
<?php
 } else {
$product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_info = tep_db_fetch_array($product_info_query);
tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$_GET['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
if ($new_price = tep_get_products_special_price($product_info['products_id'])) {
  $products_price = '<del>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</del> <span class="sale-price alert" itemprop="price">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>';
  $products_info_class = 'sale-display';
} else {
  $products_price = '<span itemprop="price">'. $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</span>';
  $products_info_class = 'display';
}
  $products_model = $product_info['products_model'];
  $products_name = $product_info['products_name'];
?>
<div itemscope itemtype="http://schema.org/Product">
<?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?>

 <h1 itemprop="name"><?php echo $products_name; ?></h1>


<div id="offer" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
 <?php echo $products_price; ?>
	<br />
 <meta itemprop="priceCurrency" content="<?php echo LANGUAGE_CURRENCY; ?>" />
 <?php if ($product_info['products_quantity'] > 0) { ?>
  <link itemprop="availability" href="http://schema.org/InStock" /><strong>In Stock</strong>
		<br />
  <?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_draw_button(IMAGE_BUTTON_IN_CART, 'cart', null, 'primary');
  } else { ?>
   <link itemprop="availability" href="http://schema.org/OutOfStock" /><strong>Out of Stock</strong>
		<br />
 <?php  if ($product_info['products_date_available'] > date('Y-m-d H:i:s'))
  echo '<small>' . sprintf(TEXT_DATE_AVAILABLE, tep_date_short($product_info['products_date_available'])) . '</small>';
 } ?>
</div>
<?php
if (tep_not_null($product_info['products_image'])) {
  $pi_query = tep_db_query("select image, htmlcontent from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . (int)$product_info['products_id'] . "' order by sort_order");
  if (tep_db_num_rows($pi_query) > 0) {
?>
<div id="piGal" style="float: right;">
  <ul>
<?php
	$pi_counter = 0;
	while ($pi = tep_db_fetch_array($pi_query)) {
	  $pi_counter++;
	  $pi_entry = '		<li><a href="';
	  if (tep_not_null($pi['htmlcontent'])) {
		$pi_entry .= '#piGalimg_' . $pi_counter;
	  } else {
		$pi_entry .= tep_href_link(DIR_WS_IMAGES . $pi['image']);
	  }
	  $pi_entry .= '" target="_blank" rel="fancybox" itemprop="image">' . tep_image(DIR_WS_IMAGES . $pi['image']) . '</a>';
	  if (tep_not_null($pi['htmlcontent'])) {
		$pi_entry .= '<div style="display: none;"><div id="piGalimg_' . $pi_counter . '">' . $pi['htmlcontent'] . '</div></div>';
	  }
	  $pi_entry .= '</li>';
	  echo $pi_entry;
	}
?>
  </ul>
</div>
<script type="text/javascript">
$('#piGal ul').bxGallery({
 maxwidth: 300,
 maxheight: 200,
 thumbwidth: <?php echo (($pi_counter > 1) ? '75' : '0'); ?>,
 thumbcontainer: 300,
 load_image: 'ext/jquery/bxGallery/spinner.gif'
});
</script>
<?php
  } else {
?>
<div id="piGal" style="float: right;">
  <?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank" rel="fancybox">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], addslashes($product_info['products_name']), null, SMALL_IMAGE_WIDTH, 'itemprop="image"') . '</a>'; ?>
</div>
<?php
  }
?>
<script type="text/javascript">
$("#piGal a[rel^='fancybox']").fancybox({
 cyclic: true
});
</script>
<?php
}
?>
<div class="description" itemprop="description">
<?php echo stripslashes($product_info['products_description']); ?>
</div>
<?php
$products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$_GET['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'");
$products_attributes = tep_db_fetch_array($products_attributes_query);
if ($products_attributes['total'] > 0) {
?>
<p><?php echo TEXT_PRODUCT_OPTIONS; ?></p>
<p>
<?php
  $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$_GET['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
  while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
	$products_options_array = array();
	$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$_GET['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
	while ($products_options = tep_db_fetch_array($products_options_query)) {
	  $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
	  if ($products_options['options_values_price'] != '0') {
		$products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
	  }
	}
	if (is_string($_GET['products_id']) && isset($cart->contents[$_GET['products_id']]['attributes'][$products_options_name['products_options_id']])) {
	  $selected_attribute = $cart->contents[$_GET['products_id']]['attributes'][$products_options_name['products_options_id']];
	} else {
	  $selected_attribute = false;
	}
?>
  <strong><?php echo $products_options_name['products_options_name'] . ':'; ?></strong><br /><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?><br />
<?php
  }
?>
</p>
<?php
}
?>
<div class="clearfix"></div>
<?php
if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) {
?>
<small><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></small>
<?php
}
?>
<?php
$reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$_GET['products_id'] . "' and reviews_status = 1");
$reviews = tep_db_fetch_array($reviews_query);
?>
 <div class="contentBlock">
<span class="buttonAction">
 </span>
<?php echo tep_draw_button(IMAGE_BUTTON_REVIEWS . (($reviews['count'] > 0) ? ' (' . $reviews['count'] . ')' : ''), 'comment', tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params())); ?>
 </div>
<?php
if ((USE_CACHE == 'true') && empty($SID)) {
  echo tep_cache_also_purchased(3600);
} else {
  include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
}
?>
</form>
<?php
 }
?>
</div>
<?php
 require(DIR_WS_INCLUDES . 'template_bottom.php');
 require(DIR_WS_INCLUDES . 'application_bottom.php');

Link to comment
Share on other sites

Thank you, that's a real help. Is this pages snippets available in google ?

I read somewhere you'd have to ask for inclusion of the snippets

KEEP CALM AND CARRY ON

I do not use the responsive bootstrap version since i coded my responsive version earlier, but i have bought every 28d of code package to support burts effort and keep this forum alive (albeit more like on life support).

So if you are still here ? What are you waiting for ?!

 

Find the most frequent unique errors to fix:

grep "PHP" php_error_log.txt | sed "s/^.* PHP/PHP/g" |grep "line" |sort | uniq -c | sort -r > counterrors.txt

Link to comment
Share on other sites

Somewhere within google webmaster tools, under their rich snippets information pages they do have a place you can submit your site. It's been a while since I've been there, but that still does not guarantee they will use the markup in search results. I've been using these for over a year now, and have noticed the markup in results for category listings, and that was using their rich snippet format, I recently changed the markup to reflect what is outlined @ schema.org, and have not yet had to to see the end result in the SE's. I do expect the markup to one day be much more useful than just SE results however. I feel it is only a matter of time before Google Product search, and other product comparison engines start to use it.

 

This thought is totally experimental, I have yet to try it, but shall very soon -- I believe if you do away with the meta description, then the SE's will pick up better on the micro-data as they will have nothing else between their search results and the true page content.

Link to comment
Share on other sites

  • 1 month later...

Hi built a rich snippet test for music like the one Google describes with Lady Gaga and MySpace.

http://www.google.com/webmasters/tools/richsnippets?view=&url=http%3A%2F%2Fwww.myspace.com%2Fladygaga

The rich snippet testing tool tells me that everythins is correct but it wont display on google search... any ideas?

 

Google search example with my website zrce.eu:

 

http://www.google.ch/search?q=zrce+2012&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a#sclient=psy-ab&hl=de&client=firefox-a&hs=j8P&rls=org.mozilla:de%3Aofficial&source=hp&q=+zrce+freemasons+djs&pbx=1&oq=+zrce+freemasons+djs&aq=f&aqi=&aql=&gs_sm=3&gs_upl=3136l5812l1l6130l7l7l0l0l0l0l78l382l6l6l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=a0d31e9a79b16c67&biw=1120&bih=844

 

Rich Snippet Testing Tool: www.google.com/webmasters/tools/richsnippets?url=zrce.eu%2Ffreemasons%2F&view=

 

My Code used in Wordpress on zrce.eu/freemasons/]]

 

 

<div itemscope="" itemtype="http://schema.org/MusicGroup" style="font-size:90%">

<ul class="trackList">

<li itemprop="tracks" itemscope="" itemtype="http://schema.org/MusicRecording">

<meta itemprop="url" content="http://amzn.to/yEjbdx"><a'>http://amzn.to/yEjbdx"><a title="Uninvited (Radio Edit) [feat. Bailey Tzuke] Freemasons ft. Bailey Tzuke" href="http://amzn.to/yEjbdx" target="_blank" itemprop="offers"><strong><span itemprop="name">Uninvited feat. Bailey Tzuke </span></strong></a><meta itemprop="duration" content="PT3M4S"> 3:04

</li>

<li itemprop="tracks" itemscope="" itemtype="http://schema.org/MusicRecording">

<meta itemprop="url" content="http://amzn.to/y0MV0K"><a'>http://amzn.to/y0MV0K"><a title="Rain Down Love Freemasons mit Siedah Garrett" href="http://amzn.to/y0MV0K" target="_blank" itemprop="offers"><strong><span itemprop="name">Rain Down Love </span></strong></a><meta itemprop="duration" content="PT4M46S"> 4:46

</li>

<li itemprop="tracks" itemscope="" itemtype="http://schema.org/MusicRecording">

<meta itemprop="url" content="http://amzn.to/zFFDEt"><a'>http://amzn.to/zFFDEt"><a title="Love On My Mind Freemasons ft Amanda Wilson" href="http://amzn.to/zFFDEt" target="_blank" itemprop="offers"><strong><span itemprop="name">Love On My Mind </span></strong></a><meta itemprop="duration" content="PT5M37S"> 5:37

</li>

<li itemprop="tracks" itemscope="" itemtype="http://schema.org/MusicRecording">

<meta itemprop="url" content="http://amzn.to/wcY0JF"><a'>http://amzn.to/wcY0JF"><a title="Believer (Radio Edit) Freemasons " href="http://amzn.to/wcY0JF" target="_blank" itemprop="offers"><strong><span itemprop="name">Believer </span></strong></a><meta itemprop="duration" content="PT3M9S"> 3:09

</li>

</ul>

</div>

Link to comment
Share on other sites

  • 2 weeks later...

Google and Bing can definitely use the extra information.

If you think about it, every pc with windows comes with internet explorer - Bing in other words

Do not just use Google for seo and forget about Bing

 

The microdata add on that were uploaded years ago is way bit tricky to install on a modified version of osc

I think every shop owner should move towards microdata.

Google and Bing can use the extra information if implemented and will be a definite advantage.

 

If I could, I would have made a new add on which is easier to implement the data (developers please help writing a new)

Getting the Phoenix off the ground

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...