Forums / Strategies for Advertising my Online Store / Implementing Google Rich Snippets.

Implementing Google Rich Snippets.

Locked

Views: 18,975

Results 61 to 80 of 100
This thread is locked. New replies are disabled.
26 Feb 2013, 3:19 PM
#61
limitless avatar

limitless

Inactive

Join Date:
Jan 2012
Posts:
496
Plugin Contributions:
0

Implementing Google Rich Snippets.

Rizla:

Could anyone give me a pointer?

Just done the edits on v1.3.9h
Seems to be working but on Google test it shows my currency as USD and I'm UK

Checked the Admin settings and can't find (or missed) anything obvious.

Where should I be checking?

Thanks

When you defined the price, you need to specify currency:

<meta itemprop="priceCurrency" content="USD"/><span itemprop="price"></span>

26 Feb 2013, 7:47 PM
#62
rizla avatar

rizla

Zen Follower

Join Date:
Sep 2010
Posts:
449
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Thank you Limitless

Talk about wood for the trees...

26 Feb 2013, 8:10 PM
#63
lankeeyankee avatar

lankeeyankee

Totally Zenned

Join Date:
Jan 2007
Posts:
1,514
Plugin Contributions:
1

Re: Implementing Google Rich Snippets.

schoolboy:

Call up one of your Product Info pages, then look at the page source code (html) and assess whether the micro-data tags are being referenced properly.

If not, then something "custom" on your site is generating the final HTML in a way that "ignores" the snippet embeds indicated by Melanie.

That's the thing, the tags show up fine and correctly in my page source. If I copy just those sections of HTML out of the page source and paste into the Google HTML structured data checker it validates just fine. But when it's the whole page it doesn't. My guess right now is some javascript on the page is preventing Google's validator from seeing the tags. I can't think of what else it might be. I am going to spend some time later this week or over the weekend comparing the page source from my site that it's working on vs the one that's not and then work backwards turning things off until I see what the problem is.

Johnny, it looks like the only things our sites have in common is MAP pricing. Although that is not causing a problem with our site that's validating. By JS I mean javascript. So, it's something else although our problems could be unrelated.


Zen Cart and it's community are the best!!

27 Feb 2013, 7:27 PM
#64
johnnycopilot avatar

johnnycopilot

Zen Follower

Join Date:
Mar 2012
Posts:
325
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

lankeeyankee:

I am going to spend some time later this week or over the weekend comparing the page source from my site that it's working on vs the one that's not and then work backwards turning things off until I see what the problem is.

I have another site with different plugins, and I will try the code on that site and see what happens, then report back here.. I will be looking forward to anything that you find. I simply don't know enough about code to troubleshoot pretty much,,,,,,,, anything.. ha..... I know what used to work SEO years ago, and it is not working now. I need more traffic, and I want to use any and all tools available. Thanks!!!!! :D

11 Mar 2013, 6:52 AM
#65
contriveit avatar

contriveit

New Zenner

Join Date:
Sep 2012
Posts:
36
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

KISS

http://www.ebusiness-unibw.org/tools/grsnippetgen/

copy/paste the business entity and locations into end of footer. Copy/paste offering into bottom of product description. Done!

Heres how one of my product pages looks in googles structured data tester:

    Advanced Windows PC Optimization Experts : , Contrive I.T.
    www.contrive-it.net/.../advanced-windows-pc-optimization-...
    Contrive I.T.
    	
    by Contrive I.T. - More by Contrive I.T.
    The excerpt from the page will show up here. The reason we can't show text from your webpage is because the text depends on the query the user types.


