tgorski
Ecommerce Template Expert
USA
910 Posts |
Posted - 05/13/2019 : 12:33:14
GSC shows errors if offer, review or aggregate schema code is not on the page, yet the structured testing tool does not report the error. Any product without a review show or offer (which requires price, availability and currency schema data) is not on the page, will generate that GSC error (Note: Itemoffered, PriceValidUntil & URL are recommended schema for the page) So the suggestion is to have the ability to take the product schema off the page if offer (which includes price, availability and currency schema), review or aggregate (reviews) data is unavailable so those GSC errors can be avoided or eliminated. As indicated https://www.ecommercetemplates.com/support/topic.asp?TOPIC_ID=111389&SearchTerms=structured,data and https://www.ecommercetemplates.com/support/topic.asp?TOPIC_ID=111584&SearchTerms=structured,data, which includes Andy's vote, I think we're building a case for updating the scope of the micro-data in order to avoid schema errors, or the option to remove the schema code to avoid those errors. Additionally, we thought we'd identified random warnings on the schema data for product image as measured by structured testing tool, but found out that the schema data was broken due to spaces in the image name. So here's another condition that might justify wanting to turn off the product schema instead of having to change image file names with spaces in them. Couldn't an include statement be used to turn off the generation of product schema? Tim Gorski
|
Andy
ECT Moderator
95440 Posts |
Posted - 05/13/2019 : 13:08:51
|
tgorski
Ecommerce Template Expert
USA
910 Posts |
Posted - 05/14/2019 : 07:17:51
Please do, Andy ... I THOUGHT that was where I posted it.
Tim Gorski
|
DeeAnna
Advanced Member
USA
268 Posts Pre-sales questions only (More Details...)
|
Posted - 05/20/2019 : 12:43:23
On a related note, I am also getting a similar error from Google about "Invalid value type for field 'offers' "
I don't have any offers set up, but in the page code, there's a URL (see code below) that sends me to a page of definitions. Not sure why this needs to be present.
<div class="detailprice" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
I don't use the review feature and I don't do offers. I agree with this suggestion -- "...Couldn't an include statement be used to turn off the generation of product schema?..."
--DeeAnna
Classic Bells, Postville, Iowa, USA, http://classicbells.com/
Edited by - DeeAnna on 05/20/2019 12:45:37
|
John M
Advanced Member
459 Posts Pre-sales questions only (More Details...)
|
Posted - 05/21/2019 : 08:36:33
Seems this is a fundamental E-Commerce issue that is as much of necessity as suggestion... there should probably be a fix much sooner rather than later since it will no doubt start counting against everyone in the algorithms.
John
|
EllenD
Advanced Member
United Kingdom
434 Posts |
Posted - 05/28/2019 : 03:39:51
Gets my vote as well, I'm not an expert in this which is all the more reason I'd love ECT to handle it for me as much as possible! Thank you
|
Vince
Administrator
42761 Posts |
Posted - 06/04/2019 : 01:39:02
Hi DeeAnna If you have products for sale on your site then that is your "Offer", so you probably do have Offers. quote: there should probably be a fix much sooner rather than later since it will no doubt start counting against everyone in the algorithms
If there are errors then of course we will want to get them fixed as soon as possible. But then again I'm sure Google are going to be reasonably pragmatic about this and for instance, warnings about the lack of a Review would not for me be the cause of removing markup that could benefit in the positioning of products just in case at some point there were a penalty when this must affect millions of products in Google's index. This looks worth following up... quote: On a related note, I am also getting a similar error from Google about "Invalid value type for field 'offers' "
So DeeAnna, if you could send me details to my email at vince AT ecommercetemplates DOT com that would be great. Meanwhile I'll talk to Andy about what we can change here in general. I've been adding a parameter this morning which may be useful... skuschemaidentifier="gtin13" $skuschemaidentifier='gtin13'; So that if your Sku is actually an ISBN or GTIN code it will be marked up as such. Vince Click Here for Shopping Cart SoftwareClick Here to sign up for our newsletterClick Here for the latest updater
|
DeeAnna
Advanced Member
USA
268 Posts Pre-sales questions only (More Details...)
|
Posted - 06/04/2019 : 07:38:39
"...If you have products for sale on your site then that is your "Offer", so you probably do have Offers...."
It's immaterial whether I do or I don't. I personally am not seeing any problems with how my store functions for me and my customers. The problem is that Google doesn't like it, and the discussion is how to prevent Google errors.
"...So DeeAnna, if you could send me details ... that would be great...."
The details are what I described in my 5/20 post in this thread and is closely related to what is being discussed in this other thread -- https://www.ecommercetemplates.com/support/topic.asp?TOPIC_ID=111389&SearchTerms=structured,data
Classic Bells, Postville, Iowa, USA, http://classicbells.com/
Edited by - DeeAnna on 06/04/2019 07:39:50
|
DLSS
ECT Moderator
Canada
3956 Posts |
Posted - 06/13/2019 : 10:52:28
|
ITZAP
Ecommerce Template Guru
Australia
1017 Posts |
Posted - 06/13/2019 : 23:44:48
quote: ... the discussion is how to prevent Google errors
I think it is very important to distinguish and understand the difference between Google Structured Data Testing Tool " errors" and " warnings". What Ecommerce Templates users get at present on Product pages is all " warnings", which are not critical and do not effect your search engine impact or ranking whatsoever. By the same token, it would be nice to see an update that satisfies at least some of those "warnings". Note there are some warnings that are absolute nonsense, such as warnings about reviews when there are none entered (stupid !) And an itemprop for " url" when there are already <canonical> and <meta property="og:url"> entries in the <head> !! Have Google lost the plot with all these structured data additions ? My PHP v7.0.5 domain name registration page here uses all of these elements: <?php $detailpagelayout="navigation, productname, dateadded, reviewstarslarge, productimage, description, socialmedia, options, listprice, discounts, price, quantitypricing, quantity, addtocart, checkoutbutton, manufacturer, sku, productid, reviews, previousnext" ?>Perhaps you would like to run that through the Google Structured Data Testing Tool and check the result. There are notes on my page which explain the 5 remaining itemprop "warnings". And if you check out the Google microdata code samples here, you will see that the JSON-LD <script> markup injected into the page <head> is far less complex and definitely, without a doubt the way to go now. Mike Beebe's JSON-LD script sounds like a fine solution. But ECT Users would not want to have a mixture of both JSON-LD and Microdata markup running together. JSON-LD markup alone as a stock-standard ECT feature would be the shot. And perhaps an option to disable structured data markup, if desired. Some Vince magic required quote: ... found out that the schema data was broken due to spaces in the image name.
Tim Gorski, you are correct. Spaces in an image filename results in a Testing Tool " error". But that is a Google programming issue. Perhaps wait and see if a fix is coming. Gary
Edited by - ITZAP on 06/14/2019 00:08:22
|
Vince
Administrator
42761 Posts |
Posted - 06/14/2019 : 01:47:30
|
Vince
Administrator
42761 Posts |
Posted - 06/14/2019 : 02:00:55
|
Vince
Administrator
42761 Posts |
Posted - 06/14/2019 : 02:10:03
|
ITZAP
Ecommerce Template Guru
Australia
1017 Posts |
Posted - 06/14/2019 : 03:16:19
Hi Vince, thanks for your replies and I will try those other parameters you mention. quote: What do you all think about priceValidUntil ?
If we had a Discount active with an Expiry Date entered, then inside Offers you could then include markup for itemprop priceValidUntil Otherwise, without adding another Date field on the Product Admin page for that, I cant imagine circumstances when it would be relevant. But maybe some other users think different ? There is a good answer about when to include an itemprop entry for priceValidUntil on the Google Search Console Help Forum here. Also note the advice if you don't have an expiration date, don't be tempted to fake one just to clear a heads-up warning. Plenty more interesting discussion about Structured Data issues on that Forum also. quote: What do you all think about url ?
Because the Testing Tool recommends including an itemprop for url, I guess it would be not much trouble for you to add that? Gary
Edited by - ITZAP on 06/14/2019 06:03:25
|
ITZAP
Ecommerce Template Guru
Australia
1017 Posts |
Posted - 06/14/2019 : 19:37:03
An update for you about these Google Structured Data Testing Tool " Warnings": availabilityResolved by adding this parameter to includes.php: $setschemaavailability=TRUE;Enables the addition of this structured data snippet: offers > availability http:// schema.org/InStockbrandUpdated 12th January 2022. Resolved by manually editing your Product Long Description source code like this: <span itemprop="brand" itemscope="" itemtype="https://schema.org/Brand"><span itemprop="name">Ecommerce Plus</span></span> This product is missing a global identifier (e.g. isbn, mpn or gtin8)Resolved by adding this parameter to includes.php: $skuschemaidentifier="mpn";review and aggregateRatingIgnore since these 2 "warnings" appear only if no Customer Reviews have been entered. priceValidUntilIgnore. Would perhaps only be relevant if there was a Discount active with an Expiry Date set. Gary
Edited by - ITZAP on 01/11/2022 17:23:46
|
Vince
Administrator
42761 Posts |
Posted - 06/15/2019 : 00:52:17
quote: brand Resolved by manually editing source code like this: <span itemprop="brand">ECT</span> Is optional, but results in the addition of this structured data snippet: brand > @type Thing > name ECT
I really think in this case, ECT would be a Manufacturer not a Brand. "Ecommerce Plus" would be our Brand. Also, if you have changed your Manufacturers to Brands then I would have thought you would get a warning about not having a Manufacturer. quote: This product is missing a global identifier (e.g. isbn, mpn or gtin8) Adding this parameter to includes.php: $skuschemaidentifier="mpn"; Had no effect. That "warning" was not resolved.
I think this is the problem here... quote: My PHP v7.0.5 domain name registration page here uses all of these elements:
Support for this parameter is only in the v7.1 line. Vince Click Here for Shopping Cart SoftwareClick Here to sign up for our newsletterClick Here for the latest updater
|
tgorski
Ecommerce Template Expert
USA
910 Posts |
Posted - 08/05/2019 : 13:00:41
So, now there is a new update on Google Search Console and the microdata missing fields...
All of these "Warnings" have now been escalated to ERRORS!
This does mean that theses product detail pages will be affected in search results. I think the fix is now URGENTLY needed.
Tim Gorski
|
ITZAP
Ecommerce Template Guru
Australia
1017 Posts |
Posted - 08/05/2019 : 19:02:10
Hi Tim, I can see there have been some updates to the Google Search ConsoleIf you are seeing reports of structured data ERRORS on "Product" pages that were only " Warnings" before, then I suggest you might take a look through issues posted on the Search Console Help community forum. Here is the link ... > https://support.google.com/webmasters/communityHighly likely that you will not be the only Webmaster looking for solutions to such " Errors". I honestly don't think the " Errors" you are experiencing are caused by the Ecommerce Templates shopping cart software. You may find the actual reason to be how Product details are entered, or perhaps required details not entered at all and are missing. Gary
|
John M
Advanced Member
459 Posts Pre-sales questions only (More Details...)
|
Posted - 08/11/2019 : 13:16:39
An update from Gary's regarding the Google Structured Data Testing Tool "Warnings":
[orange]Schema Condition[/orange] Make sure you have this parameter in your includes file: [blue]$setschemacondition=TRUE;[/blue]
[orange]Schema Availability[/orange] Make sure you have this parameter in your includes file: [blue]$setschemaavailability=TRUE;[/blue]
[orange]Brand[/orange] Add a [blue]pddbrand[/blue] function to incproddetails.php just below the end of [red]function pddsku() {}[/red]: [blue] [code]function pddbrand(){ global $brand,$rs; if((@$brand!='' || $GLOBALS['hascustomlayout'])) print '<div class="detailbrand">' . ($showbrand!=''?'<span class="prodbrandlabel detailbrandlabel">' . $brand . '</span> ':'') . ($GLOBALS['noschemamarkup']?'':'<span itemprop="' . $GLOBALS['brandschemaidentifier'] . '">') . $brand . ($GLOBALS['noschemamarkup']?'':'</span>') . '</div>'; }[/code][/blue] Add the layout code for the brand layout just below the: [red]elseif($layoutoption=='sku') pddsku();[/red] [blue]elseif($layoutoption=='brand') pddbrand();[/blue]
Add these parameters to you includes file: [blue]$brandschemaidentifier="brand"; $showbrand="none"; $brand="Your Brand Name Here";[/blue]
Add [blue]brand[/blue] to the page layout:
$detailpagelayout="navigation,productname,productimage,productid,reviewstars,sku,[blue]brand[/blue],options,instock,price,currency,quantity,checkoutbutton,previousnext,socialmedia,description,reviews,searchwords";
[orange]Global Identifier (e.g. isbn, mpn or gtin8)[/orange]
Add all of your own applicable parameters to your includes.php file: [blue]$skuschemaidentifier="gtin13 EAN";[/blue] Please note your SKU number should actually be valid for these formats
[orange]URL[/orange]
Add these parameters to you includes file: [blue]$urlschemaidentifier="url"; $showdetailurl="none";[/blue]
[orange]Product URL[/orange] add the blue code as below: [code]function pdddetailname(){ global $sstrong,$estrong,$rs,$alldiscounts,$nomarkup,$detailnameh1,$orstoreurlssl; print $sstrong . '<div class="detailname"><'.(@$detailnameh1?'h1':'span') . ($GLOBALS['noschemamarkup']?'':' itemprop="name"') . '>' . $rs[getlangid('pName',1)] . '</'.(@$detailnameh1?'h1':'span').'>' . $GLOBALS['xxDot']; [blue]print ($GLOBALS['noschemamarkup']?'':'<a class="detailurl" href="' . detailpageurl('') . '" itemprop="' . $GLOBALS['urlschemaidentifier'] . '">') . detailpageurl('') . ($GLOBALS['noschemamarkup']?'':'</a>');[/blue] if($alldiscounts!='') print ' ' . (@$nomarkup?'':'<font color="#FF0000">') . '<span class="discountsapply detaildiscountsapply">' . $GLOBALS['xxDsApp'] . '</span>' . (@$nomarkup?'':'</font>'); print '</div>' . $estrong; }[/code]
[orange]Offer URL[/orange] add the blue code as below: [code]function pddprice(){ global $Count,$rs,$pricezeromessage,$thetax,$ssIncTax,$noprice,$countryCurrency; if(@$noprice!=TRUE){ $separatetaxinc=@$GLOBALS['showtaxinclusive']==1 && ($rs['pExemptions'] & 2)!=2; $displayprice=(@$GLOBALS['showtaxinclusive']===2 && ($rs['pExemptions'] & 2)!=2 ? $rs['pPrice']+($rs['pPrice']*$thetax/100.0) : $rs['pPrice']); print '<div class="detailprice"' . ($rs['pPrice']!=0&&!$GLOBALS['noschemamarkup']?' itemprop="offers" itemscope itemtype="http://schema.org/Offer"><meta itemprop="priceCurrency" content="'.$countryCurrency.'"':'') . '><strong>' . $GLOBALS['xxPrice'].($GLOBALS['xxPrice']!=''?':':'') . '</strong> <span class="price" id="pricediv' . $Count . '"'.($rs['pPrice']!=0&&!$GLOBALS['noschemamarkup']&&!$separatetaxinc?' itemprop="price" content="' . number_format($displayprice,2,'.','') . '"':'').'>' . ($rs['pPrice']==0 && @$pricezeromessage!='' ? $pricezeromessage : FormatEuroCurrency($displayprice)) . '</span> '; if($separatetaxinc) printf('<span class="inctax" id="taxmsg' . $Count . '"' . ($rs['pPrice']==0 ? ' style="display:none"' : '') . '>' . $ssIncTax . '</span>','<span id="pricedivti' . $Count . '"' . ($GLOBALS['noschemamarkup']?'':' itemprop="price" content="' . number_format($rs['pPrice']+($rs['pPrice']*$thetax/100.0),2,'.','') . '"') . '>' . ($rs['pPrice']==0 ? '-' : FormatEuroCurrency($rs['pPrice']+($rs['pPrice']*$thetax/100.0))) . '</span> '); schemaconditionavail(); [blue]print ($GLOBALS['noschemamarkup']?'':'<a class="detailurl" href="' . detailpageurl('') . '" itemprop="' . $GLOBALS['urlschemaidentifier'] . '">') . detailpageurl('') . ($GLOBALS['noschemamarkup']?'':'</a>');[/blue] print '</div>'; } }[/code]
This should reduce the warnings down to 1 warning (priceValidUntil) except for products that have no reviews which will have 3 warnings.
John
|
Vince
Administrator
42761 Posts |
Posted - 08/12/2019 : 02:14:11
Hi John It looks like the Brand set there would just be a global value that would be set for every product. Remember as I mentioned above that in the case of an Apple iPhone the Brand would not be Apple as some might assume, but rather iPhone; and many might well be setting the manufacturer name for the brand. It's probably not going to be required for the vast majority of products in the vast majority of stores. Also I would imagine that setting it correctly should be above just getting rid of the warning. Vince Click Here for Shopping Cart SoftwareClick Here to sign up for our newsletterClick Here for the latest updater
|
stonewx
Starting Member
31 Posts Pre-sales questions only (More Details...)
|
Posted - 10/18/2019 : 12:50:20
Working on our schema settings in the includes file using some of the recommendations here.
We have custom order items that are displayed without "sell" being turned on. These items show as [code]<meta itemprop="availability" content="http://schema.org/OutOfStock">[/code]
My suggestion/question: Is it possible to have an includes trigger that could change the OutofStock content to InStock so we don't need to manually edit the incproddetail.php? We don't use stock management.
So happy the additional schema was included in the update for 7.1.6!
Thank you, Lynne
|
|