cinna12 Posted November 10, 2015 Share Posted November 10, 2015 Hi Guys, I saw a forum related to schema.org markup error where in product price is missing and giving an error in google developers tool.. Is there is any way i can remove this error.. The forum i saw had no definite solution and so i came with this question again ... Kindly share your answers Thanks in advance.. Link to comment Share on other sites More sharing options...
cinna12 Posted November 10, 2015 Author Share Posted November 10, 2015 In the previous forum , the solution they gave is to remove the block of code from product-list.tpl .. If i remove that block, the instock schema gets removed .. I don't want that.. I want the instock schema and also the price schema to be visible to google .. Kindly consider this point also ... Thanks. Link to comment Share on other sites More sharing options...
Vineet Girdhar Posted December 1, 2015 Share Posted December 1, 2015 Hi None of the forums across the globe with genius brains around of prestashop have understood this problem as this is nothing to do with prestashop and it is more of google codes and the way google crawlers read the data and content of your website.... After my own research and going deep into the issue have found out the problem which completely resolves the issue of missing price without changing any code. Vineet Business head -Iambridal.com India Link to comment Share on other sites More sharing options...
Vineet Girdhar Posted December 1, 2015 Share Posted December 1, 2015 <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> <span class="available-now"><link itemprop="availability" href="http://schema.org/InStock"/>In stock </span> </span> this error yet to find the solution without a delete code option.... otherwise main price errors in schema.org while doing the testing can be resolved simply without touching any code Vineet Link to comment Share on other sites More sharing options...
cinna12 Posted December 1, 2015 Author Share Posted December 1, 2015 Hi , Hey you know i went through many forum sites and found that people are removing the small schema code from the product page in order to remove the errors.. But really that is not the solution.. Finally i have also found a solution to this problem. The solution is not to remove a block of code from product-list.tpl instead we need to insert a 4 line code ... Here it is how to do.... Today I am going to explain How to rectify the error of " schema.org price missing" that appears in Google Mark up tool. If you look at the product-list.tpl page in prestashop, you wont' be able to catch up where exactly the code is missing.. Let me first tell you where you find the product-list.tpl page .. It is located in root_directory/themes/your_theme/product-list.tpl When you open this page in notepad, notepad ++ or other tool, you need to ctrl + F and search for <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> . Below this you will find one more line of code : {if ($product.allow_oosp || $product.quantity > 0)} Just below this line of code, place this code below : <span itemprop="price" class="price product-price{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} product-price-new{/if}"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> Click on save to save the changes made. Now its all done. Just go to https://developers.google.com/structured-data/testing-tool/ Enter your website URL and click on Validate. You will find the errors related Price schema.org is gone and it will show you a message ALL GOOD . Do comment below and let me know if you have any doubts regarding this.. Thanks. 1 Link to comment Share on other sites More sharing options...
dmouradov Posted December 16, 2015 Share Posted December 16, 2015 Thanks it works !! Link to comment Share on other sites More sharing options...
dmouradov Posted December 16, 2015 Share Posted December 16, 2015 I hawe 1 more problem with reviews there is a solution ?? Link to comment Share on other sites More sharing options...
cinna12 Posted December 16, 2015 Author Share Posted December 16, 2015 can you pls share the link for which URL you are analyzing markup problems.. ? I will get a better idea Link to comment Share on other sites More sharing options...
Vineet Girdhar Posted December 25, 2015 Share Posted December 25, 2015 The solution give of code to be pasted in product-list.tpl does not worked for us Just wanted to inform the error still continues to show as earlier in search ....do we need to wait for some time or it should reflect automatically.?? Code paste doesnot help Link to comment Share on other sites More sharing options...
dmouradov Posted December 25, 2015 Share Posted December 25, 2015 (edited) This problem is solved there is another (if the product has accessories) https://developers.google.com/structured-data/testing-tool?url=http%253A%252F%252Fwww.deltawings.fr%252Ffr%252Fmoniteurs%252F33-rc732-dvr-7-58ghz-32ch-lcd-diversity-receiver-fpv-monitor.html In general, Google does not like several products (schema.org) on a single page Maybe we should remove markings ? /www/themes/yoar theme/sub/product_info Tab.tpl Prestashop 1.6.0.9 <script type="text/javascript"> $(document).ready(function(){ $('.more_info_block .page-product-heading li:first, .more_info_block .tab-content section:first').addClass('active'); }); </script> <ul class="nav nav-tabs tab-info page-product-heading"> {if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <li><a href="#quantityDiscount" data-toggle="tab">{l s='Volume discounts'}</a></li> {/if} {if $product->description} <li class="active"><a href="#tab2" data-toggle="tab">{l s='More info'}</a></li> {/if} {if isset($features) && $features} <li><a href="#tab3" data-toggle="tab">{l s='Data sheet'}</a></li> {/if} {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT} {$HOOK_PRODUCT_TAB} {/if} {if isset($accessories) && $accessories} <li><a href="#tab4" data-toggle="tab">{l s='Accessories'}</a></li> {/if} {if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable} {if isset($attachments) && $attachments} <li ><a href="#tab5" data-toggle="tab">{l s='Download'}</a></li> {/if} {if isset($product) && $product->customizable} <li ><a href="#tab6" data-toggle="tab">{l s='Product customization'}</a></li> {/if} {/if} {if isset($packItems) && $packItems|@count > 0} <li ><a href="#blockpack" data-toggle="tab">{l s='Pack'}</a></li> {/if} </ul> <div class="tab-content"> {if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <!-- quantity discount --> <section id="tabquantityDiscount" class="tab-pane page-product-box"> <div id="quantityDiscount" class="tab-pane"> <table class="std table-product-discounts"> <thead> <tr> <th>{l s='Quantity'}</th> <th>{if $display_discount_price}{l s='Price'}{else}{l s='Discount'}{/if}</th> <th>{l s='You Save'}</th> </tr> </thead> <tbody> {foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'} <tr id="quantityDiscount_{$quantity_discount.id_product_attribute}" class="quantityDiscount_{$quantity_discount.id_product_attribute}" data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value|floatval}" data-discount-quantity="{$quantity_discount.quantity|intval}"> <td> {$quantity_discount.quantity|intval} </td> <td> {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'} {if $display_discount_price} {convertPrice price=$productPrice-$quantity_discount.real_value|floatval} {else} {convertPrice price=$quantity_discount.real_value|floatval} {/if} {else} {if $display_discount_price} {convertPrice price = $productPrice-($productPrice*$quantity_discount.reduction)|floatval} {else} {$quantity_discount.real_value|floatval}% {/if} {/if} </td> <td> <span>{l s='Up to'}</span> {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'} {$discountPrice=$productPrice-$quantity_discount.real_value|floatval} {else} {$discountPrice=$productPrice-($productPrice*$quantity_discount.reduction)|floatval} {/if} {$discountPrice=$discountPrice*$quantity_discount.quantity} {$qtyProductPrice = $productPrice*$quantity_discount.quantity} {convertPrice price=$qtyProductPrice-$discountPrice} </td> </tr> {/foreach} </tbody> </table> </div> </section> {/if} {if $product->description} <!-- More info --> <section id="tab2" class="tab-pane page-product-box active"> {if isset($product) && $product->description} <!-- full description --> <div class="rte">{$product->description}</div> {/if} </section> <!--end More info --> {/if} {if isset($features) && $features} <!-- Data sheet --> <section id="tab3" class="tab-pane page-product-box"> <table class="table-data-sheet"> {foreach from=$features item=feature} <tr class="{cycle values="odd,even"}"> {if isset($feature.value)} <td>{$feature.name|escape:'html':'UTF-8'}</td> <td>{$feature.value|escape:'html':'UTF-8'}</td> {/if} </tr> {/foreach} </table> </section> <!--end Data sheet --> {/if} <!--HOOK_PRODUCT_TAB --> {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if} <!--end HOOK_PRODUCT_TAB --> {if isset($accessories) && $accessories} <!--Accessories --> <section id="tab4" class="tab-pane page-product-box"> <div class="block products_block accessories-block clearfix"> <div class="block_content"> <div class="product_list grid row"> {foreach from=$accessories item=accessory name=accessories_list} {if ($accessory.allow_oosp || $accessory.quantity_all_versions > 0 || $accessory.quantity > 0) && $accessory.available_for_order && !isset($restricted_country_mode)} {assign var='accessoryLink' value=$link->getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)} <div class="product_block col-xs-6 col-sm-6 col-md-3 col-lg-3 item ajax_block_product{if $smarty.foreach.accessories_list.first} first_item{elseif $smarty.foreach.accessories_list.last} last_item{else} item{/if} product_accessories_description"> <div class="product-container text-center product-block" itemscope itemtype="http://schema.org/Product"> <div class="left-block"> <div class="product-image-container image"> <div class="leo-more-info" data-idproduct="{$accessory.id_product}"></div> <a class="product_img_link" href="{$accessory.link|escape:'html':'UTF-8'}" title="{$accessory.name|escape:'html':'UTF-8'}" itemprop="url"> <img class="replace-2x img-responsive" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($accessory.legend)}{$accessory.legend|escape:'html':'UTF-8'}{else}{$accessory.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($accessory.legend)}{$accessory.legend|escape:'html':'UTF-8'}{else}{$accessory.name|escape:'html':'UTF-8'}{/if}" itemprop="image" /> <span class="product-additional" data-idproduct="{$accessory.id_product}"></span> </a> {if isset($quick_view) && $quick_view} <a class="quick-view btn-outline-inverse btn" href="{$accessory.link|escape:'html':'UTF-8'}" rel="{$accessory.link|escape:'html':'UTF-8'}" title="{l s='Quick view'}" > <i class="fa fa-eye"></i> </a> {/if} {if isset($accessory.new) && $accessory.new == 1} <span class="new-box"> <span class="new-label product-label">{l s='New'}</span> </span> {/if} {if isset($accessory.on_sale) && $accessory.on_sale && isset($accessory.show_price) && $accessory.show_price && !$PS_CATALOG_MODE} <span class="sale-box"> <span class="sale-label product-label">{l s='Sale!'}</span> </span> {/if} </div> {hook h="displayProductDeliveryTime" product=$accessory} {hook h="displayProductPriceBlock" product=$accessory type="weight"} </div> <div class="right-block"> <div class="product-meta"> {hook h='displayProductListReviews' product=$accessory} <h5 itemprop="name" class="name"> {if isset($accessory.pack_quantity) && $accessory.pack_quantity}{$accessory.pack_quantity|intval|cat:' x '}{/if} <a class="product-name" href="{$accessory.link|escape:'html':'UTF-8'}" title="{$accessory.name|escape:'html':'UTF-8'}" itemprop="url" > {$accessory.name|truncate:45:'...'|escape:'html':'UTF-8'} </a> </h5> <p class="product-desc" itemprop="description"> {$accessory.description_short|strip_tags:'UTF-8'|truncate:50:'...'} </p> {if (!$PS_CATALOG_MODE AND ((isset($accessory.show_price) && $accessory.show_price) || (isset($accessory.available_for_order) && $accessory.available_for_order)))} <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="content_price"> {if isset($accessory.show_price) && $accessory.show_price && !isset($restricted_country_mode)} <span itemprop="price" class="price product-price"> {if !$priceDisplay}{convertPrice price=$accessory.price}{else}{convertPrice price=$accessory.price_tax_exc}{/if} </span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {if isset($accessory.specific_prices) && $accessory.specific_prices && isset($accessory.specific_prices.reduction) && $accessory.specific_prices.reduction > 0} {hook h="displayProductPriceBlock" product=$accessory type="old_price"} <span class="old-price product-price"> {displayWtPrice p=$accessory.price_without_reduction} </span> {if $accessory.specific_prices.reduction_type == 'percentage'} <span class="price-percent-reduction">-{$accessory.specific_prices.reduction * 100}%</span> {/if} {/if} {hook h="displayProductPriceBlock" product=$accessory type="price"} {hook h="displayProductPriceBlock" product=$accessory type="unit_price"} {/if} </div> {/if} <div class="cart"> {if ($accessory.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $accessory.available_for_order && !isset($restricted_country_mode) && $accessory.minimal_quantity <= 1 && $accessory.customizable != 2 && !$PS_CATALOG_MODE} {if (!isset($accessory.customization_required) || !$accessory.customization_required) && ($accessory.allow_oosp || $accessory.quantity > 0)} {if isset($static_token)} <a class="button ajax_add_to_cart_button btn btn-outline" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$accessory.id_product|intval}&token={$static_token}", false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$accessory.id_product|intval}"> <i class="fa fa-shopping-cart"></i> <span>{l s='Add to cart'}</span> </a> {else} <a class="button ajax_add_to_cart_button btn btn-outline" href="{$link->getPageLink('cart',false, NULL, 'add=1&id_product={$accessory.id_product|intval}', false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$accessory.id_product|intval}"> <i class="fa fa-shopping-cart"></i> <span>{l s='Add to cart'}</span> </a> {/if} {else} <div class="ajax_add_to_cart_button btn disabled btn-outline" title="{l s='Out of stock'}" > <i class="fa fa-shopping-cart"></i> <span>{l s='Out of stock'}</span> </div> {/if} {/if} </div> {if isset($accessory.color_list) && $ENABLE_COLOR} <div class="color-list-container">{$accessory.color_list} </div> {/if} <div class="product-flags"> {if (!$PS_CATALOG_MODE AND ((isset($accessory.show_price) && $accessory.show_price) || (isset($accessory.available_for_order) && $accessory.available_for_order)))} {if isset($accessory.online_only) && $accessory.online_only} <span class="online_only label label-warning">{l s='Online only'}</span> {/if} {/if} {if isset($accessory.on_sale) && $accessory.on_sale && isset($accessory.show_price) && $accessory.show_price && !$PS_CATALOG_MODE} {elseif isset($accessory.reduction) && $accessory.reduction && isset($accessory.show_price) && $accessory.show_price && !$PS_CATALOG_MODE} <span class="discount label label-danger">{l s='Reduced price!'}</span> {/if} </div> {if (!$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && ((isset($accessory.show_price) && $accessory.show_price) || (isset($accessory.available_for_order) && $accessory.available_for_order)))} {if isset($accessory.available_for_order) && $accessory.available_for_order && !isset($restricted_country_mode)} <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> {if ($accessory.allow_oosp || $accessory.quantity > 0)} <span class="{if $accessory.quantity <= 0 && !$accessory.allow_oosp}out-of-stock{else}available-now{/if}"> <link itemprop="availability" href="http://schema.org/InStock" />{if $accessory.quantity <= 0}{if $accessory.allow_oosp}{if isset($accessory.available_later) && $accessory.available_later}{$accessory.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($accessory.available_now) && $accessory.available_now}{$accessory.available_now}{else}{l s='In Stock'}{/if}{/if} </span> {elseif (isset($accessory.quantity_all_versions) && $accessory.quantity_all_versions > 0)} <span class="available-dif"> <link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'} </span> {else} <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} </span> {/if} </div> {/if} {/if} {if $page_name !='product'} <div class="functional-buttons clearfix"> {if $ENABLE_WISHLIST} <div class="wishlist"> {hook h='displayProductListFunctionalButtons' product=$accessory} </div> {/if} {if isset($comparator_max_item) && $comparator_max_item} <div class="compare"> <a class="add_to_compare compare btn btn-outline-inverse" href="{$accessory.link|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product}" title="{l s='Add to compare'}" > <i class="fa fa-files-o"></i> <span>{l s='Add to compare'}</span> </a> </div> {/if} </div> {/if} </div> </div> </div> </div> {/if} {/foreach} </div> </div> </div> </section> <!--end Accessories --> {/if} <!-- description & features --> {if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable} {if isset($attachments) && $attachments} <!--Download --> <section id="tab5" class="tab-pane page-product-box"> {foreach from=$attachments item=attachment name=attachements} {if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if} <div class="col-lg-4 col-md-4 col-xs-12"> <h4><a href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">{$attachment.name|escape:'html':'UTF-8'}</a></h4> <p class="text-muted">{$attachment.description|escape:'html':'UTF-8'}</p> <a class="btn btn-default btn-block" href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}"> <i class="icon-download"></i> {l s="Download"} ({Tools::formatBytes($attachment.file_size, 2)}) </a> <hr> </div> {if $smarty.foreach.attachements.iteration %3 == 0 || $smarty.foreach.attachements.last}</div>{/if} {/foreach} </section> <!--end Download --> {/if} {if isset($product) && $product->customizable} <!--Customization --> <section id="tab6" class="tab-pane page-product-box"> <!-- Customizable products --> <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix"> <p class="infoCustomizable"> {l s='After saving your customized product, remember to add it to your cart.'} {if $product->uploadable_files} <br /> {l s='Allowed file formats are: GIF, JPG, PNG'}{/if} </p> {if $product->uploadable_files|intval} <div class="customizableProductsFile"> <h5 class="product-heading-h5">{l s='Pictures'}</h5> <ul id="uploadable_files" class="clearfix"> {counter start=0 assign='customizationField'} {foreach from=$customizationFields item='field' name='customizationFields'} {if $field.type == 0} <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if isset($pictures.$key)} <div class="customizationUploadBrowse"> <img src="{$pic_dir}{$pictures.$key}_small" alt="" /> <a href="{$link->getProductDeletePictureLink($product, $field.id_customization_field)|escape:'html':'UTF-8'}" title="{l s='Delete'}" > <img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" /> </a> </div> {/if} <div class="customizationUploadBrowse form-group"> <label class="customizationUploadBrowseDescription"> {if !empty($field.name)} {$field.name} {else} {l s='Please select an image file from your computer'} {/if} {if $field.required}<sup>*</sup>{/if} </label> <input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="form-control customization_block_input {if isset($pictures.$key)}filled{/if}" /> </div> </li> {counter} {/if} {/foreach} </ul> </div> {/if} {if $product->text_fields|intval} <div class="customizableProductsText"> <h5 class="product-heading-h5">{l s='Text'}</h5> <ul id="text_fields"> {counter start=0 assign='customizationField'} {foreach from=$customizationFields item='field' name='customizationFields'} {if $field.type == 1} <li class="customizationUploadLine{if $field.required} required{/if}"> <label for ="textField{$customizationField}"> {assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if !empty($field.name)} {$field.name} {/if} {if $field.required}<sup>*</sup>{/if} </label> <textarea name="textField{$field.id_customization_field}" class="form-control customization_block_input" id="textField{$customizationField}" rows="3" cols="20">{strip} {if isset($textFields.$key)} {$textFields.$key|stripslashes} {/if} {/strip}</textarea> </li> {counter} {/if} {/foreach} </ul> </div> {/if} <p id="customizedDatas"> <input type="hidden" name="quantityBackup" id="quantityBackup" value="" /> <input type="hidden" name="submitCustomizedDatas" value="1" /> <button class="button btn btn-default button button-small" name="saveCustomization"> <span>{l s='Save'}</span> </button> <span id="ajax-loader" class="unvisible"> <img src="{$img_ps_dir}loader.gif" alt="loader" /> </span> </p> </form> <p class="clear required"><sup>*</sup> {l s='required fields'}</p> </section> <!--end Customization --> {/if} {/if} </div> {if isset($packItems) && $packItems|@count > 0} <section id="blockpack" class="tab-pane page-product-box"> <h3 class="page-product-heading">{l s='Pack content'}</h3> {include file="$tpl_dir./product-list.tpl" products=$packItems} </section> {/if} {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if} Edited December 25, 2015 by dmouradov (see edit history) Link to comment Share on other sites More sharing options...
Vineet Girdhar Posted December 26, 2015 Share Posted December 26, 2015 https://developers.google.com/structured-data/testing-tool/?url=https://www.iambridal.com/engagement-rings The error page after today's crawl ...we have placed the following code already in the product-list.tpl <span itemprop="price" class="price product-price{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} product-price-new{/if}"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> Kindly advise really running out of ideas to kill this issue Link to comment Share on other sites More sharing options...
Vineet Girdhar Posted December 29, 2015 Share Posted December 29, 2015 waiting for reply Link to comment Share on other sites More sharing options...
cinna12 Posted December 29, 2015 Author Share Posted December 29, 2015 Hi, The errors found in your link http://www.iambridal.com/engagement-rings has a missing element in the <div> section.. Here is the solution for that .... This is your code : " <div itemprop="offers" itemscope class="content_price"> <span itemprop="price" class="price product-price"> ₹ 10,408 </span><meta itemprop="priceCurrency" content="INR"/></div> " Rectification : " <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="content_price"> <span itemprop="price" class="price product-price"> ₹2,400.00 </span><meta itemprop="priceCurrency" content="INR" /></div> " Just add the small code and you will find no errors .... Even after doing this, errors persist... then reply back.. Thanks,... Link to comment Share on other sites More sharing options...
cinna12 Posted December 29, 2015 Author Share Posted December 29, 2015 This is what you have to do... In your code, after itemscope itemtype is not mentioned.... copy and paste this itemtype="http://schema.org/Offer" after itemscope... Thanks.. Link to comment Share on other sites More sharing options...
dmouradov Posted December 29, 2015 Share Posted December 29, 2015 Hi cinna12 Maybe you have a solution for my problem? Link to comment Share on other sites More sharing options...
vinefreshtees Posted February 20, 2016 Share Posted February 20, 2016 (edited) I'm having a issue with this as well. It seems my product page comes up without error, but the category listing of the product comes up with price missing and required under offer. What can I do to fix this? I'd really appreciate a solution. The site is www.vinefreshtees.com Edited February 20, 2016 by vinefreshtees (see edit history) Link to comment Share on other sites More sharing options...
phạm trọng khang Posted July 6, 2016 Share Posted July 6, 2016 Hello, i has found solution for this, you can see http://schema.org/price , price must have structer <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> That mean you must have 1 span for currency and 1 for price number, but in prestashop it convert to Price price number, so it alway showing 1000$ Solution is <span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span><span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}</span> <span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>With this two first span, it will show correct structer of schema and google still understand it, the last span make price display correct, only display I has tested and it worked Link to comment Share on other sites More sharing options...
Obedienciaysumision Posted July 22, 2016 Share Posted July 22, 2016 error.tifferror.tiffHi everyone !! I need some help. I have a shop in prestashop 1.6.1.5 and the google tool show me the following advertisement on the right column : warningprice 42.00 € (42.00 € The property is not a valid specification price. Get more information in http://schema.org/price.) When i click there, the left column shows the following : <span id="our_price_display" class="price" itemprop="price">42,00 €</span> Well, if I edit the "42,00 €" and leave it like this "42.00" google validate it. So i think i have to change the "," by a "." and remove de "€" symbol. But i don't know how. Can you help me with that ?? Thanks in advance !! My website is obedienciaysumision.com Link to comment Share on other sites More sharing options...
phạm trọng khang Posted July 23, 2016 Share Posted July 23, 2016 error.tifferror.tiffHi everyone !! I need some help. I have a shop in prestashop 1.6.1.5 and the google tool show me the following advertisement on the right column : warningprice 42.00 € (42.00 € The property is not a valid specification price. Get more information in http://schema.org/price.) When i click there, the left column shows the following : <span id="our_price_display" class="price" itemprop="price">42,00 €</span> Well, if I edit the "42,00 €" and leave it like this "42.00" google validate it. So i think i have to change the "," by a "." and remove de "€" symbol. But i don't know how. Can you help me with that ?? Thanks in advance !! My website is obedienciaysumision.com You can read my post above, may be it's solution Link to comment Share on other sites More sharing options...
Obedienciaysumision Posted July 23, 2016 Share Posted July 23, 2016 You can read my post above, may be it's solution Wich file do i have to edit and where is located ?? Thanks a lot !!! Link to comment Share on other sites More sharing options...
phạm trọng khang Posted July 23, 2016 Share Posted July 23, 2016 Wich file do i have to edit and where is located ?? Thanks a lot !!! I just check class name, it's product.tpl Link to comment Share on other sites More sharing options...
dmouradov Posted July 24, 2016 Share Posted July 24, 2016 I just check class name, it's product.tpl Hi, I'm sorry but. What is ( class name ) in my code there is no <Span> only <meta> presta 1.6.0.9 <!-- prices --> <div class="price"> <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span> <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if} {/if}--> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {hook h="displayProductPriceBlock" product=$product type="price"} {/if} </p> <p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}> <span id="reduction_percent_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if} </span> </p> <p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}> {if $priceDisplay >= 0 && $priceDisplay <= 2} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span> <!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} --> {/if} </p> {if $priceDisplay == 2} <br /> <span id="pretaxe_price"> <span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span> {l s='tax excl.'} </span> {/if} </div> <!-- end prices --> Link to comment Share on other sites More sharing options...
phạm trọng khang Posted July 24, 2016 Share Posted July 24, 2016 Hi, I'm sorry but. What is ( class name ) in my code there is no <Span> only <meta> presta 1.6.0.9 <!-- prices --> <div class="price"> <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span> <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if} {/if}--> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {hook h="displayProductPriceBlock" product=$product type="price"} {/if} </p> <p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}> <span id="reduction_percent_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if} </span> </p> <p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}> {if $priceDisplay >= 0 && $priceDisplay <= 2} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span> <!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} --> {/if} </p> {if $priceDisplay == 2} <br /> <span id="pretaxe_price"> <span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span> {l s='tax excl.'} </span> {/if} </div> <!-- end prices --> Can you explain more ? Link to comment Share on other sites More sharing options...
dmouradov Posted July 24, 2016 Share Posted July 24, 2016 Hello, i has found solution for this, you can see http://schema.org/price , price must have structer <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> That mean you must have 1 span for currency and 1 for price number, but in prestashop it convert to Price price number, so it alway showing 1000$ Solution is <span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span> <span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}</span> <span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> With this two first span, it will show correct structer of schema and google still understand it, the last span make price display correct, only display I has tested and it worked Hi and thanks for the quick response. version of my Presta 1.6.0.9 on line 261 havent </span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> you using other version of presta ? . Thanks <!-- prices --> <div class="price"> <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span> <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if} {/if}--> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {hook h="displayProductPriceBlock" product=$product type="price"} {/if} </p> <p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}> <span id="reduction_percent_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if} </span> </p> <p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}> {if $priceDisplay >= 0 && $priceDisplay <= 2} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span> <!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} --> {/if} </p> {if $priceDisplay == 2} <br /> <span id="pretaxe_price"> <span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span> {l s='tax excl.'} </span> {/if} </div> <!-- end prices --> Link to comment Share on other sites More sharing options...
Obedienciaysumision Posted July 25, 2016 Share Posted July 25, 2016 Hi !! thanks a lot for your time !! I have a few questions : I was reading the schema.org/price and noticed about the structure but i don´t know how to do it. So, i think i have to put this : Hello, i has found solution for this, you can see http://schema.org/price , price must have structer <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> That mean you must have 1 span for currency and 1 for price number, but in prestashop it convert to Price price number, so it alway showing 1000$ Solution is <span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span><span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}</span> <span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>With this two first span, it will show correct structer of schema and google still understand it, the last span make price display correct, only display I has tested and it worked To solve the problem, now the questions are : Do i have to ADD this ? Do i have to REPLACE some text with this ?? In this case, which is whats i have to erase ?? Are we still talking about the product.tpl file ??? Thanks in advance !! PD: sorry if my english is not good enough...its not my mother lenguaje... Link to comment Share on other sites More sharing options...
phạm trọng khang Posted July 26, 2016 Share Posted July 26, 2016 You can edit on product or product list if when check chema for price it say errors. Where have "<span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>" or price display, delete itemprop attribute if have and add two line below"<span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span><span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}" Hi !! thanks a lot for your time !! I have a few questions : I was reading the schema.org/price and noticed about the structure but i don´t know how to do it. So, i think i have to put this : Hello, i has found solution for this, you can see http://schema.org/price , price must have structer <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> That mean you must have 1 span for currency and 1 for price number, but in prestashop it convert to Price price number, so it alway showing 1000$ Solution is <span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span><span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}</span> <span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>With this two first span, it will show correct structer of schema and google still understand it, the last span make price display correct, only display I has tested and it worked To solve the problem, now the questions are : Do i have to ADD this ? Do i have to REPLACE some text with this ?? In this case, which is whats i have to erase ?? Are we still talking about the product.tpl file ??? Thanks in advance !! PD: sorry if my english is not good enough...its not my mother lenguaje... Link to comment Share on other sites More sharing options...
phạm trọng khang Posted July 26, 2016 Share Posted July 26, 2016 Hi friend, <meta itemprop="priceCurrency" content="{$currency->iso_code}" />not effect, just add two line i was give to below price display (remember remove itemprop of schema attribute on price display, it just make price display), two line i was give will be display none but schema will understand it Hi and thanks for the quick response. version of my Presta 1.6.0.9 on line 261 havent </span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> you using other version of presta ? . Thanks <!-- prices --> <div class="price"> <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span> <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if} {/if}--> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {hook h="displayProductPriceBlock" product=$product type="price"} {/if} </p> <p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}> <span id="reduction_percent_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if} </span> </p> <p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}> {if $priceDisplay >= 0 && $priceDisplay <= 2} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span> <!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} --> {/if} </p> {if $priceDisplay == 2} <br /> <span id="pretaxe_price"> <span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span> {l s='tax excl.'} </span> {/if} </div> <!-- end prices --> Link to comment Share on other sites More sharing options...
lucalilli Posted August 22, 2016 Share Posted August 22, 2016 Hi !! thanks a lot for your time !! I have a few questions : I was reading the schema.org/price and noticed about the structure but i don´t know how to do it. So, i think i have to put this : Hello, i has found solution for this, you can see http://schema.org/price , price must have structer <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> That mean you must have 1 span for currency and 1 for price number, but in prestashop it convert to Price price number, so it alway showing 1000$ Solution is <span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span> <span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}</span> <span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> With this two first span, it will show correct structer of schema and google still understand it, the last span make price display correct, only display I has tested and it worked To solve the problem, now the questions are : Do i have to ADD this ? Do i have to REPLACE some text with this ?? In this case, which is whats i have to erase ?? Are we still talking about the product.tpl file ??? Thanks in advance !! PD: sorry if my english is not good enough...its not my mother lenguaje... Hi, how did you solve the problem? Thanks in advance Link to comment Share on other sites More sharing options...
petter5 Posted January 18, 2017 Share Posted January 18, 2017 (edited) I'm trying to understand this. My product-list-tpl from prestashop 1.6.1.7 looks like this: {* * 2007-2016 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {if isset($products) && $products} {*define number of products per line in other page for desktop*} {if $page_name !='index' && $page_name !='product'} {assign var='nbItemsPerLine' value=3} {assign var='nbItemsPerLineTablet' value=2} {assign var='nbItemsPerLineMobile' value=3} {else} {assign var='nbItemsPerLine' value=4} {assign var='nbItemsPerLineTablet' value=3} {assign var='nbItemsPerLineMobile' value=2} {/if} {*define numbers of product per line in other page for tablet*} {assign var='nbLi' value=$products|@count} {math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines} {math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet} <!-- Products list --> <ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}"> {foreach from=$products item=product name=products} {math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile} {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if} {if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if} {if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if} <li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-4 col-md-3{else} col-xs-12 col-sm-6 col-md-4{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} last-in-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} first-in-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)} last-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 0} last-item-of-tablet-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 1} first-item-of-tablet-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 0} last-item-of-mobile-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 1} first-item-of-mobile-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModuloMobile)} last-mobile-line{/if}"> <div class="product-container" itemscope itemtype="https://schema.org/Product"> <div class="left-block"> <div class="product-image-container"> <a class="product_img_link" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url"> <img class="replace-2x img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" /> </a> {if isset($quick_view) && $quick_view} <div class="quick-view-wrapper-mobile"> <a class="quick-view-mobile" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}"> <i class="icon-eye-open"></i> </a> </div> <a class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}"> <span>{l s='Quick view'}</span> </a> {/if} {if (!$PS_CATALOG_MODE && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)} <span itemprop="price" class="price product-price"> {hook h="displayProductPriceBlock" product=$product type="before_price"} {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {if $product.price_without_reduction > 0 && isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span class="old-price product-price"> {displayWtPrice p=$product.price_without_reduction} </span> {if $product.specific_prices.reduction_type == 'percentage'} <span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span> {/if} {/if} {if $PS_STOCK_MANAGEMENT && isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)} <span class="unvisible"> {if ($product.allow_oosp || $product.quantity > 0)} <link itemprop="availability" href="https://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if} {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <link itemprop="availability" href="https://schema.org/LimitedAvailability" />{l s='Product available with different options'} {else} <link itemprop="availability" href="https://schema.org/OutOfStock" />{l s='Out of stock'} {/if} </span> {/if} {hook h="displayProductPriceBlock" product=$product type="price"} {hook h="displayProductPriceBlock" product=$product type="unit_price"} {/if} </div> {/if} {if isset($product.new) && $product.new == 1} <a class="new-box" href="{$product.link|escape:'html':'UTF-8'}"> <span class="new-label">{l s='New'}</span> </a> {/if} {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} <a class="sale-box" href="{$product.link|escape:'html':'UTF-8'}"> <span class="sale-label">{l s='Sale!'}</span> </a> {/if} </div> {if isset($product.is_virtual) && !$product.is_virtual}{hook h="displayProductDeliveryTime" product=$product}{/if} {hook h="displayProductPriceBlock" product=$product type="weight"} </div> <div class="right-block"> <h5 itemprop="name"> {if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if} <a class="product-name" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url" > {$product.name|truncate:45:'...'|escape:'html':'UTF-8'} </a> </h5> {capture name='displayProductListReviews'}{hook h='displayProductListReviews' product=$product}{/capture} {if $smarty.capture.displayProductListReviews} <div class="hook-reviews"> {hook h='displayProductListReviews' product=$product} </div> {/if} <p class="product-desc" itemprop="description"> {$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'} </p> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)} {hook h="displayProductPriceBlock" product=$product type='before_price'} <span class="price product-price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> {if $product.price_without_reduction > 0 && isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span class="old-price product-price"> {displayWtPrice p=$product.price_without_reduction} </span> {hook h="displayProductPriceBlock" id_product=$product.id_product type="old_price"} {if $product.specific_prices.reduction_type == 'percentage'} <span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span> {/if} {/if} {hook h="displayProductPriceBlock" product=$product type="price"} {hook h="displayProductPriceBlock" product=$product type="unit_price"} {hook h="displayProductPriceBlock" product=$product type='after_price'} {/if} </div> {/if} <div class="button-container"> {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.customizable != 2 && !$PS_CATALOG_MODE} {if (!isset($product.customization_required) || !$product.customization_required) && ($product.allow_oosp || $product.quantity > 0)} {capture}add=1&id_product={$product.id_product|intval}{if isset($product.id_product_attribute) && $product.id_product_attribute}&ipa={$product.id_product_attribute|intval}{/if}{if isset($static_token)}&token={$static_token}{/if}{/capture} <a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart', true, NULL, $smarty.capture.default, false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product-attribute="{$product.id_product_attribute|intval}" data-id-product="{$product.id_product|intval}" data-minimal_quantity="{if isset($product.product_attribute_minimal_quantity) && $product.product_attribute_minimal_quantity >= 1}{$product.product_attribute_minimal_quantity|intval}{else}{$product.minimal_quantity|intval}{/if}"> <span>{l s='Add to cart'}</span> </a> {else} <span class="button ajax_add_to_cart_button btn btn-default disabled"> <span>{l s='Add to cart'}</span> </span> {/if} {/if} <a class="button lnk_view btn btn-default" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='View'}"> <span>{if (isset($product.customization_required) && $product.customization_required)}{l s='Customize'}{else}{l s='More'}{/if}</span> </a> </div> {if isset($product.color_list)} <div class="color-list-container">{$product.color_list}</div> {/if} <div class="product-flags"> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} {if isset($product.online_only) && $product.online_only} <span class="online_only">{l s='Online only'}</span> {/if} {/if} {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} <span class="discount">{l s='Reduced price!'}</span> {/if} </div> {if (!$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)} <span class="availability"> {if ($product.allow_oosp || $product.quantity > 0)} <span class="{if $product.quantity <= 0 && isset($product.allow_oosp) && !$product.allow_oosp} label-danger{elseif $product.quantity <= 0} label-warning{else} label-success{/if}"> {if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if} </span> {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <span class="label-warning"> {l s='Product available with different options'} </span> {else} <span class="label-danger"> {l s='Out of stock'} </span> {/if} </span> {/if} {/if} </div> {if $page_name != 'index'} <div class="functional-buttons clearfix"> {hook h='displayProductListFunctionalButtons' product=$product} {if isset($comparator_max_item) && $comparator_max_item} <div class="compare"> <a class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" data-id-product="{$product.id_product}">{l s='Add to Compare'}</a> </div> {/if} </div> {/if} </div><!-- .product-container> --> </li> {/foreach} </ul> {addJsDefL name=min_item}{l s='Please select at least one product' js=1}{/addJsDefL} {addJsDefL name=max_item}{l s='You cannot add more than %d product(s) to the product comparison' sprintf=$comparator_max_item js=1}{/addJsDefL} {addJsDef comparator_max_item=$comparator_max_item} {addJsDef comparedProductsIds=$compared_products} {/if} Hello, i has found solution for this, you can see http://schema.org/price , price must have structer <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> That mean you must have 1 span for currency and 1 for price number, but in prestashop it convert to Price price number, so it alway showing 1000$ Solution is <span style="display: none" itemprop="priceCurrency" content="{$currency->iso_code}">{$currency->iso_code}</span><span style="display: none" itemprop="price" content="{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}">{if !$priceDisplay}{$product.price}{else}{$product.price_tax_exc}{/if}</span> <span content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" class="price product-price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>With this two first span, it will show correct structer of schema and google still understand it, the last span make price display correct, only display I has tested and it worked Can you post the code that will validate correctly so I can try "cut and paste" Edited January 18, 2017 by petter5 (see edit history) Link to comment Share on other sites More sharing options...
WB17 Posted March 13, 2017 Share Posted March 13, 2017 Hello, i've a problem in Google Webmaster Tools in Schema. Hundreds of products have this errors: https://drive.google.com/file/d/0B7xDAYSl6fb8dWh5V2hWNTR2dzQ/view?usp=sharing This is my Product-List.tpl file: {* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {if isset($products) && $products} {*define numbers of product per line in other page for desktop*} {if $page_name !='index' && $page_name !='product'} {assign var='nbItemsPerLine' value=3} {assign var='nbItemsPerLineTablet' value=2} {assign var='nbItemsPerLineMobile' value=3} {else} {assign var='nbItemsPerLine' value=4} {assign var='nbItemsPerLineTablet' value=3} {assign var='nbItemsPerLineMobile' value=2} {/if} {*define numbers of product per line in other page for tablet*} {assign var='nbLi' value=$products|@count} {math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines} {math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet} <!-- Products list --> <ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}"> {foreach from=$products item=product name=products} {math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile} {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if} {if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if} {if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if} <li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-6 col-md-6 col-lg-4{else} col-xs-12 col-sm-6 col-md-6 col-lg-4{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} last-in-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} first-in-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)} last-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 0} last-item-of-tablet-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 1} first-item-of-tablet-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 0} last-item-of-mobile-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 1} first-item-of-mobile-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModuloMobile)} last-mobile-line{/if}"> <div class="product-container" itemscope itemtype="http://schema.org/Product"> <div class="list-tab-img"> <div class="img_content"> <a class="product_img_link" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url"> <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'large_default')|escape:'html'}" alt="{$product.legend|escape:'html':'UTF-8'}" class="img-responsive"/> </a> </div> <div class="btn_content"> {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="exclusive ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}"> <i class="icon-shopping-cart"></i>{l s='add to cart'} </a> {else} <a class="exclusive ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, 'add=1&id_product={$product.id_product|intval}', false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}"> <i class="icon-shopping-cart"></i>{l s='add to cart'} </a> {/if} {else} <span class="exclusive ajax_add_to_cart_button btn btn-default disabled"> <i class="icon-shopping-cart"></i>{l s='add to cart'} </span> {/if} {/if} <a title="{l s='Add to wishlist'}" class="addToWishlist wishlistProd_{$product.id_product|intval}" href="#" onclick="WishlistCart('wishlist_block_list', 'add', '{$product.id_product|intval}', false, 1); return false;"> <i class="icon-heart"></i> </a> <a class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='Add to compare'}" data-id-product="{$product.id_product}"> <i class="icon-retweet"></i> </a> <a title="{l s='Quick view'}" class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}"> {l s='quickview'} </a> </div> </div> {* <div class="countdown" > {if isset($product.specific_prices) && $product.specific_prices.to|date_format:"%Y" !=0 } {hook h='timecountdown' product=$product } <span id="future_date_{$product.id_category_default}_{$product.id_product}" class="id_countdown"></span> {/if} </div> *} <div class="clearfix"></div> <div class="list-tab-info"> <div class="comment-box"> {hook h='displayProductListReviews' product=$product} </div> <div id="product_data_{$product.id_product}" class="info_left"> <div class="name_outer"> <a class="product-name" href="{$product.link|escape:'html'}" title="{$product.name|truncate:50:'...'|escape:'htmlall':'UTF-8'}"> {$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'} </a> <!-- zoorate feedaty product widget start --> <div id="zoorate_widget_8acb41949199b142"></div> <script src="//widget.zoorate.com/js/feed_v3.js" type="text/javascript"></script> <script type="text/javascript"> var zoorate_params = { "zoorate_ProductID": "{$product.id_product}", "zoorate_site_key": "10ba997925a512f775b49408b0947d2e", "zoorate_widget_css": "product_small.css", "zoorate_widget_type": "product_small", "zoorate_widget_id": "8acb41949199b142"+"|"+document.URL, "zoorate_widget_server": "widget.zoorate.com", "zoorate_div_id": "product_data_{$product.id_product}" }; do_widget(zoorate_params); </script> <!-- zoorate widget end --> {* Feedaty *} </div> <div class="price-box"> <span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> {if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} <span class="old-price product-price"> {displayWtPrice p=$product.price_without_reduction} </span> {/if} <meta itemprop="priceCurrency" content="{$priceDisplay}" /> </div> <p class="product-desc" itemprop="description"> {$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'} </p> <div class="list-tab-button"> {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="exclusive ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}"> <i class="icon-shopping-cart"></i> {l s='Add to cart'} </a> {else} <a class="exclusive ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, 'add=1&id_product={$product.id_product|intval}', false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}"> <i class="icon-shopping-cart"></i> {l s='Add to cart'} </a> {/if} {else} <span class="exclusive ajax_add_to_cart_button btn btn-default disabled"> <i class="icon-shopping-cart"></i> {l s='Add to cart'} </span> {/if} {/if} <a title="{l s='Quick view'}" class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}"> <i class="icon-eye-open"></i> </a> <a title="{l s='Add to wishlist'}" class="addToWishlist wishlistProd_{$product.id_product|intval}" href="#" rel="{$product.id_product|intval}" onclick="WishlistCart('wishlist_block_list', 'add', '{$product.id_product|intval}', false, 1); return false;"> <i class="icon-heart-empty"></i> </a> <a class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='Add to compare'}" data-id-product="{$product.id_product}"> <i class="icon-retweet"></i> </a> <div class="clearfix"></div> </div> <div class="clearfix"></div> </div> </div> </div><!-- .product-container> --> </li> {/foreach} </ul> {addJsDefL name=min_item}{l s='Please select at least one product' js=1}{/addJsDefL} {addJsDefL name=max_item}{l s='You cannot add more than %d product(s) to the product comparison' sprintf=$comparator_max_item js=1}{/addJsDefL} {addJsDef comparator_max_item=$comparator_max_item} {addJsDef comparedProductsIds=$compared_products} {/if} My Prestashop Version 1.6.0.14 What i've to do?? Thanks for your support, Fabio Link to comment Share on other sites More sharing options...
jjryeste Posted March 29, 2017 Share Posted March 29, 2017 Hello i have error price only in block top seller in home page, please help me https://www.patrones-bordados.es/ Link to comment Share on other sites More sharing options...
alicu90 Posted May 16, 2017 Share Posted May 16, 2017 Any solution for this problem in Prestashop 1.7? Link to comment Share on other sites More sharing options...
Heinrich.M Posted September 28, 2017 Share Posted September 28, 2017 We have this error: <span id="our_price_display" class="price" itemprop="price" content="10.999999">11,00 €</span> No idea what the cause is. I compared product controller to original and they are identical? Link to comment Share on other sites More sharing options...
helpdeskED Posted February 25, 2019 Share Posted February 25, 2019 (edited) I used a tricky way and I hope it will be accepted by Google. I just copied the following code from an earlier point in product-list.tpl and placed it after line 136 (prestashop 1.6) Here is the code (start...) <span itemprop="price" class="price product-price{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} product-price-new{/if}"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> (...end of code) What I really did is duplicate the already existing itemprop="price" and then I just placed it right after the line 135 (start of line... ) <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> (...end of line). This way I informed Google that besides avaliability, there is also a price, even if this price was already mentioned. This happens because, according to the Google point of view, there should be only one product in the page... I verified my solution with Google >> google.com/structured-data/testing-tool . I hope I helped...this might be useful to all versions, since the idea is to add markup atrribute and not to change the core code of prestashop. Edited February 25, 2019 by helpdeskED (see edit history) Link to comment Share on other sites More sharing options...
ivasport.net Posted July 11, 2020 Share Posted July 11, 2020 I can't believe that no one has yet provided exactly how to debug structured data on google How can this problem not be optimized in the newer versions of Prestashop I wasted a whole week of my time looking for ways to clear these errors, if they continue like this I will probably really give up the platform despite the fact that I paid a lot of money for modules and topics and what not. Why not just some developer not to give accurate information and stop this search and writing and waste of people's time. Just see how much has been written on the topic and continues and no one has given specific methods and results. I expected 1.7 to be much more optimized !!! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now