Authorship Testing Result
Authorship is working for this webpage.
Google+ profile link: https://plus.google.com/100829196358369477163
Google+ profile name: Contrive I.T.
Authorship can be explicitly established via two primary methods: email verification or rel=author markup. Keep reading for more details on the implementation of each method for this page. Learn more
Authorship Email Verification
Please enter a Google+ profile to see if the author has successfully verified an email address on the domain www.contrive-it.net to establish authorship for this webpage. Learn more
Authorship rel=author Markup
rel=author markup has successfully established authorship for this webpage.
First rel=author link from webpage: http://plus.google.com/100829196358369477163
Link (direct or indirect) from website to Google+ profile: Yes
Public contributor-to link from Google+ profile to www.contrive-it.net: Yes
Note: The testing tool currently only checks the first rel=author link listed on a webpage for a link to a Google+ profile (http://plus.google.com/100829196358369477163). It's possible that authorship may in fact be working for this page because of other rel=author links on the page. To verify that authorship is working on this page, please ensure the first profile listed on the site links to the appropriate Google+ profile.
Other rel=author links from page:
http://facebook.com/cit.nola
http://twitter.com/contriveit/
http://www.linkedin.com/company/contrive-i.t.
http://www.youtube.com/user/contriveit
http://contriveit.wordpress.com/
http://contrive-it.##########################/
Publisher
Page does not contain publisher markup. Learn more
Extracted structured data
rdfa-node
type:	Offering
relationship:	
name:	depiction
href:	http://www.contrive-it.net/images/categories/Desktop-Laptop-repair.jpg
name:	hasBusinessFunction
href:	http://purl.org/goodrelations/v1#ProvideService
name:	eligibleCustomerTypes
href:	http://purl.org/goodrelations/v1#Enduser
name:	eligibleCustomerTypes
href:	http://purl.org/goodrelations/v1#Business
name:	page
href:	http://www.contrive-it.net/services-c-2/laptop-or-desktop-pc-service-c-2_3/advanced-optimazation-p-6.html
name:	includes
child:	
type:	SomeItems
relationship:	
name:	depiction
href:	http://www.contrive-it.net/images/categories/Desktop-Laptop-repair.jpg
name:	page
href:	http://www.contrive-it.net/services-c-2/laptop-or-desktop-pc-service-c-2_3/advanced-optimazation-p-6.html
property:	
name:	Advanced Windows PC Optimization Experts : Contrive I.T.
description:	Slow computer? Let our expert tech optimize your PC for peak performance. We'll Increase your PC speed up to faster than new. Get your Free Scan Today: 504.222.2442
href:	http://www.contrive-it.net/#product
property:	
name:	Advanced Windows PC Optimization Experts: Contrive I.T.
availability:	OnSite or Drop Off
description:	Slow computer? Let our expert tech optimize your PC for peak performance. We'll Increase your PC speed up to faster than new. Get your Free Scan Today: 504.222.2442
validFrom:	2008-01-01T00:00:00Z
validThrough:	2022-12-31T00:00:00Z
eligibleRegions:	US
rdfa-node
relationship:	
name:	image_src
href:	http://www.contrive-it.net/images/
name:	link-type-author
value:	Google +
href:	http://plus.google.com/100829196358369477163
name:	link-type-author
value:	Facebook
href:	http://facebook.com/cit.nola
name:	link-type-author
value:	Twitter
href:	http://twitter.com/contriveit/
name:	link-type-author
value:	LinkedIn
href:	http://www.linkedin.com/company/contrive-i.t.
name:	link-type-author
value:	YouTube
href:	http://www.youtube.com/user/contriveit
name:	link-type-author
value:	Wordpres
href:	http://contriveit.wordpress.com/
name:	link-type-author
value:	Blogspot
href:	http://contrive-it.##########################/
rdfa-node
type:	BusinessEntity
relationship:	
name:	adr
child:	
type:	Address
property:	
country-name:	US
locality:	Metairie
postal-code:	70006
street-address:	4500 Newlands St
name:	logo
href:	http://www.contrive-it.net/includes/custom/images/fb.logo.jpg
name:	page
href:	http://www.contrive-it.net/
property:	
legalName:	Contrive I.T.
tel:	504-222-2442
rdfa-node
type:	Location
relationship:	
name:	adr
child:	
type:	Address
property:	
country-name:	US
locality:	LaPlace
postal-code:	70068
street-address:	421 W Airline Hwy
name:	logo
href:	http://www.contrive-it.net/includes/custom/images/fb.logo.jpg
name:	geo
child:	
type:	geo
property:	
latitude:	30.06777
longitude:	-90.48256
name:	hasOpeningHoursSpecification
child:	
type:	OpeningHoursSpecification
relationship:	
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Monday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Tuesday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Wednesday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Thursday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Friday
property:	
opens:	09:00:00
closes:	18:00:00
name:	hasOpeningHoursSpecification
child:	
type:	OpeningHoursSpecification
relationship:	
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Saturday
property:	
opens:	11:00:00
closes:	15:00:00
name:	page
href:	http://www.contrive-it.net/
property:	
name:	LaPlace Shop
tel:	504-222-2442
rdfa-node
type:	Location
relationship:	
name:	adr
child:	
type:	Address
property:	
country-name:	US
locality:	Metairie
postal-code:	70006
street-address:	4500 Newlands St
name:	logo
href:	http://www.contrive-it.net/includes/custom/images/fb.logo.jpg
name:	geo
child:	
type:	geo
property:	
latitude:	30.00712
longitude:	-90.18382
name:	hasOpeningHoursSpecification
child:	
type:	OpeningHoursSpecification
relationship:	
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Monday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Tuesday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Wednesday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Thursday
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Friday
property:	
opens:	09:00:00
closes:	18:00:00
name:	hasOpeningHoursSpecification
child:	
type:	OpeningHoursSpecification
relationship:	
name:	hasOpeningHoursDayOfWeek
href:	http://purl.org/goodrelations/v1#Saturday
property:	
opens:	11:00:00
closes:	15:00:00
name:	page
href:	http://www.contrive-it.net/
property:	
name:	LaPlace Shop
tel:	504-222-2442
Item 
type:	http://schema.org/localbusiness
property:	
name:	Contrive I.T.
telephone:	504-222-2442
Item 
type:	http://schema.org/postaladdress
property:	
addresslocality:	LaPlace
addresslocality:	Jefferson
addresslocality:	Metairie
addresslocality:	Harahan
addresslocality:	Kenner
addresslocality:	Destrehan
addresslocality:	Reserve
addresslocality:	New Orleans
addressregion:	LA

This is my signature. There are many like it but this one is mine.

12 Mar 2013, 11:04 AM
#66
rizla avatar

rizla

Zen Follower

Join Date:
Sep 2010
Posts:
449
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

By "product description" do you mean tpl_product-info-display ?

Thanks

12 Mar 2013, 11:43 AM
#67
contriveit avatar

contriveit

New Zenner

Join Date:
Sep 2012
Posts:
36
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Rizla:

By "product description" do you mean tpl_product-info-display ?

Thanks

No, I'm referring to the product description page that you edit in admin. Granted, this probably isn't the "cleanest" way as, it will leave an empty space at the bottom of that products page. But in my layout, it doesn't matter.

This is my signature. There are many like it but this one is mine.

19 Mar 2013, 7:18 PM
#68
johnnycopilot avatar

johnnycopilot

Zen Follower

Join Date:
Mar 2012
Posts:
325
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Thanks for all of the replies to this thread. Any experiences that anyone has or anything that they have learned will be appreciated I am sure by many people including me. If I find out anything else about my original problem I will post the information. Thanks

19 Mar 2013, 7:32 PM
#69
design75 avatar

design75

Totally Zenned

Join Date:
Dec 2009
Location:
Amersfoort, The Netherlands
Posts:
2,862
Plugin Contributions:
5

Re: Implementing Google Rich Snippets.

I have it working finally. Turns out i simply forgot a piece of code :blush: , for the result see http://meubelvoetzoeker.nl/index.php?main_page=product_info&cPath=14_15&products_id=34 this is my multi-site test-site :cool:

Also I just saw that in Zen Cart 1.6 the micro-data is included in the code, so in the future we don't need to do it our selves any more. :thumbsup: for the Zen Cart Team

19 Mar 2013, 11:40 PM
#70
rescoccc avatar

rescoccc

Totally Zenned

Join Date:
May 2010
Location:
WA State
Posts:
1,700
Plugin Contributions:
2

Re: Implementing Google Rich Snippets.

In case anybody's interested, I just added to code snippets developed by Melanie to a site running 1.38a, (yeah, I know), and it works perfectly. Also works on 1.39h. Thanks, Melanie!

The best way to learn is to try stuff. But, back it up first.

20 Mar 2013, 12:03 AM
#71
schoolboy avatar

schoolboy

Totally Zenned

Join Date:
Jun 2005
Location:
Cumbria, UK
Posts:
10,327
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Run the page through W3 HTML validator... my setup (using a new responsive template) gets a load of validation errors because DIVS were being nested inside the <span> tags - a feature of the parsing structure of the template I am using. (There were also issues of DIVS nested inside <ul> tags. Both are a real NO-NO for validation.)

I have had to adapt all Melanie's <span> tags to be <meta itemprop="xxxxxxxxxxxxxxx" content="yyyyyyyyyyyyyyy"> instead, which proved quite challenging where variables were involved!

20 years a Zencart User

20 Mar 2013, 10:18 AM
#72
rizla avatar

rizla

Zen Follower

Join Date:
Sep 2010
Posts:
449
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Schoolboy..... Thats as clear as MUD ;))

