{"id":1799,"date":"2012-09-25T10:20:10","date_gmt":"2012-09-25T14:20:10","guid":{"rendered":"http:\/\/pro-webs.net\/blog\/?p=1799"},"modified":"2016-11-30T09:21:53","modified_gmt":"2016-11-30T13:21:53","slug":"customizing-google-snippets-with-schema-org-microdata","status":"publish","type":"post","link":"https:\/\/pro-webs.net\/blog\/2012\/09\/25\/customizing-google-snippets-with-schema-org-microdata\/","title":{"rendered":"Customizing Google Snippets with Microdata"},"content":{"rendered":"<p>Zen Cart is certainly powerful software, but it&#8217;s prowess is the dynamic platform of functions in PHP which are usable in many different calls from different areas of the template. Social media has been a challenge for Zen Cart, specifically pointing out the product image properly for social sharing. Because Zen Cart has many different page templates and only one real &lt;head&gt; template&#8230; the challenge for making Google + for example select the product image has been a rough road.<\/p>\n<p>However, Microdata, from Schema.org, Good Relations and Rich Snippets opens the door for us. Now Facebook has their own system, but should support Microdata as well. Schema.org is a universal project which provides a collection of markup tags to markup pages in ways recognized by major search engines. Search engines including Bing, Google, Yahoo! and Yandex rely on this system to improve the display of search results, making it easier for people to search and find web pages.<\/p>\n<p>In this post I will show you how to implement the Product Schema Microdata for your product pages. Now this tutorial is for 1.5.0, but if you&#8217;re sharp you can easily implement it in other Zen Cart versions.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1929\" src=\"http:\/\/pro-webs.net\/blog\/wp-content\/uploads\/2012\/09\/newsnippets.jpg\" alt=\"newsnippets\" width=\"593\" height=\"203\" srcset=\"https:\/\/pro-webs.net\/blog\/wp-content\/uploads\/2012\/09\/newsnippets.jpg 593w, https:\/\/pro-webs.net\/blog\/wp-content\/uploads\/2012\/09\/newsnippets-300x102.jpg 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/p>\n<p><span style=\"color: #000000;\"><strong>So the applicable tags we have available currently for Products are as follows:<\/strong><\/span><\/p>\n<ul>\n<li>name &#8211; name of the product.<\/li>\n<li>description &#8211; A short description of the item.<\/li>\n<li>image &#8211; URL of an image of the item.<\/li>\n<li>price &#8211; The price of the product. A floating point number. You may use either a decimal point (&#8216;.&#8217;) or a comma (&#8216;,&#8217;) as a separator.<\/li>\n<li>currency &#8211; The currency used to describe the product price, in three-letter ISO format.<\/li>\n<li>quantity &#8211; Number in stock<\/li>\n<li>availability &#8211; out_of_stock, in_stock, instore_only or preorder<\/li>\n<li>brand\/manufacturer &#8211; The brand of the product.<\/li>\n<li>condition &#8211; new, used or refurbished.<\/li>\n<li>identifier &#8211; asin, isbn, mpn, sku or upc.<\/li>\n<li>breadcrumb &#8211; Bread crumbs, path to category<\/li>\n<li>category &#8211; The product category\u2014for example, &#8220;<code>Books-Fiction<\/code>&#8220;, &#8220;<code>Tools<\/code>&#8220;, or &#8220;<code>Cars<\/code>&#8220;. You can include multiple categories. Any value is accepted, but Google recognizes the categories described <a href=\"http:\/\/www.google.com\/support\/merchants\/bin\/answer.py?answer=160081\" target=\"_blank\">in this article<\/a>.<\/li>\n<li>seller &#8211; The seller of the product. Can contain a Person or Organization.<\/li>\n<li>offer language markup is included via your Zen Cart meta tag (lang=&#8221;<a>en<\/a>&#8220;). This is not microdata markup any longer, as it should never have been =)<\/li>\n<li>payment methods<\/li>\n<li>delivery lead time<\/li>\n<li>offer delivery area<\/li>\n<\/ul>\n<h3><span style=\"color: #ff0000;\"><strong>!!!!UPDATE\u00a0\u00a0 11\/30\/2016 !!!!! <\/strong><\/span><\/h3>\n<h3><span style=\"color: #ff0000;\"><strong>If you are still using this the breadcrumbs instructions have changed below.<\/strong><\/span><\/h3>\n<h3><span style=\"color: #ff0000;\"><strong>!!!!UPDATE\u00a0\u00a0 2\/3\/2015 !!!!! <\/strong><\/span><\/h3>\n<h3><span style=\"color: #ff0000;\"><strong>I have developed a module that nearly anyone can install that does this and much more. It&#8217;s BETA, but give it a shot <a style=\"color: #ff0000;\" title=\"Zen Cart Super Data Markup Module\" href=\"https:\/\/zencart.codes\/index.php?main_page=product_info&amp;cPath=34&amp;products_id=47\" target=\"_blank\">HERE<\/a><\/strong><\/span><\/h3>\n<h3><span style=\"color: #ff0000;\"><strong>!!!!UPDATE\u00a0\u00a0 2\/3\/2015 !!!!! <\/strong><\/span><\/h3>\n<p><span style=\"color: #ff0000;\"><strong>*** Update 1\/29\/2013 to remove (itemscope itemtype=&#8221;<a><span style=\"color: #ff0000;\">http:\/\/schema.org\/Product<\/span><\/a>&#8220;) from html_header.php and move more towards Microdata markup more suitable for products and added breadcrumbs and category tags.<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>*** Update 3\/21\/2013 Added offer language and submission tool for Google<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>*** Update 4\/17\/2013 Added Payments Accepted, Delivery Lead Time and Delivery Area<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>***Update 10\/25\/2013 solved specials issue for pricing<\/strong><\/span><\/p>\n<h2><span style=\"color: #000000;\">Implementation<\/span><\/h2>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the identifier for your product&#8217;s image.<\/strong><em><strong><br \/>\n<\/strong><\/em><\/span><\/p>\n<p>This method, while imperfect will include all additional images and attribute images. The imperfect part is that it will include cross sell images (if installed) and also purchased etc. The second optional method will include ONLY the main product image, but no additional product images AND has some struggle with Image Handler (if installed). They both work fine with Zen Lightbox (if installed). The second option produces results less than desirable, and for now we encourage you to use the first.<\/p>\n<p><span style=\"color: #0000ff;\"><strong>First Option In includes\/functions\/html_output.php line 199<\/strong> <\/span><\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>change the 2cnd image tag<\/strong><\/span><\/em><\/p>\n<p>$image = &#8216;&lt;img src=&#8221;&#8216; . zen_output_string($src) . &#8216;&#8221; alt=&#8221;&#8216; . zen_output_string($alt) . &#8216;&#8221;&#8216;;<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>to<\/strong><\/span><\/em><\/p>\n<p>$image = &#8216;&lt;img itemprop=&#8221;image&#8221; src=&#8221;&#8216; . zen_output_string($src) . &#8216;&#8221; alt=&#8221;&#8216; . zen_output_string($alt) . &#8216;&#8221;&#8216;;<\/p>\n<p><span style=\"color: #0000ff;\"><strong>Second Option In includes\/templates\/your_template\/tpl_modules_main_product_image.php<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>find 2 instances of \u00a0<\/strong><\/em><\/span><\/p>\n<p>&lt;span class=&#8221;imgLink&#8221;&gt;<\/p>\n<p><em><strong>and change to<\/strong><\/em><\/p>\n<p>&lt;span \u00a0itemprop=&#8221;image&#8221; class=&#8221;imgLink&#8221;&gt;<\/p>\n<p><span style=\"color: #0000ff;\"><strong>If you are using Zen Lightbox you can do the following with a little better results for option 2.<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>find<\/strong><\/em><\/span><\/p>\n<p>$rel . &#8216;&#8221; title=&#8221;&#8216; . addslashes($products_name) . &#8216;&#8221;&gt;<\/p>\n<p><strong><em>and change to<\/em><\/strong><\/p>\n<p>$rel . &#8216;&#8221; title=&#8221;&#8216; . addslashes($products_name) . &#8216;&#8221;\u00a0itemprop=&#8221;image&#8221;&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the identifier for your product&#8217;s name.<\/strong><em><strong><br \/>\n<\/strong><\/em><\/span><\/p>\n<p><span style=\"color: #0000ff;\"><strong>In includes\/templates\/your_template\/templates\/tpl_product_info_display.php<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Locate your product name<\/strong><\/em><\/span><\/p>\n<p>&lt;h1 id=&#8221;productName&#8221;&gt;&lt;?php echo $products_name; ?&gt;&lt;\/h1&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Now wrap it in the property name tag<\/strong><\/em><\/span><\/p>\n<p>&lt;h1 id=&#8221;productName&#8221;&gt;&lt;span itemprop=&#8221;<a>name<\/a>&#8220;&gt;&lt;?php echo $products_name; ?&gt;&lt;\/span&gt;&lt;\/h1&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>This method is the OLD way, and perfectly acceptable if you don&#8217;t use a great deal of specials.<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the identifier for your product&#8217;s price &amp; currency type. Note: We have added only 1 currency value, not multiple.<\/strong><em><strong><br \/>\n<\/strong><\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Locate your price<\/strong><\/em><\/span><\/p>\n<p>&lt;h2 id=&#8221;productPrices&#8221;&gt;<br \/>\n&lt;?php<br \/>\n\/\/ base price<br \/>\nif ($show_onetime_charges_description == &#8216;true&#8217;) {<br \/>\n$one_time = &#8216;&lt;span &gt;&#8217; . TEXT_ONETIME_CHARGE_SYMBOL . TEXT_ONETIME_CHARGE_DESCRIPTION . &#8216;&lt;\/span&gt;&lt;br \/&gt;&#8217;;<br \/>\n} else {<br \/>\n$one_time = &#8221;;<br \/>\n}<br \/>\necho $one_time . ((zen_has_product_attributes_values((int)$_GET[&#8216;products_id&#8217;]) and $flag_show_product_info_starting_at == 1) ? TEXT_BASE_PRICE : &#8221;) . zen_get_products_display_price((int)$_GET[&#8216;products_id&#8217;]);<br \/>\n?&gt;&lt;\/h2&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Now we will wrap it in the price property<\/strong><\/em><\/span><\/p>\n<p>&lt;h2 id=&#8221;productPrices&#8221;&gt;<br \/>\n&lt;?php<br \/>\n\/\/ base price<br \/>\nif ($show_onetime_charges_description == &#8216;true&#8217;) {<br \/>\n$one_time = &#8216;&lt;span &gt;&#8217; . TEXT_ONETIME_CHARGE_SYMBOL . TEXT_ONETIME_CHARGE_DESCRIPTION . &#8216;&lt;\/span&gt;&lt;br \/&gt;&#8217;;<br \/>\n} else {<br \/>\n$one_time = &#8221;;<br \/>\n}<br \/>\necho $one_time . ((zen_has_product_attributes_values((int)$_GET[&#8216;products_id&#8217;]) and $flag_show_product_info_starting_at == 1) ? TEXT_BASE_PRICE : &#8221;) . &#8216;&lt;span itemprop=&#8221;offerDetails&#8221; itemscope itemtype=&#8221;http:\/\/data-vocabulary.org\/Offer&#8221;&gt;&lt;meta itemprop=&#8221;currency&#8221; content=&#8221;USD&#8221;\/&gt;&lt;span itemprop=&#8221;price&#8221;&gt;&#8217; . zen_get_products_display_price((int)$_GET[&#8216;products_id&#8217;]) . &#8216;&lt;\/span&gt;&lt;\/span&gt;&#8217;;<br \/>\n?&gt;&lt;\/h2&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong>Prices markup NEW way, no errors. Before you do this, to better understand, please <a href=\"http:\/\/pro-webs.net\/blog\/2013\/10\/27\/oops-google\/\">read this post<\/a>\u00a0 <\/strong><\/p>\n<p>So I have been struggling with this for NO good reason. There is NO good reason to include the specials prices at all! Google caches this information, so we should be just giving them the product&#8217;s regular price anyhow.<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>Find<\/strong><\/span><\/em><\/p>\n<p>&lt;ul id=&#8221;productDetailsList&#8221; style=&#8221;font-size:11px;&#8221;&gt;<\/p>\n<p><strong><em><span style=\"color: #ff0000;\">And somewhere in your list add this list item.<\/span><\/em><\/strong><\/p>\n<p>&lt;li&gt;Products Regular Price: $&lt;span itemprop=&#8221;offerDetails&#8221; itemscope itemtype=&#8221;http:\/\/data-vocabulary.org\/Offer&#8221;&gt;&lt;meta itemprop=&#8221;currency&#8221; content=&#8221;USD&#8221;\/&gt;&lt;span itemprop=&#8221;price&#8221;&gt;&lt;?php echo $products_price = zen_get_products_base_price($product_info-&gt;fields[&#8216;products_id&#8217;]); ?&gt;&lt;\/span&gt;&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong>Only accept 1 currency? You can use a Meta Tag to set your currency markup.<\/strong><\/p>\n<p><span style=\"color: #0000ff;\"><strong>In includes\/templates\/your_template\/common\/html_header.php<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Find<\/strong><\/em><\/span><\/p>\n<p>&lt;meta http-equiv=&#8221;imagetoolbar&#8221; content=&#8221;no&#8221; \/&gt;<\/p>\n<p><em><strong><span style=\"color: #ff0000;\">and on the next line add<\/span><\/strong><\/em><\/p>\n<p>&lt;meta itemprop=&#8221;currency&#8221; content=&#8221;USD&#8221; \/&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the identifier for your product&#8217;s description.<\/strong><em><strong><br \/>\n<\/strong><\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\">\u00a0<em><strong>Locate your product description<\/strong><\/em><\/span><\/p>\n<p>&lt;div id=&#8221;productDescription&#8221;&gt;&lt;?php echo stripslashes($products_description); ?&gt;&lt;\/div&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>and wrap it in the description property tag<\/strong><\/em><\/span><\/p>\n<p>&lt;div id=&#8221;productDescription&#8221;&gt;&lt;span itemprop=&#8221;description&#8221;&gt;&lt;?php echo stripslashes($products_description); ?&gt;&lt;\/span&gt;&lt;\/div&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the identifier for your product&#8217;s brand\/manufacturer.<\/strong><em><strong><br \/>\n<\/strong><\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Locate the manufacturer&#8217;s function<\/strong><\/em><\/span><\/p>\n<p>&lt;?php echo (($flag_show_product_info_manufacturer == 1 and !empty($manufacturers_name)) ? &#8216;&lt;li&gt;&#8217; . TEXT_PRODUCT_MANUFACTURER . $manufacturers_name . &#8216;&lt;\/li&gt;&#8217; : &#8221;) . &#8220;\\n&#8221;; ?&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>now you will wrap it in either the brand or manufacturer property tag, whichever is most appropriate for your cart<\/strong><\/em><\/span><\/p>\n<p>&lt;?php echo (($flag_show_product_info_manufacturer == 1 and !empty($manufacturers_name)) ? &#8216;&lt;li&gt;&#8217; . TEXT_PRODUCT_MANUFACTURER . &#8216;&lt;span itemprop=&#8221;brand&#8221;&gt;&#8217; . $manufacturers_name . &#8216;&lt;\/span&gt;&lt;\/li&gt;&#8217; : &#8221;) . &#8220;\\n&#8221;; ?&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong><span style=\"color: #000000;\">Using the identifier model. Locate your model number line.<\/span><\/strong><em><strong><br \/>\n<\/strong><\/em><\/p>\n<p>&lt;?php echo (($flag_show_product_info_model == 1 and $products_model !=&#8221;) ? &#8216;&lt;li&gt;&#8217; . TEXT_PRODUCT_MODEL . $products_model . &#8216;&lt;\/li&gt;&#8217; : &#8221;) . &#8220;\\n&#8221;; ?&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Now we will wrap it in the mpn (manufacturers part number) identifier property<\/strong><\/em><\/span><\/p>\n<p>&lt;?php echo (($flag_show_product_info_model == 1 and $products_model !=&#8221;) ? &#8216;&lt;li&gt;&#8217; . TEXT_PRODUCT_MODEL . &#8216;&lt;span itemprop=&#8221;identifier&#8221; content=&#8221;mpn:&#8217;\u00a0 .\u00a0 $products_model . &#8216;&#8221;&gt;&#8217; . $products_model . &#8216;&lt;\/span&gt;&lt;\/li&gt;&#8217; : &#8221;) . &#8220;\\n&#8221;; ?&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong><span style=\"color: #000000;\">Using the quantity identifier. Locate your quantity line.<\/span><\/strong><em><strong><br \/>\n<\/strong><\/em><\/p>\n<p>&lt;?php echo (($flag_show_product_info_quantity == 1) ? &#8216;&lt;li&gt;&#8217; . $products_quantity . TEXT_PRODUCT_QUANTITY . &#8216;&lt;\/li&gt;&#8217;\u00a0 : &#8221;) . &#8220;\\n&#8221;; ?&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Now we will wrap it in the quantity property<\/strong><\/em><\/span><\/p>\n<p>&lt;?php echo (($flag_show_product_info_quantity == 1) ? &#8216;&lt;li&gt;&#8217; . &#8216;&lt;span itemprop=&#8221;quantity&#8221;&gt;&#8217; . $products_quantity . &#8216;&lt;\/span&gt;&#8217; .\u00a0 TEXT_PRODUCT_QUANTITY . &#8216;&lt;\/li&gt;&#8217;\u00a0 : &#8221;) . &#8220;\\n&#8221;; ?&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the Availability property<\/strong><\/span><\/p>\n<p>Just a quick way to dynamically deliver the value of in stock our not from quantity.<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>In the list you just edited for model and such locate the closing &lt;\/ul&gt; tag and on the line right above it add the following. Acceptable values are (in_stock, out_of_stock, instore_only or preorder)<\/strong><\/span><\/em><\/p>\n<p>&lt;?php if ($products_quantity &gt; 0) { ?&gt;&lt;li&gt;&lt;span itemprop=&#8221;availability&#8221; content=&#8221;in_stock&#8221;&gt;In Stock&lt;\/span&gt;&lt;\/li&gt;&lt;?php }?&gt;&lt;?php if ($products_quantity == 0) { ?&gt;&lt;li&gt;&lt;span itemprop=&#8221;availability&#8221; content=&#8221;out_of_stock&#8221;&gt;Out of Stock&lt;\/span&gt;&lt;\/li&gt;&lt;?php }?&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using the Condition property<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>We will fake this for a vanilla Zen Cart as well by adding another line just above the closing &lt;\/ul&gt; as in the previous instruction. Values which can be used are (new, used and refurbished)<\/strong><\/em><\/span><\/p>\n<p>&lt;li&gt;&lt;span itemprop=&#8221;condition&#8221; content=&#8221;new&#8221;&gt;New&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>Lastly to make this markup most flexible for search engines and other platforms to understand locate the opening div for your product content in tpl_product_info_display.php<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><span style=\"color: #000000;\"><strong>Using Rich Snippets to identify the category<\/strong><\/span><\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>the section marked details, find<\/strong><\/span><\/em><\/p>\n<p>&lt;\/ul&gt;<br \/>\n&lt;br \/&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;!&#8211;eof Product details list &#8211;&gt;<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>Just before this line add<\/strong><\/span><\/em><\/p>\n<p>&lt;li&gt;Category: &lt;?php echo &#8216;&lt;span itemprop=&#8221;category&#8221; content=&#8221;&#8216; . $categories-&gt;fields[&#8216;categories_name&#8217;] . &#8216;&#8221;&gt;&#8217; . $categories-&gt;fields[&#8216;categories_name&#8217;] ; ?&gt;&lt;\/li&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong><span style=\"color: #000000;\">Using Rich Snippets to identify the payment methods you accept. The syntax provided is for Visa, MasterCard, Discover and PayPal. Other methods can be found here (<a href=\"http:\/\/www.heppnetz.de\/ontologies\/goodrelations\/v1#PaymentMethod\" target=\"_blank\"><span style=\"color: #000000;\">http:\/\/www.heppnetz.de\/ontologies\/goodrelations\/v1#PaymentMethod<\/span><\/a>)<\/span><br \/>\n<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>the section marked details, find<\/strong><\/em><\/span><\/p>\n<p>&lt;\/ul&gt;<br \/>\n&lt;br \/&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;!&#8211;eof Product details list &#8211;&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Just before this line add<\/strong><\/em><\/span><\/p>\n<p>&lt;li&gt;Payments Accepted: &lt;span itemprop=&#8221;http:\/\/purl.org\/goodrelations\/v1#acceptedPaymentMethods&#8221; href=&#8221;http:\/\/purl.org\/goodrelations\/v1#PayPal&#8221; \/&gt;PayPal&lt;\/span&gt;, &lt;span itemprop=&#8221;http:\/\/purl.org\/goodrelations\/v1#acceptedPaymentMethods&#8221; href=&#8221;http:\/\/purl.org\/goodrelations\/v1#VISA&#8221; \/&gt;Visa&lt;\/span&gt;, &lt;span itemprop=&#8221;http:\/\/purl.org\/goodrelations\/v1#acceptedPaymentMethods&#8221; href=&#8221;http:\/\/purl.org\/goodrelations\/v1#MasterCard&#8221; \/&gt;MasterCard&lt;\/span&gt;, &lt;span itemprop=&#8221;http:\/\/purl.org\/goodrelations\/v1#acceptedPaymentMethods&#8221; href=&#8221;http:\/\/purl.org\/goodrelations\/v1#Discover&#8221; \/&gt;Discover&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong><span style=\"color: #000000;\">Using Rich Snippets to identify the general delivery lead time for your products<\/span><br \/>\n<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>the section marked details, find<\/strong><\/em><\/span><\/p>\n<p>&lt;\/ul&gt;<br \/>\n&lt;br \/&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;!&#8211;eof Product details list &#8211;&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Just before this line add<\/strong><\/em><\/span><\/p>\n<p>&lt;li&gt;Delivery Lead Time: &lt;span itemprop=&#8221;deliveryLeadTime&#8221;&gt;21 days&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong><span style=\"color: #0000ff;\">Using Rich Snippets to identify the seller (you) for your products. Unless you are running a multi-seller product catalog, this is unnecessary and redundant<\/span><br \/>\n<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>the section marked details, find<\/strong><\/em><\/span><\/p>\n<p>&lt;\/ul&gt;<br \/>\n&lt;br \/&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;!&#8211;eof Product details list &#8211;&gt;<\/p>\n<p><em><strong><span style=\"color: #ff0000;\">Somewhere in this list add<\/span><br \/>\n<\/strong><\/em><\/p>\n<p>&lt;li&gt;&lt;b&gt;Available at:&lt;\/b&gt; &lt;span itemprop=&#8221;seller&#8221;&gt;Your Name&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>or<\/p>\n<p>&lt;li&gt;&lt;b&gt;Available at:&lt;\/b&gt; &lt;span itemprop=&#8221;seller&#8221;&gt;&lt;?php echo (STORE_NAME );\u00a0 ?&gt;&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><strong><span style=\"color: #000000;\">Using Rich Snippets to identify the shipping region(s) for your products. Note that the proper 2 letter country code must be used for the content=&#8221;&#8221;, but the text following can be express however you like.<\/span><br \/>\n<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>the section marked details, find<\/strong><\/em><\/span><\/p>\n<p>&lt;\/ul&gt;<br \/>\n&lt;br \/&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;!&#8211;eof Product details list &#8211;&gt;<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Just before this line add<\/strong><\/em><\/span><\/p>\n<p>&lt;li&gt;Shipping to: &lt;span itemprop=&#8221;eligibleRegion&#8221; content=&#8221;US&#8221;&gt;United States&lt;\/span&gt; &amp;amp; &lt;span itemprop=&#8221;eligibleRegion&#8221; content=&#8221;CA&#8221;&gt;Canada&lt;\/span&gt;&lt;\/li&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p><span style=\"color: #000000;\"><strong>Setting up the container for the product schema<\/strong><\/span><\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>Find<\/strong><\/span><\/em><\/p>\n<p>&lt;div id=&#8221;productGeneral&#8221;&gt;<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>and add this to it<\/strong><\/span><\/em><\/p>\n<p>itemscope itemtype=&#8221;http:\/\/data-vocabulary.org\/Product&#8221;<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>So it looks like this<\/strong><\/span><\/em><\/p>\n<p>&lt;div id=&#8221;productGeneral&#8221; itemscope itemtype=&#8221;http:\/\/data-vocabulary.org\/Product&#8221;&gt;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p><span style=\"color: #000000;\"><strong>Adding the breadcrumb identifier for Rich Snippets<\/strong><\/span><\/p>\n<p><span style=\"color: #0000ff;\"><strong>In\u00a0includes\/classes\/breadcrumb.php on line 57<\/strong><\/span><\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>Find<\/strong><\/span><\/em><\/p>\n<p>if ($this-&gt;_trail[$i][&#8216;title&#8217;] == HEADER_TITLE_CATALOG) {<br \/>\n$trail_string .= &#8216;\u00a0 &lt;a href=&#8221;&#8216; . HTTP_SERVER . DIR_WS_CATALOG . &#8216;&#8221;&gt;&#8217; . $this-&gt;_trail[$i][&#8216;title&#8217;] . &#8216;&lt;\/a&gt;&#8217;;<br \/>\n} else {<br \/>\n$trail_string .= &#8216;\u00a0 &lt;a href=&#8221;&#8216; . $this-&gt;_trail[$i][&#8216;link&#8217;] . &#8216;&#8221;&gt;&#8217; . $this-&gt;_trail[$i][&#8216;title&#8217;] . &#8216;&lt;\/a&gt;&#8217;;<\/p>\n<p><em><span style=\"color: #ff0000;\"><strong>and change it to<\/strong><\/span><\/em><\/p>\n<pre class=\"bbcode_code\">if ($this-&gt;_trail[$i]['title'] == HEADER_TITLE_CATALOG) {\r\n          $trail_string .= '  <b>&lt;span<\/b> vocab=\"http:\/\/schema.org\/\" typeof=\"BreadcrumbList\"&gt;<b>&lt;span<\/b> property=\"itemListElement\" typeof=\"ListItem\"&gt;<b>&lt;a<\/b> href=\"' . HTTP_SERVER . DIR_WS_CATALOG . '\"&gt;' . $this-&gt;_trail[$i]['title'] . '<b>&lt;\/a&gt;&lt;\/span&gt;&lt;\/span&gt;<\/b>';\r\n        } else {\r\n          $trail_string .= '  <b>&lt;span<\/b> property=\"itemListElement\" typeof=\"ListItem\"&gt;<b>&lt;a<\/b> property=\"item\" typeof=\"WebPage\" href=\"' . $this-&gt;_trail[$i]['link'] . '\"&gt;<b>&lt;span<\/b> property=\"name\"&gt;' . $this-&gt;_trail[$i]['title'] . '<b>&lt;\/span&gt;&lt;\/a&gt;&lt;\/span&gt;<\/b>';<\/pre>\n<hr \/>\n<h4><span style=\"color: #ff0000;\"><strong>This is no longer required, reverse it in your file and just use the edit right above.<\/strong><\/span><\/h4>\n<p><del><strong><span style=\"color: #0000ff;\">Then in includes\/templates\/your_template\/common\/tpl_main_page.php<\/span><\/strong><\/del><\/p>\n<p><del><em><span style=\"color: #ff0000;\"><strong>Find<\/strong><\/span><\/em><\/del><\/p>\n<p><del>&lt;div id=&#8221;navBreadCrumb&#8221;&gt;&lt;?php echo $breadcrumb-&gt;trail(BREAD_CRUMBS_SEPARATOR); ?&gt;&lt;\/div&gt;<\/del><\/p>\n<p><del><em><span style=\"color: #ff0000;\"><strong>and change it to<\/strong><\/span><\/em><\/del><\/p>\n<p><del>&lt;div id=&#8221;navBreadCrumb&#8221; itemscope itemtype=&#8221;http:\/\/data-vocabulary.org\/Breadcrumb&#8221;&gt;&lt;?php echo $breadcrumb-&gt;trail(BREAD_CRUMBS_SEPARATOR); ?&gt;&lt;\/div&gt;<\/del><\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>Now go over here and let Google see if they can read your changes properly using the <a title=\"Structured Data Testing Tool\" href=\"http:\/\/www.google.com\/webmasters\/tools\/richsnippets\" target=\"_blank\">Structured Data Testing Tool<\/a>. Check our testing site <a href=\"http:\/\/www.google.com\/webmasters\/tools\/richsnippets?url=https%3A%2F%2Foutdoorcountrydecor.com%2Feconomy-solar-powered-flagpole-light&amp;html=\" target=\"_blank\">here in the tool<\/a>. Once you have tested your snippets Google now provides a means to let them know you are using rich snippets by submitting this <a title=\"Let Google know about your snippets\" href=\"http:\/\/support.google.com\/webmasters\/bin\/request.py?&amp;contact_type=rich_snippets_feedback\" target=\"_blank\">form<\/a>. The nice part is that they will respond and note any issues they find to better help you come to completeness.<\/p>\n<p>There are more formats for the product schema that we will be looking to incorporate such as review, aggregateRating and offers. Stay tuned, we will update when this project has changes. These items weren&#8217;t initially included as they require a module to display in the product page or the data output is wrong for the Schema, so there will be some core changes and such to incorporate these additional properties for Zen Cart.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post I will show you how to implement the Product Schema Microdata for your product pages. Now this tutorial is for 1.5.0, but if you&#8217;re sharp you can easily implement it in other Zen Cart versions.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[2572,2561,646,2563,2567,2532,2559,2568,72,2533,2530,2184,2183,2558,2529,2538,2436,2566,1199,2527,2535,2537,2272,2560,2263,2562,2540,2565,2564,2571,2539,2528,2531,906,2573,2536,2534,2626],"class_list":["post-1799","post","type-post","status-publish","format-standard","hentry","category-ecommerce-marketing","category-ecommerce-seo","tag-brand-manufacturer","tag-bread-crumbs","tag-breadcrumbs","tag-category-category","tag-decimal-point","tag-dynamic-platform","tag-example-books","tag-floating-point","tag-google","tag-google-org","tag-google-yahoo","tag-header-php","tag-html-header","tag-html-tag","tag-html-xmlns","tag-image-tag","tag-img-src","tag-letter-iso","tag-major-search-engines","tag-markup-tags","tag-output-string","tag-page-templates","tag-php-echo","tag-powerful-software","tag-product-image","tag-product-manufacturer","tag-product-model","tag-product-quantity","tag-prowess","tag-quantity-number","tag-rough-road","tag-schema-change","tag-search-engines-search","tag-search-google","tag-stock-availability","tag-tag-image","tag-yandex","tag-zen-cart"],"_links":{"self":[{"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/posts\/1799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/comments?post=1799"}],"version-history":[{"count":0,"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/posts\/1799\/revisions"}],"wp:attachment":[{"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/media?parent=1799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/categories?post=1799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pro-webs.net\/blog\/wp-json\/wp\/v2\/tags?post=1799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}