Announcement

Collapse
No announcement yet.

Google Schema - Rich snippets

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Google Schema - Rich snippets

    This is my current schema/rich snippets code I use in Sellerdeck sites. To use it in Design Library find the group Meta Tags, Copy the Standard Meta Tags layout so you have a backup and open the original standard meta tags replacing everything there with this:

    Code:
    <actinic:block if="%3cactinic%3avariable%20name%3d%22IsEmbeddedPreview%22%20%2f%3e"> 
    <meta http-equiv="X-UA-Compatible" content="<actinic:variable name="EmbeddedPreviewCompatibility" />">
    </actinic:block>  
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <meta http-equiv="MSThemeCompatible" content="yes" />
    <actinic:block if="%28%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%21%3d%20%22Section%22%20AND%20%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%21%3d%20%22Brochure%22%20AND%20%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%21%3d%20%22Product%20Page%22%29%20OR%20%3cactinic%3avariable%20name%3d%22IsStoreFrontPage%22%20%2f%3e" >
       <actinic:block if="%3cactinic%3avariable%20name%3d%22GlbMetaKeywords%22%20%2f%3e%20%21%3d%20%22%22" >
    		<meta name="keywords" content="<actinic:variable name="GlbMetaKeywords" />" />
       </actinic:block>
       <actinic:block if="%3cactinic%3avariable%20name%3d%22GlbMetaDescription%22%20%2f%3e%20%21%3d%20%22%22" >
    		<meta name="description" content="<actinic:variable name="GlbMetaDescription" />" />
       </actinic:block>
    </actinic:block>
    <actinic:block if="%28%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Section%22%20OR%20%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Brochure%22%29%20AND%20%3cactinic%3avariable%20name%3d%22IsStoreFrontPage%22%20%2f%3e%20%3d%3d%20FALSE" >
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22MetaKeywords%22%20%2f%3e%20%21%3d%20%22%22" >
    		<meta name="keywords" content="<actinic:variable name="MetaKeywords" />" />
    	</actinic:block>
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22MetaDescription%22%20%2f%3e%20%21%3d%20%22%22" >
    		<meta name="description" content="<actinic:variable name="MetaDescription" />" />
    	</actinic:block>
    </actinic:block>
    <actinic:block if="%28%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Product%20Page%22%29" >
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22ProductPageMetaKeywords%22%20%2f%3e%20%21%3d%20%22%22" >
    		<meta name="keywords" content="<actinic:variable name="ProductPageMetaKeywords" />" />
    	</actinic:block>
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22ProductPageMetaDescription%22%20%2f%3e%20%21%3d%20%22%22" >
    		<meta name="description" content="<actinic:variable name="ProductPageMetaDescription" />" />
    	</actinic:block>
    </actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22InTestMode%22%20%2f%3e">
    	<meta name="robots" content="noindex, nofollow">
    </actinic:block>
    
    <actinic:block if="%28%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Section%22%29" >
    	<actinic:block if="%28%3cactinic%3avariable%20name%3d%22IsFilteringPageAsDefaultView%22%20%2f%3e%20AND%20%3cactinic%3avariable%20name%3d%22UseStaticFilterPageLink%22%20%2f%3e%29%20OR%20%0d%21%3cactinic%3avariable%20name%3d%22SectionPaginated%22%20%2f%3e%20OR%20%28%28%3cactinic%3avariable%20name%3d%22SectionPaginationIncludeFullPage%22%20%2f%3e%20%3d%3d%201%29%20AND%20%28%3cactinic%3avariable%20name%3d%22SectionPaginationCurrentPageIndex%22%20%2f%3e%20%3e%3d%200%29%29" >		
    		<link rel="canonical" href="<actinic:variable name="CanonicalPageURL" />">
    	</actinic:block>
    	<actinic:block if="%28%28%3cactinic%3avariable%20name%3d%22IsFilteringPageAsDefaultView%22%20%2f%3e%20AND%20%3cactinic%3avariable%20name%3d%22UseStaticFilterPageLink%22%20%2f%3e%29%20%3d%3d%20False%29%20AND%0d%3cactinic%3avariable%20name%3d%22SectionPaginationIncludeFullPage%22%20%2f%3e%20%3d%3d%200" >
    	   <!-- Tell search engines how to index paginated sections -->
    		<actinic:block if="%28%3cactinic%3avariable%20name%3d%22SectionPaginationCurrentPageIndex%22%20%2f%3e%20%3e%201%29" >			
    			<link rel="prev" href="<actinic:variable name="CanonicalPaginationPreviousPageURL" />">
    		</actinic:block>
    		<actinic:block if="%28%3cactinic%3avariable%20name%3d%22SectionPaginationCurrentPageIndex%22%20%2f%3e%20%3e%200%29%20AND%20%28%3cactinic%3avariable%20name%3d%22SectionPaginationCurrentPageIndex%22%20%2f%3e%20%3c%20%3cactinic%3avariable%20name%3d%22SectionPaginationLastPartPageIndex%22%20%2f%3e%29" >
    			<link rel="next" href="<actinic:variable name="CanonicalPaginationNextPageURL" />">
    		</actinic:block>
    	</actinic:block>
    </actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%21%3d%20%22Section%22" >
    	<link rel="canonical" href="<actinic:variable name="CanonicalPageURL" />">
    </actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22SocialMediaUsed%22%20%2f%3e%20AND%0d%3cactinic%3avariable%20name%3d%22FacebookPageName%22%20%2f%3e%20%20%21%3d%20%22%22">
    	<meta property="og:url" content="<actinic:variable name="CanonicalPageURL" />" />
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22FacebookAdmin%22%20%2f%3e%20%21%3d%20%22%22" ><meta property="fb:admins" content="<actinic:variable name="FacebookAdmin" />" /></actinic:block>
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22FacebookAppID%22%20%2f%3e%20%21%3d%20%22%22" ><meta property="fb:app_id" content="<actinic:variable name="FacebookAppID" />" /></actinic:block>
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Product%20Page%22" >
    	<meta property="og:type" content="product" />
    	<meta property="og:title" content="<actinic:variable encoding="strip" name="ProductName" />" />
    	<meta property="og:description" content="<actinic:variable encoding="strip" name="ProductDescription" />" />
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22ProductImageHeight%22%20%2f%3e%20%20%3e%3d%20%20200%20AND%0d%3cactinic%3avariable%20name%3d%22ProductImageWidth%22%20%2f%3e%20%3e%3d%20200" ><meta property="og:image" content="<actinic:variable name="CatalogURL" /><actinic:variable name="ProductImageFileNameRaw" />" /></actinic:block>
    	<actinic:block if="%28%3cactinic%3avariable%20name%3d%22ProductImageHeight%22%20%2f%3e%20%3c%20200%20OR%0d%3cactinic%3avariable%20name%3d%22ProductImageWidth%22%20%2f%3e%20%3c%20200%29%20AND%0d%3cactinic%3avariable%20name%3d%22DefaultFacebookImage%22%20%2f%3e%20%20%21%3d%20%22%22"><meta property="og:image" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:block php="true">echo basename("<actinic:variable name="DefaultFacebookImage" />");</actinic:block>" /></actinic:block>
    	</actinic:block>
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Section%22" >
    	<meta property="og:type" content="product" />
    	<meta property="og:title" content="<actinic:variable encoding="strip" name="SectionName" />" />
    	<meta property="og:description" content="<actinic:variable encoding="strip" name="SectionDescription" />" />
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22SectionImageHeight%22%20%2f%3e%20%3e%3d%20200%20AND%0d%3cactinic%3avariable%20name%3d%22SectionImageWidth%22%20%2f%3e%20%3e%3d%20200" ><meta property="og:image" content="<actinic:variable name="CatalogURL" /><actinic:variable name="SectionImageFileNameRaw" />" /></actinic:block>
    	<actinic:block if="%28%3cactinic%3avariable%20name%3d%22SectionImageHeight%22%20%2f%3e%20%3c%20200%20OR%0d%3cactinic%3avariable%20name%3d%22SectionImageWidth%22%20%2f%3e%20%3c%20200%29%20AND%0d%3cactinic%3avariable%20name%3d%22DefaultFacebookImage%22%20%2f%3e%20%20%21%3d%20%22%22" ><meta property="og:image" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:block php="true">echo basename("<actinic:variable name="DefaultFacebookImage" />");</actinic:block>" /></actinic:block>
    	</actinic:block>
    	<actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Brochure%22" >
    		<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBrochureHomePage%22%20%2f%3e%20%3d%3d%20false" >
    		<meta property="og:type" content="article" />
    		<meta property="og:title" content="<actinic:variable encoding="strip" name="BrochureName" />" />
    		<meta property="og:description" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22MetaDescription%22%20%2f%3e%20%21%3d%20%22%22" ><actinic:variable name="MetaDescription" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22MetaDescription%22%20%2f%3e%20%3d%3d%20%22%22" ><actinic:variable name="PageTitle" ></actinic:block>" />
    		<actinic:block if="%3cactinic%3avariable%20name%3d%22DefaultFacebookImage%22%20%2f%3e%20%20%21%3d%20%22%22" ><meta property="og:image" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:block php="true">echo basename("<actinic:variable name="DefaultFacebookImage" />");</actinic:block>" /></actinic:block>
    		</actinic:block>
    		<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBrochureHomePage%22%20%2f%3e" >
    		<meta property="og:type" content="website" />
    		<meta property="og:title" content="<actinic:variable encoding="strip" name="CompanyName" />" />
    		<meta property="og:description" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22MetaDescription%22%20%2f%3e%20%21%3d%20%22%22" ><actinic:variable name="MetaDescription" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22MetaDescription%22%20%2f%3e%20%3d%3d%20%22%22" ><actinic:variable encoding="strip" name="AboutUs" /></actinic:block>" />
    		<actinic:block if="%3cactinic%3avariable%20name%3d%22DefaultFacebookImage%22%20%2f%3e%20%20%21%3d%20%22%22" ><meta property="og:image" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:block php="true">echo basename("<actinic:variable name="DefaultFacebookImage" />");</actinic:block>" /></actinic:block>
    		</actinic:block>
    	</actinic:block>
    </actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%21%3d%20%27Product%20Page%27">
    	<script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "LocalBusiness",
      "url": "<actinic:variable name="WebSiteURL" />",
      <actinic:block if="%3cactinic%3avariable%20name%3d%22SocialMediaUsed%22%20%2f%3e" >"sameAs": [<actinic:block if="%3cactinic%3avariable%20name%3d%22TwitterHandle%22%20%2f%3e%20%21%3d%20%22%22" >
    		"https://twitter.com/<actinic:variable name="TwitterHandle" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22FacebookPageName%22%20%2f%3e%20%21%3d%20%22%22%20OR%0d%3cactinic%3avariable%20name%3d%22GooglePlusPageID%22%20%2f%3e%20%21%3d%20%22%22%20OR%0d%3cactinic%3avariable%20name%3d%22PinterestUserURL%22%20%2f%3e%20%21%3d%20%22%22%20OR%0d%3cactinic%3avariable%20name%3d%22YouTubeID%22%20%2f%3e%20%21%3d%20%22%22">,</actinic:block></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22FacebookPageName%22%20%2f%3e%20%21%3d%20%22%22">
    		"https://www.facebook.com/<actinic:variable name="FacebookPageName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22GooglePlusPageID%22%20%2f%3e%20%21%3d%20%22%22%20OR%0d%3cactinic%3avariable%20name%3d%22PinterestUserURL%22%20%2f%3e%20%21%3d%20%22%22%20OR%0d%3cactinic%3avariable%20name%3d%22YouTubeID%22%20%2f%3e%20%21%3d%20%22%22" >,</actinic:block></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22GooglePlusPageID%22%20%2f%3e%20%21%3d%20%22%22">
    		"https://plus.google.com/<actinic:variable name="GooglePlusPageID" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22PinterestUserURL%22%20%2f%3e%20%21%3d%20%22%22%20OR%0d%3cactinic%3avariable%20name%3d%22YouTubeID%22%20%2f%3e%20%21%3d%20%22%22" >,</actinic:block></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22PinterestUserURL%22%20%2f%3e%20%21%3d%20%22%22">
    		"https://pinterest.com/<actinic:variable name="PinterestUserURL" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22YouTubeID%22%20%2f%3e%20%21%3d%20%22%22" >,</actinic:block></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22YouTubeID%22%20%2f%3e%20%21%3d%20%22%22">
    		"https://www.youtube.com/<actinic:variable name="YouTubeID" />"</actinic:block>
    	],</actinic:block>
      "logo": "<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:variable name="CompanyLogoFileName" />",
    	"image": "<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:variable name="CompanyLogoFileName" />",
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%21%3d%20%27Product%20Page%27">
    		 <actinic:block if="%3cactinic%3avariable%20name%3d%22DisplaySiteFeedback%22%20%2f%3e%20AND%20%3cactinic%3avariable%20name%3d%22CustomerFeedbackEnabled%22%20%2f%3e" >"aggregateRating": {
    		<actinic:block php="true">$sJsonData = file_get_contents('https://api.feefo.com/api/10/reviews/summary/service?merchant_identifier=merchantidentifiergoeshere');
    		$oData = json_decode($sJsonData);</actinic:block>
    		"@type": "AggregateRating",
    		"ratingValue": "<actinic:block php="true">echo $oData->rating->rating;</actinic:block>",
    		"reviewCount": "<actinic:block php="true">echo $oData->rating->service->count;</actinic:block>"
    	},</actinic:block>
    </actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%27Product%20Page%27">
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%22Product%20Page%22%20AND%0d%3cactinic%3avariable%20name%3d%22DisplayProductFeedback%22%20%2f%3e%20AND%20%3cactinic%3avariable%20name%3d%22CustomerFeedbackEnabled%22%20%2f%3e" >"aggregateRating": {
    		<actinic:block php="true">$sJsonData = file_get_contents('https://api.feefo.com/api/10/reviews/summary/product?merchant_identifier=merchantidentifiergoeshere&product_sku=<actinic:variable encoding="perl" name="ProductReference" selectable="false" />');
    		$oData = json_decode($sJsonData);</actinic:block>
    		"@type": "AggregateRating",
    		"ratingValue": "<actinic:block php="true">echo $oData->rating->rating;</actinic:block>",
    		"reviewCount": "<actinic:block php="true">echo $oData->rating->product->count;</actinic:block>"
    	},</actinic:block>	
    </actinic:block>
      "legalName": "<actinic:variable name="CompanyName" />",
      "priceRange": "&pound;10-&pound;100",
      "telephone": "+441234987654",
      "address": [{
        "@type": "PostalAddress",
        "addressLocality": "<actinic:variable name="Address1" />, <actinic:variable name="Address2" />, <actinic:variable name="Address3" />, <actinic:variable name="Address4" />",
        "postalCode": "<actinic:variable name="PostalCode" />"
      }],
       "description": "<actinic:variable name="GlbMetaDescription" />",
    	"name": "<actinic:variable name="CompanyName" />",
       "contactPoint": [{
        "@type": "ContactPoint",
        "telephone": "+441234987654",
        "contactType": "customer service",
        "email": "<actinic:variable name="Email" />"
      }] 
    }
    </script>
    </actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%27Product%20Page%27">	
    <script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "product",
      "name": "<actinic:variable encoding="perl" name="ProductName" selectable="false" />",
      "image": "<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:variable encoding="perl" name="ProductImageFileName" selectable="false" />",
      <actinic:block if="%3cactinic%3avariable%20name%3d%22mpn%22%20%2f%3e%20%21%3d%20%22%22" >"mpn": "<actinic:variable name="mpn" />",</actinic:block>
      <actinic:block if="%3cactinic%3avariable%20name%3d%22ProductBarcodeSKU%22%20%2f%3e%20%21%3d%20%22%22" >"sku": "<actinic:variable name="ProductBarcodeSKU" />",</actinic:block>
    <actinic:block if="%3cactinic%3avariable%20name%3d%22DisplayProductFeedback%22%20%2f%3e%20AND%20%3cactinic%3avariable%20name%3d%22CustomerFeedbackEnabled%22%20%2f%3e" >"aggregateRating": {
    		<actinic:block php="true">$sJsonData = file_get_contents('https://api.feefo.com/api/10/reviews/summary/product?merchant_identifier=merchantidentifiergoeshere&product_sku=<actinic:variable encoding="perl" name="ProductReference" selectable="false" />');
    		$oData = json_decode($sJsonData);</actinic:block>
    		"@type": "AggregateRating",
    		"ratingValue": "<actinic:block php="true">echo $oData->rating->rating;</actinic:block>",
    		"reviewCount": "<actinic:block php="true">echo $oData->rating->product->count;</actinic:block>"
    	},</actinic:block>
    "offers": {
            "@type": "Offer",
            	"url": "<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable encoding="perl" name="CatalogURL" selectable="false" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable encoding="perl" name="SSLCatalogURL" selectable="false" /></actinic:block><actinic:variable encoding="perl" name="ProductPageName" selectable="false" />",
            	"priceCurrency": "GBP",
            	"price": "<actinic:block php="true">echo preg_replace('/[^\d\.]/', '', '<actinic:block type="pricelist"><actinic:block if="%3cactinic%3avariable%20name%3d%22ListIndex%22%20%2f%3e%20%3d%3d%201"><actinic:variable name="TaxInclusivePrice" selectable="false" /></actinic:block></actinic:block>');</actinic:block>"
       }
     }
    </script>
    <!-- microdata start -->
    <div itemscope itemtype="http://data-vocabulary.org/Product">
    <meta itemprop="image" content="<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable name="CatalogURL" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable name="SSLCatalogURL" /></actinic:block><actinic:variable name="ProductImageFilenameRaw" />" />
    <meta itemprop="identifier" content="mpn:<actinic:variable name="ProductReference" />"/>
    <meta itemprop="name" content="<actinic:variable name="ProductName" />" />
    <meta property="og:type" content="product" />
    <meta property="og:title" content="<actinic:variable encoding="strip" name="ProductName" />" />
    <meta property="og:url" content="<actinic:block php="true">echo '<actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFStandard%22%20%2f%3e" ><actinic:variable encoding="perl" name="CatalogURL" selectable="false" /></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22IsBaseHREFSSL%22%20%2f%3e" ><actinic:variable encoding="perl" name="SSLCatalogURL" selectable="false" /></actinic:block>' . basename('<actinic:variable name="ProductPageName" encoding="perl" selectable="false" />');</actinic:block>" />
    <actinic:block if="%3cactinic%3avariable%20name%3d%22brand%22%20%2f%3e%20%21%3d%20%22%22"><meta itemprop="brand" content="<actinic:variable name="brand" />"/></actinic:block>
    </div>
    <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <meta itemprop="itemCondition" itemtype="http://schema.org/OfferItemCondition" content="http://schema.org/NewCondition" />
        <meta itemprop="name" content="<actinic:variable name="ProductName" />" />
        <meta itemprop="price" content="<actinic:block php="true">echo preg_replace('/[^\d\.]/', '', '<actinic:block type="pricelist"><actinic:block if="%3cactinic%3avariable%20name%3d%22ListIndex%22%20%2f%3e%20%3d%3d%201"><actinic:variable name="TaxInclusivePrice" selectable="false" /></actinic:block></actinic:block>');</actinic:block>" />
    </div>
    <div class="purchase_data" itemprop="offerDetails" itemscope itemtype="http://data-vocabulary.org/Offer">
    <meta itemprop="currency" content="GBP" />
    <meta itemprop="price" content="<actinic:block php="true">echo preg_replace('/[^\d\.]/', '', '<actinic:block type="pricelist"><actinic:block if="%3cactinic%3avariable%20name%3d%22ListIndex%22%20%2f%3e%20%3d%3d%201"><actinic:variable name="TaxInclusivePrice" selectable="false" /></actinic:block></actinic:block>');</actinic:block>" />
    <meta itemprop="availability" content="In stock" />
    <meta itemprop="seller" content="<actinic:variable encoding="strip" name="CompanyName" />"/>
      <actinic:block if="%3cactinic%3avariable%20name%3d%22mpn%22%20%2f%3e%20%21%3d%20%22%22" ><meta itemprop="mpn" content="<actinic:variable name="mpn" />"/></actinic:block>
      <actinic:block if="%3cactinic%3avariable%20encoding%3d%22html%22%20name%3d%22ContentCategory%22%20%2f%3e%20%21%3d%20%22Standard%22" ><meta itemprop="category" content="<actinic:variable name="ContentCategory" />"/></actinic:block>
      <actinic:block if="%3cactinic%3avariable%20name%3d%22ProductBarcodeSKU%22%20%2f%3e%20%21%3d%20%22%22" ><meta itemprop="sku" content="<actinic:variable name="ProductBarcodeSKU" />"/></actinic:block>
    </div>
    <!-- microdata end -->
    </actinic:block>
    Most of it uses variables but some need manual input.

    1. In this expression:
    Code:
    https://api.feefo.com/api/10/reviews/summary/product?merchant_identifier=merchantidentifiergoeshere&product_sku=<actinic:variable encoding="perl" name="ProductReference" selectable="false" />
    You need to get your merchant identifier from Feefo and use it instead of merchantidentifiergoeshere.

    2. You must use the international phone number not the 'Phone' Variable (eg: +441234987654)

    3. You need your product price range ("priceRange": "&pound;10-&pound;100",)

    You probably know this if it is your store but if you are a designer open the Access Database in Access and from the product table copy the 'price' column into an Excel sheet. The sort low to high to get your top and bottom prices - ignore zeros, use a real price.

    Some of this is from Norman's excellent input on the matter (Drillpine.biz)

    There are a few other bits you might like to edit manually to your taste.
    Jonathan Chappell
    Website Designer
    SellerDeck Website Designer
    Actinic to SellerDeck upgrades
    Graphicz Limited - www.graphicz.co.uk

    #2
    Sellerdeck 2018 will support schema tags out of the box, using the same method and similar code.
    Bruce Townsend
    Ecommerce Product Manager
    Sellerdeck Ecommerce Solutions

    Comment


      #3
      Any idea when this will be available to play with in Beta?
      Regards

      Jason

      Titan Jewellery (Swift Design)
      Damascus Steel Rings

      Comment


        #4
        We hope to have a Beta in January
        Bruce Townsend
        Ecommerce Product Manager
        Sellerdeck Ecommerce Solutions

        Comment


          #5
          This is my current schema/rich snippets code I use in Sellerdeck sites. To use it in Design Library find the group Meta Tags,
          Your schema/rich snippets code looks useful and I should like to try this out with microdata code addition only.
          The first 83 lines of code I think are the same as that which already exists in the Standard Meta Tags layout, so would you be able to list the code lines needed just for the microdata bit (no Feefo etc.)?
          I already have the microdata code lines within the product layout and this is working fine at the moment although the Standard Meta Tags layout would seem to be the right place for this code to be.
          I tried adding just the microdata code to the Standard Meta Tag layout but this resulted in errors concerning incorrrect placement of variables so I guess some more code lines (<script>) are needed in addition that you have incorporated within your code.
          Martin
          Mantra Audio
          Last edited by Mantra; 10-Jan-2018, 01:33 PM. Reason: Inclusion of [QUOTE]
          Martin
          Mantra Audio

          Comment


            #6
            Copy your meta tags into Notepad++ and then mine into another document and compare. It will be easy then to remove from mine what you don't want.
            (https://notepad-plus-plus.org/
            https://sourceforge.net/projects/npp-compare/)

            If errors are generated it would be handy to post them here. I don't have errors here so I may have variables you don't. Any you don't have can be created in Design Library or you can hard code values.

            The ones I posted are in use on live sites and the site owners and their SEOs seem reasonably happy with them.

            You may need to flesh them out a bit for Pinterest rich pins,
            Code:
            <meta property="og:site_name" content="The Name of the Company" />
            <meta property="product:price:amount" content="<actinic:block php="true">echo preg_replace('/[^\d\.]/', '', '<actinic:block type="pricelist"><actinic:block if="%3cactinic%3avariable%20name%3d%22ListIndex%22%20%2f%3e%20%3d%3d%201"><actinic:variable name="TaxInclusivePrice" selectable="false" /></actinic:block></actinic:block>');</actinic:block>"  />
            <meta property="product:price:currency" content="GBP" />
            <meta property="og:availability" content="instock" />
            whilst Facebook Pixels go elsewhere, below the <body> tag..
            Jonathan Chappell
            Website Designer
            SellerDeck Website Designer
            Actinic to SellerDeck upgrades
            Graphicz Limited - www.graphicz.co.uk

            Comment


              #7
              Thank you for your response on this.
              Copy your meta tags into Notepad++ and then mine into another document and compare.
              I have pasted the Microdata code that presently works fo me below:
              Code:
               <!-- microdata BEGIN -->
              <div class="product-text notabber" itemscope itemtype="http://schema.org/Product">
              <meta itemprop="sku" content="<actinic:variable name="ProductID" />" />
              <meta itemprop="name" content="<actinic:variable encoding="actinic" name="ProductName" />" />
              <meta itemprop="description" content="<actinic:variable name="ProductPageMetaDescription" />" />
              <meta itemprop="image" content="<actinic:variable name="CatalogURL" /><actinic:variable name="ProductImageFileName" />" />
              <meta itemprop="brand" content="<actinic:variable name="brand" />" />
              <meta itemprop="mpn" content="<actinic:variable name="mpn" />" />
              <meta itemprop="gtin13" content="<actinic:variable name="ean" />" />
              <meta itemprop="gtin12" content="<actinic:variable name="upc" />" />
              <meta itemprop="category" content="<actinic:variable name="google_product_category" />" />
              <div class="purchase_data" itemprop="offerDetails" itemscope itemtype="http://schema.org/Offer">
              <meta itemprop="priceCurrency" content="GBP" />
              <meta itemprop="price" content="<actinic:block php="true">echo preg_replace('/[^\d\.]/', '', '<actinic:block type="pricelist"><actinic:block if="%3cactinic%3avariable%20name%3d%22ListIndex%22%20%2f%3e%20%3d%3d%201"><actinic:variable name="TaxInclusivePrice" selectable="false" /></actinic:block></actinic:block>');</actinic:block>" />
              <meta itemprop="availability" content="<actinic:variable name="availability" />" />
              <meta itemprop="itemCondition" itemtype="http://schema.org/OfferItemCondition" content="http://schema.org/NewCondition" />
              <meta itemprop="seller" content="<actinic:variable name="CompanyName" />"/>
              </div>
              </div>
              <!-- microdata END -->
              If errors are generated it would be handy to post them here
              When I add the above microdata code at the end of the Standard Meta Tags layout code and upload I get the error codes displayed attached.
              Some of the micro data code lines are different to yours, however some of my variables pass through whist the others shown in the listed errors do not.
              I use ProductPageMetaDescription instead of ProductDescription variable because some products have tabs and table coding embedded in descriptions that do not display well in Google Data Feed.
              Any advice on solution to remove these errors when microdata is added to Standard Meta Tags layout code would be appreciated.
              The final error on the list concerning the ProductEmbedVideo layout is a latent error I have after upgrading to SellerDeck 2016 and does not concern the microdata code. Not sure why this should be but it clears when I restore the layout back to default but keeps re-appearing. It is not a big problem though - just a niggle.

              Martin
              Mantra Audio
              Attached Files
              Martin
              Mantra Audio

              Comment


                #8
                You can use encoding = strip html to remove html (right click on the variable and 'appearance')

                I am not getting those errors, all product related stuff should be in a blockif <actinic:variable name="PageType" /> == 'Product Page'

                SD does like to throw up errors.

                Closing and openoing sometimes does the trick.

                Sometimes they are just spurious. If you do Design Check Coding Errors that will show any 'real' errors. Also if the error message is there but grey and you cannot click on it I would not worry too much.

                If your variables are within a block of php the will need to be encoding perl selectable false.
                Jonathan Chappell
                Website Designer
                SellerDeck Website Designer
                Actinic to SellerDeck upgrades
                Graphicz Limited - www.graphicz.co.uk

                Comment


                  #9
                  Originally posted by graphicz View Post
                  You can use encoding = strip html to remove html (right click on the variable and 'appearance')
                  Thank you for the tip - very helpful.

                  I am not getting those errors, all product related stuff should be in a blockif <actinic:variable name="PageType" /> == 'Product Page'

                  If your variables are within a block of php the will need to be encoding perl selectable false.
                  I superimposed my code over your code including the the product related stuff within blockif's and this cleared the errors that through up within SD.

                  However, after uploading I started to get the "missing microdata for condition" notifications again in Google Merchant Centre. Checking some sample products using Google Structure Data Testing Tool flagged up 2 errors - 'itemCondition' and 'mpn' not recognised by Google for an object of type offer.

                  I remembered this one cropped up before because the Offer group is not separate to the Product group and needs to be a sub-part (child) of the Product group within the Procuct <div> </div>.

                  After correcting the above another error was presented using the Google Structured Data Test tool - offerDetails - the property offerDetails is not recognised by Google for an object of type Product.
                  I got this one resolved by removing part code "class="purchase_data"" and renaming "itemprop="offerDetails"" to "itemprop="offers"" on the same code line.

                  I have included below the microdata code using schema vocabularly that works for me at the end of your suggested update of the Standard Meta Tag Layout.

                  Code:
                  <!-- microdata BEGIN -->
                  <div class="product-text notabber" itemscope itemtype="http://schema.org/Product">
                  <actinic:block if="true">
                  <meta itemprop="sku" content="<actinic:variable name="ProductID" />" />
                  </actinic:block>
                  <meta itemprop="name" content="<actinic:variable encoding="actinic" name="ProductName" />" />
                  <meta itemprop="description" content="<actinic:variable name="ProductPageMetaDescription" />" />
                  <meta itemprop="image" content="<actinic:variable name="CatalogURL" /><actinic:variable name="ProductImageFileName" />" />
                  <actinic:block if="true">
                  <meta itemprop="brand" content="<actinic:variable name="brand" />" />
                  </actinic:block>
                  <actinic:block if="true">
                  <meta itemprop="mpn" content="<actinic:variable name="mpn" />" />	
                  </actinic:block>
                  <actinic:block if="true">
                  <meta itemprop="gtin13" content="<actinic:variable name="ean" />" />	
                  </actinic:block>
                  <actinic:block if="true">
                  <meta itemprop="gtin12" content="<actinic:variable name="upc" />" />	
                  </actinic:block>
                  <actinic:block if="true">
                  <meta itemprop="category" content="<actinic:variable name="google_product_category" />" />	
                  </actinic:block>
                  <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
                  <meta itemprop="priceCurrency" content="GBP" />
                  <meta itemprop="price" content="<actinic:block php="true">echo preg_replace('/[^\d\.]/', '', '<actinic:block type="pricelist"><actinic:block if="%3cactinic%3avariable%20name%3d%22ListIndex%22%20%2f%3e%20%3d%3d%201"><actinic:variable name="TaxInclusivePrice" selectable="false" /></actinic:block></actinic:block>');</actinic:block>" />
                  <meta itemprop="availability" content="<actinic:variable name="availability" />" />
                  <meta itemprop="itemCondition" itemtype="http://schema.org/OfferItemCondition" content="http://schema.org/NewCondition" />
                  <meta itemprop="seller" content="<actinic:variable name="CompanyName" />"/>
                  </div>
                  </div>
                  <!-- microdata END -->
                  I have substituted the variable "availability" in place of hard code "In stock" for consistency with my Google Product Feed layout "availability" variable for "in stock" (default), out of stock" and "preorder" options.

                  Finally I note that although my products now pass through the Google Structured Data Test with no errors there are 2 entries for each product - see screenshot sample attached.

                  The items covered in the second listing correspond to those incorporated within the microdata code entries and I think possibly some of those included in the first entry may come from code entries before the microdata code so there appears that there could be some unnecessary duplication within the code that needs to be removed.

                  Hope this helps.

                  Martin
                  Mantra Audio
                  Attached Files
                  Martin
                  Mantra Audio

                  Comment


                    #10
                    The v18 Beta version is now available, incorporating rich snippets and other useful new features. See https://community.sellerdeck.com/showthread.php?t=57501
                    Bruce Townsend
                    Ecommerce Product Manager
                    Sellerdeck Ecommerce Solutions

                    Comment


                      #11
                      Hi Mantra,
                      Sorry to bother you but I'm trying to get microdata working on my site. I've got the code passing the checker but Google seems to have trouble finding it!! Where exactly have you placed it? Many thanks, Tom
                      www.silvermoonbeads.com - Gemstones, Pearls, Hill Tribe sterling silver, Swarovski and Findings.

                      Comment


                        #12
                        Mine goes in the Standard Meta Tags but anywhere in the <head></head> area should be fine.
                        Jonathan Chappell
                        Website Designer
                        SellerDeck Website Designer
                        Actinic to SellerDeck upgrades
                        Graphicz Limited - www.graphicz.co.uk

                        Comment


                          #13
                          Originally posted by orcahouse View Post
                          Sorry to bother you but I'm trying to get microdata working on my site. I've got the code passing the checker but Google seems to have trouble finding it!! Where exactly have you placed it? Many thanks, Tom
                          I placed my code at the end of the Standard Meta Tags Layout after considering Jonathan's original post and it is working fine.

                          Martin Nichols
                          Mantra Audio
                          Martin
                          Mantra Audio

                          Comment


                            #14
                            Originally posted by brucet View Post
                            Sellerdeck 2018 will support schema tags out of the box, using the same method and similar code.
                            Google Search Console URL crawl has been identifying coverage issues randomly on some of selected products on our site variously for a few months so I decided to try a few sample product URL tests using Google Structured Data Test tool:
                            https://search.google.com/structured-data/testing-tool
                            This now flags up
                            1 Error - Availability
                            "availability"
                            It appears that the markup for "availability" Valid Values has been changed from "in stock", "out of stock" and "preorder" that I intially set up as a product property variable to a revised set of values comprising "Discontinued", "InStock", "InStore", "OnlineOnly", "OutOfStock", "PreSale" and "SoldOut".
                            I can expand the variable:availabilty that is incorporated in the Standard Meta Tag Layout to cover the additional values but the question is how could I change the existing variable values from "in stock" to "InStock" and "out of stock" to "OutOfStock" without compromising the existing data values?
                            Is there a way to display product "availabilty" value text with spaces that is different to the variable value i.e "InStock" as "In Stock", "OutOfStock" as "Out Of Stock"

                            The test tool also flags up 4 Warnings - field values recommended (optional) for:
                            "priceValidUntil"
                            "url"
                            "aggregateRating"
                            "review"
                            Although these are optional any guidance or suggestions on code lines that could be incorporated into the Standard V16 Meta Tag layout to cover would be appreciated.
                            Does Sellerdeck V18 address these availabilty values and optional field value recommentations?
                            Martin
                            Mantra Audio

                            Comment


                              #15
                              This is my valid until:

                              Code:
                              "priceValidUntil": "<actinic:block php="true">
                                          $date = new DateTime();
                                          $date->add(new DateInterval('P6M'));
                                          echo $date->format('d M Y');
                                      </actinic:block>"
                              Aggregate offer is where there is a high and a low price:

                              Code:
                              "offers": {
                                  <actinic:block php="true" selectable="false" >
                                  if ($ProductPrice > 0)
                                  {
                                      if ($MaxPrice == $MinPrice)
                                      {
                                          echo "\"@type\": \"Offer\",", chr(13) , chr(10), "\t\t", "\"price\": ", number_format($ProductPrice,2, '.', ''), ",";
                                      }
                                  }
                                  if ($MaxPrice > $MinPrice)
                                  {
                                      echo "\"@type\": \"AggregateOffer\",", chr(13) , chr(10), "\t\t", "\"highPrice\":", number_format($MaxPrice,2, '.', ''), ",", chr(13) , chr(10), "\t\t", "\"lowPrice\":", number_format($MinPrice,2, '.', ''), ",";
                                      echo "\"offerCount\": \"10\",";
                                  }</actinic:block>
                              This is what I did for a soapbox customer, hopefully you can adapt it:

                              Code:
                              "@type": "Product",
                                      "aggregateRating": {
                                      "@type":  "AggregateRating",
                                      "ratingValue": "<actinic:block php="true">echo <actinic:variable encoding="perl" name="SoapboxRating" selectable="false" /> /2;</actinic:block>",
                                      "reviewCount": "<actinic:block if="%3cactinic%3avariable%20name%3d%22SoapboxReviewCount%22%20%2f%3e%20%3d%3d%200">1</actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SoapboxReviewCount%22%20%2f%3e%20%3e%200"><actinic:variable name="SoapboxReviewCount" /></actinic:block>",
                                      "bestRating"  : "<actinic:block php="true">echo <actinic:variable encoding="perl" name="SoapboxRating" selectable="false" /> /2;</actinic:block>",
                                      "worstRating" : "<actinic:block php="true">echo <actinic:variable encoding="perl" name="SoapboxRating" selectable="false" /> /2;</actinic:block>"
                                  },
                                  "review": {
                                  "@type": "Review",
                                  "reviewRating": {
                                    "@type": "Rating",
                                    "ratingValue": "<actinic:block php="true">echo <actinic:variable encoding="perl" name="SoapboxRating" selectable="false" /> /2;</actinic:block>",
                                    "bestRating": "<actinic:block php="true">echo <actinic:variable encoding="perl" name="SoapboxRating" selectable="false" /> /2;</actinic:block>",      
                                      "worstRating" : "<actinic:block php="true">echo <actinic:variable encoding="perl" name="SoapboxRating" selectable="false" /> /2;</actinic:block>",
                                    "description": "<actinic:variable encoding="Strip and Encode" name="SoapboxEmbeddedReviewContent" selectable="false" />"
                                  },
                                  "author": {
                                    "@type": "Person",
                                    "name": "Valued Customer"
                                  }
                              
                                },
                              Soapbox ratings are 1-10 hence dividing by two for google's 1-5
                              Jonathan Chappell
                              Website Designer
                              SellerDeck Website Designer
                              Actinic to SellerDeck upgrades
                              Graphicz Limited - www.graphicz.co.uk

                              Comment

                              Working...
                              X