Gawd... getting toooo old for all this!

20 Mar 2013, 2:30 PM
#73
schoolboy avatar

schoolboy

Totally Zenned

Join Date:
Jun 2005
Location:
Cumbria, UK
Posts:
10,327
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Rizla:

Schoolboy..... Thats as clear as MUD ;))

Gawd... getting toooo old for all this!

I'll give it another go :D ...

As you know, "page HTML" is "generated" by the PHP, which grabs all the elements it needs for a page, then assembles it through a wire-frame (template files), before it delivers it to a browser.

Once you start "hard-coding" (or just coding) additional stuff into existing code, you risk breaking a variety of rules - including validation rules.

The SYNTAX of your HTML must still be VALID.

Now, when I added Melanie's code to the various files (tpl_product_info_display.php), I discovered that there were SYNTAX problems, caused largely by my responsive template, which is very different from a core template.

For example, the FOLLOWING HTML is valid:-

<div>
<span>Some content here</span>
<div>

and

**<span>
<ul>

<li>point one</li> <li>point two</li> </ul> </span>**

BUT... by putting Melanie's <span> elements into the position she advocated, I was finding that the <span> was sometimes nesting a <div>, or was being nested inside a list tag (eg: <ul>)

So I was ending up with:

<span>
<div> Some stuff here...
</div>
</span>

(A <div> cannot nest inside a <span>)

and...

**<ul>
<span>

<li>point one</li> <li>point two</li> </span> </ul>**

(A <span> cannot nest inside a list - <ul> )

By changing it the way I indicated, I removed any HTML TAG conflicts.

20 years a Zencart User

28 Mar 2013, 2:23 PM
#74
simon22 avatar

simon22

New Zenner

Join Date:
Jun 2012
Location:
Milton Keynes, United Kingdom
Posts:
23
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

I have successfully implemented this by using a programmer on oDesk as I was banging my head against the wall. An example product with a review is http://stoneconservation.net/supplies/5-pack-handy-sponges-p-69.html let me know if you would like to see the code on any specific pages, you will also see it has to be an offer within the rich snippet testing tool, also certain required information must be shown on the product information such as availability, condition, manufacturer etc.

28 Mar 2013, 5:38 PM
#75
johnnycopilot avatar

johnnycopilot

Zen Follower

Join Date:
Mar 2012
Posts:
325
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Simon22 thanks :D. I have the same template as you, so I am very interested in your post. I haven't had time to figure out what everyone else is saying to do. I was looking over what Schoolboy said, but just haven't figured it out as of yet. The changes that I did to my template are posted on, or near, the first page of this thread in case you want to look. I didn't post (here in this thread) the code I added in which the code on my zen cart page exactly matched the code in Melanie's instructions, I am assuming that code is ok??. I would LOVE to see your includes/templates/my_template-templates/tpl_product_info_display.php page!!! That would make my day. I have tried and tried and tried and tried to get that sucker working! Thanks!!!

28 Mar 2013, 6:24 PM
#76
simon22 avatar

simon22

New Zenner

Join Date:
Jun 2012
Location:
Milton Keynes, United Kingdom
Posts:
23
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

Here you go, hope it helps you out! Expect better click throughs once you get it sorted, love this functionality :)

<?php
/**
 * Page Template
 *
 * Loaded automatically by index.php?main_page=product_info.<br />
 * Displays details of a typical product
 *
 * @package templateSystem
 * @copyright Copyright 2003-2011 Zen Cart Development Team
 * @copyright Portions Copyright 2003 osCommerce
 * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
 * @version $Id: tpl_product_info_display.php 19690 2011-10-04 16:41:45Z drbyte $
 */
 //require(DIR_WS_MODULES . '/debug_blocks/product_info_prices.php');
?>
<div class="centerColumn" id="productGeneral" itemscope itemtype="http://schema.org/Product">

<!--bof Product Name-->
<h1 id="productName" class="productGeneral"><span itemprop="name"><?php echo $products_name; ?></span></h1>
<!--eof Product Name-->

<!--bof Form start-->
<?php echo zen_draw_form('cart_quantity', zen_href_link(zen_get_info_page($_GET['products_id']), zen_get_all_get_params(array('action')) . 'action=add_product', $request_type), 'post', 'enctype="multipart/form-data"') . "\n"; ?>
<!--eof Form start-->

<?php if ($messageStack->size('product_info') > 0) echo $messageStack->output('product_info'); ?>

<!--bof Category Icon -->
<?php if ($module_show_categories != 0) {?>
<?php
/**
 * display the category icons
 */
require($template->get_template_dir('/tpl_modules_category_icon_display.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_category_icon_display.php'); ?>
<?php } ?>
<!--eof Category Icon -->

<!--bof Add to Cart Box -->
<?php
if (CUSTOMERS_APPROVAL == 3 and TEXT_LOGIN_FOR_PRICE_BUTTON_REPLACE_SHOWROOM == '') {
  // do nothing
} else {
?>
            <?php
    $display_qty = (($flag_show_product_info_in_cart_qty == 1 and $_SESSION['cart']->in_cart($_GET['products_id'])) ? '<p>' . PRODUCTS_ORDER_QTY_TEXT_IN_CART . $_SESSION['cart']->get_quantity($_GET['products_id']) . '</p>' : '');
            if ($products_qty_box_status == 0 or $products_quantity_order_max== 1) {
              // hide the quantity box and default to 1
              $the_button = '<input type="hidden" name="cart_quantity" value="1" />' . zen_draw_hidden_field('products_id', (int)$_GET['products_id']) . zen_image_submit(BUTTON_IMAGE_IN_CART, BUTTON_IN_CART_ALT);
            } else {
              // show the quantity box
    $the_button = PRODUCTS_ORDER_QTY_TEXT . '<input type="text" name="cart_quantity" value="' . (zen_get_buy_now_qty($_GET['products_id'])) . '" maxlength="6" size="4" /><br />' . zen_get_products_quantity_min_units_display((int)$_GET['products_id']) . '<br />' . zen_draw_hidden_field('products_id', (int)$_GET['products_id']) . zen_image_submit(BUTTON_IMAGE_IN_CART, BUTTON_IN_CART_ALT);
            }
    $display_button = zen_get_buy_now_button($_GET['products_id'], $the_button);
  ?>
  <?php if ($display_qty != '' or $display_button != '') { ?>
    <div id="cartAdd">
    <?php
      echo $display_qty;
      echo $display_button;
            ?>
          </div>
  <?php } // display qty and button ?>
<?php } // CUSTOMERS_APPROVAL == 3 ?>
<!--eof Add to Cart Box-->

<!--bof Prev/Next top position -->
<?php if (PRODUCT_INFO_PREVIOUS_NEXT == 1 or PRODUCT_INFO_PREVIOUS_NEXT == 3) { ?>
<?php
/**
 * display the product previous/next helper
 */
require($template->get_template_dir('/tpl_products_next_previous.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_products_next_previous.php'); ?>
<?php } ?>
<!--eof Prev/Next top position-->

<table class="product-detail-table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
	<td class="left-side-info">

<!--bof Main Product Image -->
<?php
  if (zen_not_null($products_image)) {
  ?>
<?php
/**
 * display the main product image
 */
   require($template->get_template_dir('/tpl_modules_main_product_image.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_main_product_image.php'); ?>
<?php
  }
?>
<!--eof Main Product Image-->

<!--bof Product details list  -->
<?php if ( (($flag_show_product_info_model == 1 and $products_model != '') or ($flag_show_product_info_weight == 1 and $products_weight !=0) or ($flag_show_product_info_quantity == 1) or ($flag_show_product_info_manufacturer == 1 and !empty($manufacturers_name))) ) { ?>
<ul id="productDetailsList" class="floatingBox back">
  <?php echo (($flag_show_product_info_model == 1 and $products_model !='') ? '<li><span class="product-info-label">' . TEXT_PRODUCT_MODEL . '<span itemprop="model">' . $products_model . '</span></li>' : '') . "\n"; ?>
  <?php echo (($flag_show_product_info_weight == 1 and $products_weight !=0) ? '<li><span class="product-info-label">' . TEXT_PRODUCT_WEIGHT . '</span>' .  $products_weight . TEXT_PRODUCT_WEIGHT_UNIT . '</li>'  : '') . "\n"; ?>
  <?php echo (($flag_show_product_info_quantity == 1) ? '<li><span class="product-info-label">'. TEXT_PRODUCT_QUANTITY . ': </span>'  . $products_quantity  . '</li>'  : '') . "\n"; ?>
  <?php echo (($flag_show_product_info_manufacturer == 1 and !empty($manufacturers_name)) ? '<li><span class="product-info-label">' . TEXT_PRODUCT_MANUFACTURER . '<span itemprop="manufacturer">' . $manufacturers_name . '</span></li>' : '') . "\n"; ?>
<li><span>In Stock</span></li> 
<li><span>New</span></li>
<meta itemprop="itemCondition" content="new"/>
 </ul>
<br class="clearBoth" />
<?php
  }
?>
<!--eof Product details list -->


	</td>
	<td class="right-side-info">

<!--bof Product Price block -->
<h2 id="productPrices" class="productGeneral">
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta itemprop="availability" content="in_stock"/>
<?php
// base price
  if ($show_onetime_charges_description == 'true') {
    $one_time = '<span >' . TEXT_ONETIME_CHARGE_SYMBOL . TEXT_ONETIME_CHARGE_DESCRIPTION . '</span><br />';
  } else {
    $one_time = '';
  }
  //echo $one_time . ((zen_has_product_attributes_values((int)$_GET['products_id']) and $flag_show_product_info_starting_at == 1) ? TEXT_BASE_PRICE : '') . zen_get_products_display_price((int)$_GET['products_id']);
  echo $one_time . ((zen_has_product_attributes_values((int)$_GET['products_id']) and $flag_show_product_info_starting_at == 1) ? TEXT_BASE_PRICE : '') . '<meta itemprop="priceCurrency" content="GBP" /><span itemprop="price">' . get_products_display_price((int)$_GET['products_id']) . '</span>';
?></h2>
<!--eof Product Price block -->
</div>
<!-- / Offer -->
<!--bof free ship icon  -->
<?php if(zen_get_product_is_always_free_shipping($products_id_current) && $flag_show_product_info_free_shipping) { ?>
<div id="freeShippingIcon"><?php echo TEXT_PRODUCT_FREE_SHIPPING_ICON; ?></div>
<?php } ?>
<!--eof free ship icon  -->

 <!--bof Product description -->
<?php if ($products_description != '') { ?>
<div id="productDescription" class="productGeneral biggerText"><span itemprop="description"><?php echo stripslashes($products_description); ?></span></div>
<?php } ?>
<!--eof Product description -->
<br class="clearBoth" />

<!--bof Attributes Module -->
<?php
  if ($pr_attr->fields['total'] > 0) {
?>
<?php
/**
 * display the product atributes
 */
  require($template->get_template_dir('/tpl_modules_attributes.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_attributes.php'); ?>
<?php
  }
?>
<!--eof Attributes Module -->

<!--bof Quantity Discounts table -->
<?php
  if ($products_discount_type != 0) { ?>
<?php
/**
 * display the products quantity discount
 */
 require($template->get_template_dir('/tpl_modules_products_quantity_discounts.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_products_quantity_discounts.php'); ?>
<?php
  }
?>
<!--eof Quantity Discounts table -->
<br class="clearBoth" />
 
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style ">
<!-- Place this tag where you want the share button to render. -->
<div class="g-plus" data-action="share"></div>

<!-- added for dgReview on product page -->

	<?php require($template->get_template_dir('tpl_dgReview.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_dgReview.php');?>
	
<!-- added for dgReview on product page -->

<!-- Place this tag after the last share tag. -->
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>
<a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
<a class="addthis_button_tweet"></a>
<a class="addthis_counter addthis_pill_style"></a>
</div>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4e1cb9cd525e5a84"></script>
<!-- AddThis Button END -->

	</td>
</tr>
</table>

<!--bof Additional Product Images -->
<?php
/**
 * display the products additional images
 */
  require($template->get_template_dir('/tpl_modules_additional_images.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_additional_images.php'); ?>
<!--eof Additional Product Images -->

<!--bof Prev/Next bottom position -->
<?php if (PRODUCT_INFO_PREVIOUS_NEXT == 2 or PRODUCT_INFO_PREVIOUS_NEXT == 3) { ?>
<?php
/**
 * display the product previous/next helper
 */
 require($template->get_template_dir('/tpl_products_next_previous.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_products_next_previous.php'); ?>
<?php } ?>
<!--eof Prev/Next bottom position -->

<!--bof Reviews button and count-->
<?php
  if ($flag_show_product_info_reviews == 1) {
    // if more than 0 reviews, then show reviews button; otherwise, show the "write review" button
    if ($reviews->fields['count'] > 0 ) { ?>
<div id="productReviewLink" class="buttonRow back"><?php echo '<a href="' . zen_href_link(FILENAME_PRODUCT_REVIEWS, zen_get_all_get_params()) . '">' . zen_image_button(BUTTON_IMAGE_REVIEWS, BUTTON_REVIEWS_ALT) . '</a>'; ?></div>
<br class="clearBoth" />
<div itemprop="review" itemscope itemtype="http://schema.org/AggregateRating">
<meta itemprop="reviewCount" content="<?php echo ($flag_show_product_info_reviews_count == 1 ? $reviews->fields['count'] : ''); ?>"/>
<p class="reviewCount"><?php echo ($flag_show_product_info_reviews_count == 1 ? TEXT_CURRENT_REVIEWS . ' ' . $reviews->fields['count'] : ''); ?></p>
<?php } else { ?>
<div id="productReviewLink" class="buttonRow back"><?php echo '<a href="' . zen_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, zen_get_all_get_params(array())) . '">' . zen_image_button(BUTTON_IMAGE_WRITE_REVIEW, BUTTON_WRITE_REVIEW_ALT) . '</a>'; ?></div>
<br class="clearBoth" />
<?php
  }
}
?>
<!--eof Reviews button and count -->
</div>

<!--bof Product date added/available-->
<?php
  if ($products_date_available > date('Y-m-d H:i:s')) {
    if ($flag_show_product_info_date_available == 1) {
?>
  <p id="productDateAvailable" class="productGeneral centeredContent"><?php echo sprintf(TEXT_DATE_AVAILABLE, zen_date_long($products_date_available)); ?></p>
<?php
    }
  } else {
    if ($flag_show_product_info_date_added == 1) {
?>
      <p id="productDateAdded" class="productGeneral centeredContent"><?php echo sprintf(TEXT_DATE_ADDED, zen_date_long($products_date_added)); ?></p>
<?php
    } // $flag_show_product_info_date_added
  }
?>
<!--eof Product date added/available -->

<!--bof Product URL -->
<?php
  if (zen_not_null($products_url)) {
    if ($flag_show_product_info_url == 1) {
?>
    <p id="productInfoLink" class="productGeneral centeredContent"><?php echo sprintf(TEXT_MORE_INFORMATION, zen_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($products_url), 'NONSSL', true, false)); ?></p>
<?php
    } // $flag_show_product_info_url
  }
?>
<!--eof Product URL -->

<!--bof also purchased products module-->
<?php require($template->get_template_dir('tpl_modules_also_purchased_products.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_modules_also_purchased_products.php');?>
<!--eof also purchased products module-->

<!--bof Form close-->
</form>
<!--bof Form close-->
<!-- BEG: Multi Cross-Sell mod -->
<?php
// THIS CODE WOULD BE ADDED INTO YOUR TPL_PRODUCT_INFO_DISPLAY.PHP WHEREVER YOU WANT TO DISPLAY ALL THE CROSS_SELL BOXES:
  if(defined('MXSELL_ENABLED') && MXSELL_ENABLED == 'true') {
    for ( $mxsell = 1; $mxsell <= MXSELL_NUM_OF_TABLES; $mxsell++ ) { // show all cross sells
      require($template->get_template_dir('tpl_modules_multi_xsell_products.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_modules_multi_xsell_products.php');
    }
  }
?>
<!-- END: Multi Cross-Sell mod -->
</div>
```> **Johnnycopilot:**
>
> Simon22 thanks :D. I have the same template as you, so I am very interested in your post. I haven't had time to figure out what everyone else is saying to do. I was looking over what Schoolboy said, but just haven't figured it out as of yet. The changes that I did to my template are posted on, or near, the first page of this thread in case you want to look. I didn't post (here in this thread) the code I added in which the code on my zen cart page exactly matched the code in Melanie's instructions, I am assuming that code is ok??. I would LOVE to see your  includes/templates/my_template-templates/tpl_product_info_display.php page!!! That would make my day. I have tried and tried and tried and tried to get that sucker working!  Thanks!!!
28 Mar 2013, 6:28 PM
#77
simon22 avatar

simon22

New Zenner

Join Date:
Jun 2012
Location:
Milton Keynes, United Kingdom
Posts:
23
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

PS. This is a website I found helpful when trying to sort this out...

http://pro-webs.net/blog/2012/09/25/customizing-google-snippets-with-schema-org-microdata/

If you figure out how to do it be sure to post back here as the forum is a valuable place for everyone! I couldn't finish it in the end because my brain couldn't handle it all :wacko: but it didn't cost much to get someone on oDesk to do it for me, when I was looking on the forum at the time there was limited posts about structured markup.

3 Apr 2013, 8:47 PM
#78
rescoccc avatar

rescoccc

Totally Zenned

Join Date:
May 2010
Location:
WA State
Posts:
1,700
Plugin Contributions:
2

Re: Implementing Google Rich Snippets.

This was working perfectly and generating all the data in Google's rich snippet testing tool, until today. Now it's producing only the image and breadcrumb data. No title, no description, no price, etc. Anybody else seeing this problem?

The best way to learn is to try stuff. But, back it up first.

4 Apr 2013, 6:47 AM
#79
design75 avatar

design75

Totally Zenned

Join Date:
Dec 2009
Location:
Amersfoort, The Netherlands
Posts:
2,862
Plugin Contributions:
5

Re: Implementing Google Rich Snippets.

RescoCCC:

This was working perfectly and generating all the data in Google's rich snippet testing tool, until today. Now it's producing only the image and breadcrumb data. No title, no description, no price, etc. Anybody else seeing this problem?
Still working for me, on multiple sites. Did you change anything?

4 Apr 2013, 7:15 AM
#80
schoolboy avatar

schoolboy

Totally Zenned

Join Date:
Jun 2005
Location:
Cumbria, UK
Posts:
10,327
Plugin Contributions:
0

Re: Implementing Google Rich Snippets.

RescoCCC:

This was working perfectly and generating all the data in Google's rich snippet testing tool, until today. Now it's producing only the image and breadcrumb data. No title, no description, no price, etc. Anybody else seeing this problem?

Look at the page source (html). See if the Item Property / Item Type tags are being properly parsed into the HTML.

20 years a Zencart User