nupani Posted April 12, 2014 Share Posted April 12, 2014 Buenos días: Google webmaster tools me dice que tengo error en los datos estructurados de mis productos: me dice "falta price" el caso es que todos los productos tienen precio y en el comprobador de google el artículo sale con precio. Uso el tema por defecto y la versión es V1.6 ¿A alguien le ha pasado lo mismo? Gracias Link to comment Share on other sites More sharing options...
rOoLeZ Posted May 3, 2014 Share Posted May 3, 2014 A mi me pasa igual, y no logro solucionarlo 1 Link to comment Share on other sites More sharing options...
OrgasmiX Posted May 20, 2014 Share Posted May 20, 2014 Me uno a la petición. ¿Conseguisteis solucionarlo? Link to comment Share on other sites More sharing options...
rOoLeZ Posted May 20, 2014 Share Posted May 20, 2014 No, detecté la posible solución en mi plantilla (warehouse), el código schema de offer lo cambié por price, pero nada, no he logrado nada. Tampoco encuentro nada por la red al respecto, ni en los foros de google, ni en la ayuda de schema. Me uno a la petición. ¿Conseguisteis solucionarlo? Link to comment Share on other sites More sharing options...
NAISA.es Posted June 4, 2014 Share Posted June 4, 2014 Alguien encontró una solución a este error con el precio?. Link to comment Share on other sites More sharing options...
Milen Posted June 11, 2014 Share Posted June 11, 2014 Me uno tengo el mismo error 3 paginas y 72 elementos con el error Falta: price Link to comment Share on other sites More sharing options...
Milen Posted July 15, 2014 Share Posted July 15, 2014 A ver si os ayuda esto http://jordiob.com/2013/03/mejorando-el-seo-de-tu-prestashop-con-schema-org-y-rda-data-para-facebook/ Link to comment Share on other sites More sharing options...
Juanmax Posted July 21, 2014 Share Posted July 21, 2014 sigue fallando Link to comment Share on other sites More sharing options...
Decorateca Posted August 2, 2014 Share Posted August 2, 2014 A nosotr@s nos da exactamente el mismo error en TODOS los productos (Falta price) en P. 1.6. ¿Alguna idea? Link to comment Share on other sites More sharing options...
ujin81 Posted August 8, 2014 Share Posted August 8, 2014 Me uno al problema. Saludos Link to comment Share on other sites More sharing options...
OTworks Posted August 13, 2014 Share Posted August 13, 2014 (edited) Mismo problema. Tambien uso Warehouse de plantilla, no tengo ningun problema, sin embargo de 249 productos, me sale el fallo en 10 con schema.org sobre el precio. No lo entiendo, esta todo como el resto de productos que no dan problemas. Uso la version 1.5.6.2 de Prestashop. ¿Alguien sabe algo? Edited August 13, 2014 by OTworks (see edit history) Link to comment Share on other sites More sharing options...
avpinedo Posted August 25, 2014 Share Posted August 25, 2014 Estoy igual, plantilla original de prestashop 1.6 y absolutamente todos los productos me salen con falta:price, nadie ha dado con la solución?, gracias a todos. Link to comment Share on other sites More sharing options...
JCOP Posted September 11, 2014 Share Posted September 11, 2014 Mismo problema missing price en WMT, 246 errores!! Link to comment Share on other sites More sharing options...
sirlanzalot Posted September 14, 2014 Share Posted September 14, 2014 Yo también tengo el mismo problema. 477 errores de 488 paginas. Nadie da con la solución? Link to comment Share on other sites More sharing options...
xinito Posted September 16, 2014 Share Posted September 16, 2014 El problema con el campo price puede venir por el formato que tiene. Al menos según esta guía de Nemos tenemos que adecuar unas líneas del product, o product-list en las que eliminamos el signo de la moneda y así Google acepte el itemprop price. Link to comment Share on other sites More sharing options...
jjcdlt Posted October 1, 2014 Share Posted October 1, 2014 Yo me estoy volviendo loco con el error de "falta price", nadie sabe nada? Link to comment Share on other sites More sharing options...
xinito Posted October 6, 2014 Share Posted October 6, 2014 En mi caso, los errores de falta price están desapareciendo mediante la modificación del product.tpl y el product-list.tpl que indica la página de Nemos, justo en el apartado Price and Currency: "This is perhaps the most important part, because Google may decide not to add rich snippets for your site, if something is wrongly setup here (as I discovered with my own errors!)." Explica precisamente el porqué del error y cómo solventarlo, haciendo que la etiqueta para microdatos referente al precio se muestre sin el símbolo del €. 2 Link to comment Share on other sites More sharing options...
jjcdlt Posted October 7, 2014 Share Posted October 7, 2014 Gracias Xinito Link to comment Share on other sites More sharing options...
avpinedo Posted October 17, 2014 Share Posted October 17, 2014 he intentado la solución que se propone aquí y me da errores y lo he dejado como estaba, sabéis si esta mejor explicado en otro sitio, os estas resultado a todos esta solución? muchas gracias, os dejo la web que administro por si queréis echarle un vistazo. http://bibatools.com/ Link to comment Share on other sites More sharing options...
jjcdlt Posted October 17, 2014 Share Posted October 17, 2014 (edited) él intentado La Solución Que se PROPONE Aquí y me da Errores y he aquí que él Dejado estába como, sabeis si this Mejor Explicado en Otro Sitio, os ESTAS RESULTADO a Todos this solution? muchas gracias, os dejo la web Que administro Por si quereis Echarle Vistazo de la ONU. http://bibatools.com/ Yo lo he intentado que él y los Errores Siguen Ahí. Edited October 17, 2014 by jjcdlt (see edit history) Link to comment Share on other sites More sharing options...
xinito Posted October 17, 2014 Share Posted October 17, 2014 Así es cómo he dejado yo el product.tpl, alrededor de la línea 264: <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if $priceDisplay >= 0 && $priceDisplay <= 2} {$rightPrice = {convertPrice price=$productPrice[spam-filter] <span id="our_price_display" itemprop="price">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {$currencySign} <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if} {/if}--> {/if} </p> En este punto, el signo de moneda ya está fuera de la etiqueta de precio con lo que Google se supone que acepta como correcto. Para el caso de productos con combinaciones, el signo saldrá repetido y por ello debemos modificar también el product.js situado en la carpeta /js/ del directorio de la plantilla. Añadir justo debajo de la línea $('#our_price_display').text(our_price); sobre la linea 394 : var re = new RegExp("\\"+currencySign, "g"); var signRemoved = our_price.replace(re, ""); $('#our_price_display').text(signRemoved); La versión de PS que utilizo es la 1.5, para 1.6 también debería de funcionar. Recordad también que pueden pasar varios días hasta que Google rastree de nuevo vuestras páginas. 1 Link to comment Share on other sites More sharing options...
Losada Posted October 18, 2014 Share Posted October 18, 2014 A mi me sucede lo mismo, lo que puedo observar es que los datos estructurados de los productos funcionan correctamente, el problema viene con la home y las categorías, que detecta varios productos pero sin datos estructurados. Se podría solucionar de la misma manera? uso PS 1.6. Link to comment Share on other sites More sharing options...
avpinedo Posted October 20, 2014 Share Posted October 20, 2014 muchas gracias xinito, He hecho el cambio que propones en prestashop 1.6, con el product.tpl funciona perfectamente, pero en el product.js no encuentro en prestashop 1.6 la linea $('#our_price_display').text(our_price); seria ideal que alguien nos dijera donde colocar este código. Muchas gracias a todos por la ayuda Link to comment Share on other sites More sharing options...
avpinedo Posted October 24, 2014 Share Posted October 24, 2014 Alguna idea sobre lo que comente hace unos dias sobre el product.js? gracias Link to comment Share on other sites More sharing options...
xinito Posted October 26, 2014 Share Posted October 26, 2014 Como lo que se busca es eliminar el signo de € para los productos con combinaciones, sin necesidad de tocar el product.js, podemos modificar la línea del product.tpl donde se invoca, quedando de la siguiente manera: <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if $priceDisplay >= 0 && $priceDisplay <= 2} {$rightPrice = {convertPrice price=$productPrice[spam-filter] <span id="our_price_display" itemprop="price">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span> {if isset($groups)}<span></span>{else}<span class="price">{$currency->sign}</span>{/if} {/if} </p> Podría ser una solución, no sé si la mejor. Un saludo. Link to comment Share on other sites More sharing options...
Ickey Woods Posted November 1, 2014 Share Posted November 1, 2014 Voy a ver si puedo aclararos algo. Para las versiones 1.6 modificar el pordut.js no funciona Si lo modificáis según el documento explica y añadis esto: var re = new RegExp("\\"+currencySign, "g"); var signRemoved = our_price.replace(re, ""); $('#our_price_display').text(signRemoved); Al hacer cualquier cambio de combinación en el producto que afecte al precio no funcionará (por ejemplo cambiar un pote de pintura del formato de 1l a uno de 4l) Para el product.js sólo hay que añadir: var re = new RegExp("\\"+currencySign, "g"); Veréis que si lo haceís borra uno de los dos sinos del € pero el precio sale con 3 decimales. Hay que cambiar esta línea: $('#our_price_display').text(formatCurrency(priceWithDiscountsDisplay * currencyRate, currencyFormat, currencySign, currencyBlank)); Por la siguiente (borra currencySign y lo cambiamos por un espacio) $('#our_price_display').text(formatCurrency(priceWithDiscountsDisplay * currencyRate, currencyFormat, " ", currencyBlank)); El precio ya se verá sólo con 2 decimales. En cuanto a los errores en las herramietas de webmaster poco o nada se puede hacer. Como comenta en el artículo: "Google only accepts rich snippets for pages which have a single product (for some reason I still have to discover, I didn’t know it before they directly contacted me about my own product list: Product markup on listing pages is not supported” Los errores que os aparecen son las páginas de nuevos, populares, los más vendidos y tal y como está actualmente estrcuturado Google, de momento no desaparecerán. De todos modos el impacto negativo que puede tener en el posicionamiento es nulo. Lo importante es que las páginas de visualización del producto estén bien. Un saludo. Link to comment Share on other sites More sharing options...
badstraw Posted November 6, 2014 Share Posted November 6, 2014 (edited) Ya edite el product.tpl desde el editor de codigo de Cpanel , pero me sigue saliendo el mismo error cuando pruebo las herramientas de datos estructurados. En price currency sale 1, no debería salir la moneda? parece que la plantilla no reconoce el cambio de divisa. Alguien podría ayudarme ? me estoy volviendo loco porque de estar en la primera pagina de google, de pronto desapareció mi pagina debido a esos errores en la tienda en línea. Si quito el enlance a la tienda que está dentro de la página vuelvo a regresar al ranking de la primera página en google. Este es el error con el código ya modificado: offers: Item 1 url: More offers: Item 2 Error: Incomplete microdata with schema.org. Item 1 type: http://schema.org/offer property: price: $266.00 pricecurrency: 1 Item 2 type: http://schema.org/offer property: availability: http://schema.org/InStock muchas gracias por la ayuda Edited November 6, 2014 by badstraw (see edit history) Link to comment Share on other sites More sharing options...
Lex-Luthor Posted November 14, 2014 Share Posted November 14, 2014 (edited) El problema que está dando básicamente en algunas plantillas es que en las páginas de productos product-list.tpl se está dejando información básica para la validación del schema.org desde webmasterstools. Ocurre lo siguiente. En algunas plantillas el campo pricecurrency del esquema lo deja = 0 cuando tiene que ser = EUR (en el caso de euros) para arreglar esto en el product-list.tpl fijaros que tienen que quedar así todas las referencias a pricecurrency: <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> por otra parte es importante que el elemento del esquema que nos dice si el producto está en stock tiene que contener también el precio y la moneda igual que se muestra a continuación. Item 1 type: http://schema.org/offer property: availability: http://schema.org/InStock price: 50 € pricecurrency: EUR debería quedar más o menos así <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> {if ($product.allow_oosp || $product.quantity > 0)} <span class="{if $product.quantity <= 0}out-of-stock{else}available-now{/if}"> <link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{$product.available_later}{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 itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <span class="available-dif"> <link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {else} <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {/if} </span> Edited November 14, 2014 by Lex-Luthor (see edit history) 3 Link to comment Share on other sites More sharing options...
badstraw Posted November 16, 2014 Share Posted November 16, 2014 (edited) El problema que está dando básicamente en algunas plantillas es que en las páginas de productos product-list.tpl se está dejando información básica para la validación del schema.org desde webmasterstools. Ocurre lo siguiente. En algunas plantillas el campo pricecurrency del esquema lo deja = 0 cuando tiene que ser = EUR (en el caso de euros) para arreglar esto en el product-list.tpl fijaros que tienen que quedar así todas las referencias a pricecurrency: <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> por otra parte es importante que el elemento del esquema que nos dice si el producto está en stock tiene que contener también el precio y la moneda igual que se muestra a continuación. Item 1 type: http://schema.org/offer property: availability: http://schema.org/InStock price: 50 € pricecurrency: EUR debería quedar más o menos así <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> {if ($product.allow_oosp || $product.quantity > 0)} <span class="{if $product.quantity <= 0}out-of-stock{else}available-now{/if}"> <link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{$product.available_later}{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 itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <span class="available-dif"> <link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {else} <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {/if} </span> Quiero agradecerte muchísimo!!.. Ahora insetando tu código en el product-list.tpl me sale esto en google webmaster tools: Item 1 type: http://schema.org/offer property: price: 3 825,00 $ pricecurrency: MXN Item 2 type: http://schema.org/offer property: availability: http://schema.org/InStock price: 3 825,00 $ pricecurrency: MXN Me salen como duplicados los datos , pero ya sale en price currency el valor de la moneda, antes salía el número 1.. Supongo que habría que esperar algo de tiempo a que google reconozca los cambios e indexe el contenido otra vez corrigiendo esos errores.. no? Abusando de tu amabilidad, quisiera saber si tienes idea de porque salen datos duplicados en los rich snippets? URL de página Elementos Elementos con errores Detectado por última vez Nombre (name) Precio (price) Marca (brand) Modelo (model) Errores /tienda/ 6 6 12/11/14 Mini Hexacoptero para vigilancia aerea Mini Hexacoptero para vigilancia aerea 3 825,00 $ – – Falta: price Naze32 Acro Naze32 Acro 820,00 $ – – Falta: price Mini Hexacoptero para vigilancia aerea Mini Hexacoptero para vigilancia aerea 3 825,00 $ – – Falta: price Naze32 Acro Naze32 Acro 820,00 $ – – Falta: price Mini Hexacoptero para vigilancia aerea Mini Hexacoptero para vigilancia aerea 3 825,00 $ – – Falta: price Naze32 Acro Naze32 Acro 820,00 $ – – Falta: price 1 De verdad estoy super agradecido con tu ayuda porque mi sitio de pronto bajó unas 4 páginas en su ranking debido al error precio.. No le he movido ninguna otra cosa adicional. Edited November 16, 2014 by badstraw (see edit history) Link to comment Share on other sites More sharing options...
Losada Posted November 17, 2014 Share Posted November 17, 2014 Yo he hecho los cambios que proponeis y la cosa continua igual al probar los datos. Así que ya no se que probar. Me siguen saliendo datos erroneos, la moneda no sale y que falta price. Vuelvo a dejar los originales y a ver que se puede hacer, porque con tanto cambio y tanta versión ya me he perdido. Link to comment Share on other sites More sharing options...
jjryeste Posted November 29, 2014 Share Posted November 29, 2014 Hola a todos, a mi por ejemplo en el campo de description: en google structure data, la informacion que me sale es la de, la descripcion breve, en lugar de la que tengo puesta en descripcion, eso es asi, o se puede intercambiar los datos.gracias Link to comment Share on other sites More sharing options...
xinito Posted December 9, 2014 Share Posted December 9, 2014 Buenas jjryeste, en tu caso debes modificar el archivo product.tpl de tu plantilla y buscar la línea (sobre la 177): <div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div> Hay que quitar el itemprop="description" que es la etiqueta que define el campo de descripción para los microdatos y ponerla en el sitio que corresponda a la descripción larga del producto. Más abajo en el mismo product.tpl, sobre la línea 476 aparece el div para ello, ahí debes insertar la etiqueta itemprop como ya viene señalado: <div itemprop="description" class="rte">{$product->description}</div> Link to comment Share on other sites More sharing options...
jjryeste Posted December 9, 2014 Share Posted December 9, 2014 Entiendo que la primera linea hay que ponerla asi <div id="short_description_content" itemprop="description" class="rte align_justify" >{$product->description_short}</div> y la segunda me aparece esto desde linea 465 a 475 tengo esto <!--end Data sheet --> {/if} {if $product->description} <!-- More info --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='More info'}</h3>{/if} {if isset($product) && $product->description} <!-- full description --> <div class="rte">{$product->description}</div> </section> <!--end More info --> donde pongo <div itemprop="description" class="rte">{$product->description}</div> gracuias por preocuparte, estoy con prestashop 1.6 Link to comment Share on other sites More sharing options...
xinito Posted December 10, 2014 Share Posted December 10, 2014 En esa primera línea debes quitar el itemprop="description" quedando así: <div id="short_description_content" class="rte align_justify" >{$product->description_short}</div> En la segunda parte, añades esa etiqueta al div de la descripción larga, tal y como lo has pegado, quedaría así: <!--end Data sheet --> {/if} {if $product->description} <!-- More info --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='More info'}</h3>{/if} {if isset($product) && $product->description} <!-- full description --> <div class="rte" itemprop="description">{$product->description}</div> </section> <!--end More info --> Lo único que se hace es cambiar la etiqueta itemprop="description" del div de la descripción corta, al div de la descripción larga. Un saludo. Link to comment Share on other sites More sharing options...
jjryeste Posted December 10, 2014 Share Posted December 10, 2014 ok lo pruebo y lo paso por google , gracias Link to comment Share on other sites More sharing options...
jjryeste Posted December 10, 2014 Share Posted December 10, 2014 supongo en el product-list.tpl no hay que hacer nada verda Link to comment Share on other sites More sharing options...
jjryeste Posted December 10, 2014 Share Posted December 10, 2014 Hola , ya lo puse, antes me aparecia esto data-object product (source:MICRODATA) attribute: image: http://www.punto-de-cruz.es/1172-large_default/segadores.jpg image: http://www.punto-de-cruz.es/1172-cart_default/segadores.jpg name: Segadores sku: condition: Nuevo description: Patron a punto de cruz con medidas 30x40 o 40x60 Ctm ,Tela Aida 14 ,50 colores de Hilos. Esquema a ,punto de cruz, en color, alta calidad.ENVIO GRATIS,Recibira un correo con la descarga de... y ahora no aparece descripcion sale esto en la misma seccion data-object metatags (source:METATAGS) attribute: viewport: width=device-width, minimum-scale=0.25, maximum-scale=1.6, initial-scale=1.0 apple-mobile-web-app-capable: yes og:title: Segadores - Punto de Cruz og:url: http://www.punto-de-cruz.es/segadores.html og:type: product og:site_name: Punto de Cruz og:description: PATRONES POR TEMAS og:image: http://www.punto-de-cruz.es/1172-large_default/segadores.jpg Link to comment Share on other sites More sharing options...
jjryeste Posted December 10, 2014 Share Posted December 10, 2014 perdon esto sale con el tpl cambiado data-object product (source:MICRODATA) attribute: image: http://www.punto-de-cruz.es/1172-large_default/segadores.jpg image: http://www.punto-de-cruz.es/1172-cart_default/segadores.jpg name: Segadores sku: condition: Nuevo Link to comment Share on other sites More sharing options...
jjryeste Posted December 10, 2014 Share Posted December 10, 2014 Creo qu elo qu esale es la meta descripcion veras ejemplo de uno en este http://www.punto-de-cruz.es/virgen-del-carmen-chile.html tengo puesto en breve descripcion Patron a punto de cruz con medidas 30x40 o 40x60 Ctm ,Tela Aida 14 ,40 colores de Hilos. Esquema a ,punto de cruz, en color, alta calidad.ENVIO GRATIS,Recibira un correo con la descarga de su patron en Formato PDF. en Descripcion Punto de cruz Virgen del Carmen Chile.Elaborado en alta calidad grafica, en color y diseño exclusivo.Listos para su impresion en A4 . Si desea este diseño de punto de cruz en otra medida , contacte con nosotros. y en optimizacion para motores de busquedas meta descripcion esto Patron a punto de cruz Virgen del Carmen Chile ( y esto es lo que sale) en descripcion Link to comment Share on other sites More sharing options...
xinito Posted December 11, 2014 Share Posted December 11, 2014 Creo que el problema viene por la plantilla, en mi caso es distinta y me funcionó el cambio que te he comentado, por eso no es molestia compartirlo. En tu plantilla (product.tpl) el campo de descripción está fuera del div que engloba la info del producto, deduzco que por eso no lo está cogiendo bien. Tienes que buscar en el product.tpl la línea: <div class="primary_block row" itemscope="" itemtype="http://schema.org/Product"> Puedes probar a quitar la parte itemscope="" itemtype="http://schema.org/Product" y pegarla justo en el div anterior, es decir, en el que va a englobar el campo de la descripción también, quedando así: <div id="center_column" class="center_column col-xs-12 col-sm-9" itemscope="" itemtype="http://schema.org/Product"> Suerte! Link to comment Share on other sites More sharing options...
jjryeste Posted December 11, 2014 Share Posted December 11, 2014 voy a probarlo amigo a ver que tal . gracias por preocuparte Link to comment Share on other sites More sharing options...
jjryeste Posted December 11, 2014 Share Posted December 11, 2014 ahora sale asi Datos estructurados extraídos rdfa-node property: title: Segadores - Punto de Cruz url: http://www.punto-de-cruz.es/segadores.html type: product site_name: Punto de Cruz description: Patron punto de cruz segadores image: http://www.punto-de-cruz.es/1172-large_default/segadores.jpg Item type: http://schema.org/product property: name: Segadores sku: condition: Nuevo description: Patron a punto de cruz con medidas 30x40 o 40x60 Ctm ,Tela Aida 14 ,50 colores de Hilos. Esquema a ,punto de cruz, en color, alta calidad.ENVIO GRATIS,Recibira un correo con la descarga de... aggregaterating: Item 1 Error: Page contains property "condition" which is not part of the schema. Link to comment Share on other sites More sharing options...
xinito Posted December 12, 2014 Share Posted December 12, 2014 Creo que siguen estando mal puestas las etiquetas. Si puedes, pega aqui el contenido completo de tu product.tpl tal como lo tienes ahora mismo, le intento echar el ojo y te digo. Link to comment Share on other sites More sharing options...
jjryeste Posted December 13, 2014 Share Posted December 13, 2014 OK {** 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*}{include file="$tpl_dir./errors.tpl"}{if $errors|@count == 0} {if !isset($priceDisplayPrecision)} {assign var='priceDisplayPrecision' value=2} {/if} {if !$priceDisplay || $priceDisplay == 2} {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, $priceDisplayPrecision)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)} {elseif $priceDisplay == 1} {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, $priceDisplayPrecision)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)} {/if} <div class="primary_block row" itemscope itemtype="http://schema.org/Product"> {if !$content_only} <div class="container"> <div class="top-hr"></div> </div> {/if} {if isset($adminActionDisplay) && $adminActionDisplay} <div id="admin-action"> <p>{l s='This product is not visible to your customers.'} <input type="hidden" id="admin-action-product-id" value="{$product->id}" /> <input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" /> <input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" /> </p> <p id="admin-action-result"></p> </div> {/if} {if isset($confirmation) && $confirmation} <p class="confirmation"> {$confirmation} </p> {/if} <!-- left infos--> <div class="pb-left-column col-xs-12 col-sm-4 col-md-5"> <!-- product img--> <div id="image-block" class="clearfix"> {if $product->new} <span class="new-box"> <span class="new-label">{l s='New'}</span> </span> {/if} {if $product->on_sale} <span class="sale-box no-print"> <span class="sale-label">{l s='Sale!'}</span> </span> {elseif $product->specificPrice && $product->specificPrice.reduction && $productPriceWithoutReduction > $productPrice} <span class="discount">{l s='Reduced price!'}</span> {/if} {if $have_image} <span id="view_full_size"> {if $jqZoomEnabled && $have_image && !$content_only} <a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}" itemprop="url"> <img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/> </a> {else} <img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link no-print">{l s='View larger'}</span> {/if} {/if} </span> {else} <span id="view_full_size"> <img itemprop="image" src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link"> {l s='View larger'} </span> {/if} </span> {/if} </div> <!-- end image-block --> {if isset($images) && count($images) > 0} <!-- thumbnails --> <div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}"> {if isset($images) && count($images) > 4} <span class="view_scroll_spacer"> <a id="view_scroll_left" class="" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"> {l s='Previous'} </a> </span> {/if} <div id="thumbs_list"> <ul id="thumbs_list_frame"> {if isset($images)} {foreach from=$images item=image name=thumbnails} {assign var=imageIds value="`$product->id`-`$image.id_image`"} {if !empty($image.legend)} {assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'} {else} {assign var=imageTitle value=$product->name|escape:'html':'UTF-8'} {/if} <li id="thumbnail_{$image.id_image}"{if $smarty.foreach.thumbnails.last} class="last"{/if}> <a {if $jqZoomEnabled && $have_image && !$content_only} href="javascript:void(0);" rel="{literal}[spam-filter]/literal}gallery: 'gal1', smallimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'large_default')|escape:'html':'UTF-8'}',largeimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}'{literal[spam-filter]{/literal}" {else} href="{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}" data-fancybox-group="other-views" class="fancybox{if $image.id_image == $cover.id_image} shown{/if}" {/if} title="{$imageTitle}"> <img class="img-responsive" id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'cart_default')|escape:'html':'UTF-8'}" alt="{$imageTitle}" title="{$imageTitle}" height="{$cartSize.height}" width="{$cartSize.width}" itemprop="image" /> </a> </li> {/foreach} {/if} </ul> </div> <!-- end thumbs_list --> {if isset($images) && count($images) > 4} <a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"> {l s='Next'} </a> {/if} </div> <!-- end views-block --> <!-- end thumbnails --> {/if} {if isset($images) && count($images) > 1} <p class="resetimg clear no-print"> <span id="wrapResetImages" style="display: none;"> <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" name="resetImages"> <i class="icon-repeat"></i> {l s='Display all pictures'} </a> </span> </p> {/if} </div> <!-- end pb-left-column --> <!-- end left infos--> <!-- center infos --> <div class="pb-center-column col-xs-12 col-sm-4"> {if $product->online_only} <p class="online_only">{l s='Online only'}</p> {/if} <h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1> <p id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}> <label>{l s='Model'} </label> <span class="editable" itemprop="sku">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span> </p> {capture name=condition} {if $product->condition == 'new'}{l s='New'} {elseif $product->condition == 'used'}{l s='Used'} {elseif $product->condition == 'refurbished'}{l s='Refurbished'} {/if} {/capture} <p id="product_condition"{if !$product->condition} style="display: none;"{/if}> <label>{l s='Condition'} </label> <span class="editable" itemprop="condition">{$smarty.capture.condition}</span> </p> {if $product->description_short || $packItems|@count > 0} <div id="short_description_block"> {if $product->description_short} <div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div> {/if} {if $product->description} <p class="buttons_bottom_block"> <a href="javascript:{ldelim}{rdelim}" class="button"> {l s='More details'} </a> </p> {/if} <!--{if $packItems|@count > 0} <div class="short_description_pack"> <h3>{l s='Pack content'}</h3> {foreach from=$packItems item=packItem} <div class="pack_content"> {$packItem.pack_quantity} x <a href="{$link->getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)|escape:'html':'UTF-8'}">{$packItem.name|escape:'html':'UTF-8'}</a> <p>{$packItem.description_short}</p> </div> {/foreach} </div> {/if}--> </div> <!-- end short_description_block --> {/if} {if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)} <!-- number of item in stock --> <p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}> <span id="quantityAvailable">{$product->quantity|intval}</span> <span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span> <span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span> </p> {/if} {if $PS_STOCK_MANAGEMENT} <!-- availability --> <p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {*<span id="availability_label">{l s='Availability:'}</span>*} <span id="availability_value"{if $product->quantity <= 0} class="warning_inline"{/if}>{if $product->quantity <= 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}</span> </p> <p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p> {/if} <p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}> <span id="availability_date_label">{l s='Availability date:'}</span> <span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span> </p> <!-- Out of stock hook --> <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}> {$HOOK_PRODUCT_OOS} </div> {if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if} {if !$content_only} <!-- usefull links--> <ul id="usefull_link_block" class="clearfix no-print"> {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if} {*<li class="print"> <a href="javascript:print();"> {l s='Print'} </a> </li>*} {if $have_image && !$jqZoomEnabled}{/if} </ul> {/if} </div> <!-- end center infos--> <!-- pb-right-column--> <div class="pb-right-column col-xs-12 col-sm-4 col-md-3"> {if ($product->show_price && !isset($restricted_country_mode)) || isset($groups) || $product->reference || (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)} <!-- add to cart form--> <form id="buy_block"{if $PS_CATALOG_MODE && !isset($groups) && $product->quantity > 0} class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post"> <!-- hidden datas --> <p class="hidden"> <input type="hidden" name="token" value="{$static_token}" /> <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="id_product_attribute" id="idCombination" value="" /> </p> <div class="box-info-product"> <div class="content_prices clearfix"> {if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <!-- 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}" /> {/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} <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 --> <p id="reduction_amount" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'amount' || $product->specificPrice.reduction|floatval ==0} style="display:none"{/if}> <span id="reduction_amount_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'amount' && $product->specificPrice.reduction|intval !=0} -{convertPrice price=$productPriceWithoutReduction-$productPrice|floatval} {/if} </span> </p> {if $packItems|@count && $productPrice < $product->getNoPackPrice()} <p class="pack_price">{l s='Instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p> {/if} {if $product->ecotax != 0} <p class="price-ecotax">{l s='Include'} <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span> {l s='For green tax'} {if $product->specificPrice && $product->specificPrice.reduction} <br />{l s='(not impacted by the discount)'} {/if} </p> {/if} {if !empty($product->unity) && $product->unit_price_ratio > 0.000000} {math equation="pprice / punit_price" pprice=$productPrice punit_price=$product->unit_price_ratio assign=unit_price} <p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'html':'UTF-8'}</p> {/if} {/if} {*close if for show price*} <div class="clear"></div> </div> <!-- end content_prices --> <div class="product_attributes clearfix"> <!-- quantity wanted --> {if !$PS_CATALOG_MODE} <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> <label>{l s='Quantity:'}</label> <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" /> <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down"> <span><i class="icon-minus"></i></span> </a> <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up "> <span><i class="icon-plus"></i></span> </a> <span class="clearfix"></span> </p> {/if} <!-- minimal quantity wanted --> <p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {l s='This product is not sold individually. You must select at least'} <b id="minimal_quantity_label">{$product->minimal_quantity}</b> {l s='quantity for this product.'} </p> {if isset($groups)} <!-- attributes --> <div id="attributes"> <div class="clearfix"></div> {foreach from=$groups key=id_attribute_group item=group} {if $group.attributes|@count} <fieldset class="attribute_fieldset"> <label class="attribute_label" {if $group.group_type != 'color' && $group.group_type != 'radio'}for="group_{$id_attribute_group|intval}"{/if}>{$group.name|escape:'html':'UTF-8'} : </label> {assign var="groupName" value="group_$id_attribute_group"} <div class="attribute_list"> {if ($group.group_type == 'select')} <select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print"> {foreach from=$group.attributes key=id_attribute item=group_attribute} <option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option> {/foreach} </select> {elseif ($group.group_type == 'color')} <ul id="color_to_pick_list" class="clearfix"> {assign var="default_colorpicker" value=""} {foreach from=$group.attributes key=id_attribute item=group_attribute} <li{if $group.default == $id_attribute} class="selected"{/if}> <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" id="color_{$id_attribute|intval}" name="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}" style="background: {$colors.$id_attribute.value|escape:'html':'UTF-8'};" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}"> {if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')} <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" /> {/if} </a> </li> {if ($group.default == $id_attribute)} {$default_colorpicker = $id_attribute} {/if} {/foreach} </ul> <input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" /> {elseif ($group.group_type == 'radio')} <ul> {foreach from=$group.attributes key=id_attribute item=group_attribute} <li> <input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} /> <span>{$group_attribute|escape:'html':'UTF-8'}</span> </li> {/foreach} </ul> {/if} </div> <!-- end attribute_list --> </fieldset> {/if} {/foreach} </div> <!-- end attributes --> {/if} </div> <!-- end product_attributes --> <div class="box-cart-bottom"> <div{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || (isset($restricted_country_mode) && $restricted_country_mode) || $PS_CATALOG_MODE} class="unvisible"{/if}> <p id="add_to_cart" class="buttons_bottom_block no-print"> <button type="submit" name="Submit" class="exclusive"> <span>{l s='Comprar'}</span> </button> </p> </div> {if isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS}{$HOOK_PRODUCT_ACTIONS}{/if}<strong></strong> </div> <!-- end box-cart-bottom --> </div> <!-- end box-info-product --> </form> {/if} </div> <!-- end pb-right-column--> </div> <!-- end primary_block --> {if !$content_only}{if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <!-- quantity discount --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Volume discounts'}</h3> <div id="quantityDiscount"> <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 isset($features) && $features} <!-- Data sheet --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Data sheet'}</h3> <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} {if $product->description} <!-- More info --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='More info'}</h3>{/if} {if isset($product) && $product->description} <!-- full description --> <div class="rte">{$product->description}</div> </section> <!--end More info --> {/if} <!--HOOK_PRODUCT_TAB --> <section class="page-product-box"> {$HOOK_PRODUCT_TAB} {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if} </section> <!--end HOOK_PRODUCT_TAB --> {if isset($accessories) && $accessories} <!--Accessories --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Accessories'}</h3> <div class="block products_block accessories-block clearfix"> <div class="block_content"> <ul id="bxslider" class="bxslider clearfix"> {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)} <li class="item product-box 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_desc"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image"> <img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" width="{$homeSize.width}" height="{$homeSize.height}"/> </a> <div class="block_description"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description"> {$accessory.description_short|strip_tags|truncate:25:'...'} </a> </div> </div> <div class="s_title_block"> <h5 class="product-name"> <a href="{$accessoryLink|escape:'html':'UTF-8'}"> {$accessory.name|truncate:20:'...':true|escape:'html':'UTF-8'} </a> </h5> {if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <span class="price"> {if $priceDisplay != 1} {displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc} {/if} </span> {/if} </div> <div class="clearfix" style="margin-top:5px"> {if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)} <div class="no-print"> <a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&id_product={$accessory.id_product|intval}&token={$static_token}&add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Comprar'}"> <span>{l s='Comprar'}</span> </a> </div> {/if} </div> </li> {/if} {/foreach} </ul> </div> </div> </section> <!--end Accessories --> {/if} {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/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 class="page-product-box"> <h3 class="page-product-heading">{l s='Download'}</h3> {foreach from=$attachments item=attachment name=attachements} {if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if} <div class="col-lg-4"> <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 class="page-product-box"> <h3 class="page-product-heading">{l s='Product customization'}</h3> <!-- 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} {if isset($packItems) && $packItems|@count > 0} <section id="blockpack"> <h3 class="page-product-heading">{l s='Pack content'}</h3> {include file="$tpl_dir./product-list.tpl" products=$packItems} </section> {/if} {/if}{strip}{strip}{if isset($smarty.get.ad) && $smarty.get.ad}{addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL}{/if}{if isset($smarty.get.adtoken) && $smarty.get.adtoken}{addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL}{/if}{addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval}{addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'}{addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'}{addJsDef attribute_anchor_separator=$attribute_anchor_separator|addslashes}{addJsDef attributesCombinations=$attributesCombinations}{addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}{addJsDef currencyRate=$currencyRate|floatval}{addJsDef currencyFormat=$currencyFormat|intval}{addJsDef currencyBlank=$currencyBlank|intval}{addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}{if isset($combinations) && $combinations} {addJsDef combinations=$combinations} {addJsDef combinationsFromController=$combinations} {addJsDef displayDiscountPrice=$display_discount_price} {addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL}{/if}{if isset($combinationImages) && $combinationImages} {addJsDef combinationImages=$combinationImages}{/if}{addJsDef customizationFields=$customizationFields}{addJsDef default_eco_tax=$product->ecotax|floatval}{addJsDef displayPrice=$priceDisplay|intval}{addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval}{addJsDef group_reduction=$group_reduction}{if isset($cover.id_image_only)} {addJsDef idDefaultImage=$cover.id_image_only|intval}{else} {addJsDef idDefaultImage=0}{/if}{addJsDef img_ps_dir=$img_ps_dir}{addJsDef img_prod_dir=$img_prod_dir}{addJsDef id_product=$product->id|intval}{addJsDef jqZoomEnabled=$jqZoomEnabled|boolval}{addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval}{addJsDef minimalQuantity=$product->minimal_quantity|intval}{addJsDef noTaxForThisProduct=$no_tax|boolval}{addJsDef oosHookJsCodeFunctions=Array()}{addJsDef productHasAttributes=isset($groups)|boolval}{addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval}{addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval}{addJsDef productReference=$product->reference|escape:'html':'UTF-8'}{addJsDef productAvailableForOrder=$product->available_for_order|boolval}{addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval}{addJsDef productPrice=$productPrice|floatval}{addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval}{addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval}{addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE}{if $product->specificPrice && $product->specificPrice|@count} {addJsDef product_specific_price=$product->specificPrice}{else} {addJsDef product_specific_price=array()}{/if}{if $display_qties == 1 && $product->quantity} {addJsDef quantityAvailable=$product->quantity}{else} {addJsDef quantityAvailable=0}{/if}{addJsDef quantitiesDisplayAllowed=$display_qties|boolval}{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'} {addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval}{else} {addJsDef reduction_percent=0}{/if}{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'} {addJsDef reduction_price=$product->specificPrice.reduction|floatval}{else} {addJsDef reduction_price=0}{/if}{if $product->specificPrice && $product->specificPrice.price} {addJsDef specific_price=$product->specificPrice.price|floatval}{else} {addJsDef specific_price=0}{/if}{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}{addJsDef stock_management=$stock_management|intval}{addJsDef taxRate=$tax_rate|floatval}{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}{/strip}{/if} Link to comment Share on other sites More sharing options...
xinito Posted December 14, 2014 Share Posted December 14, 2014 Te pego tal cual el archivo ya con las modificaciones: {* * 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.or...ses/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.or...ses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {include file="$tpl_dir./errors.tpl"} {if $errors|@count == 0} {if !isset($priceDisplayPrecision)} {assign var='priceDisplayPrecision' value=2} {/if} {if !$priceDisplay || $priceDisplay == 2} {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, $priceDisplayPrecision)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)} {elseif $priceDisplay == 1} {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, $priceDisplayPrecision)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)} {/if} <div class="primary_block row" itemscope itemtype="http://schema.org/Product"> {if !$content_only} <div class="container"> <div class="top-hr"></div> </div> {/if} {if isset($adminActionDisplay) && $adminActionDisplay} <div id="admin-action"> <p>{l s='This product is not visible to your customers.'} <input type="hidden" id="admin-action-product-id" value="{$product->id}" /> <input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" /> <input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" /> </p> <p id="admin-action-result"></p> </div> {/if} {if isset($confirmation) && $confirmation} <p class="confirmation"> {$confirmation} </p> {/if} <!-- left infos--> <div class="pb-left-column col-xs-12 col-sm-4 col-md-5"> <!-- product img--> <div id="image-block" class="clearfix"> {if $product->new} <span class="new-box"> <span class="new-label">{l s='New'}</span> </span> {/if} {if $product->on_sale} <span class="sale-box no-print"> <span class="sale-label">{l s='Sale!'}</span> </span> {elseif $product->specificPrice && $product->specificPrice.reduction && $productPriceWithoutReduction > $productPrice} <span class="discount">{l s='Reduced price!'}</span> {/if} {if $have_image} <span id="view_full_size"> {if $jqZoomEnabled && $have_image && !$content_only} <a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}" itemprop="url"> <img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/> </a> {else} <img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link no-print">{l s='View larger'}</span> {/if} {/if} </span> {else} <span id="view_full_size"> <img itemprop="image" src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link"> {l s='View larger'} </span> {/if} </span> {/if} </div> <!-- end image-block --> {if isset($images) && count($images) > 0} <!-- thumbnails --> <div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}"> {if isset($images) && count($images) > 4} <span class="view_scroll_spacer"> <a id="view_scroll_left" class="" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"> {l s='Previous'} </a> </span> {/if} <div id="thumbs_list"> <ul id="thumbs_list_frame"> {if isset($images)} {foreach from=$images item=image name=thumbnails} {assign var=imageIds value="`$product->id`-`$image.id_image`"} {if !empty($image.legend)} {assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'} {else} {assign var=imageTitle value=$product->name|escape:'html':'UTF-8'} {/if} <li id="thumbnail_{$image.id_image}"{if $smarty.foreach.thumbnails.last} class="last"{/if}> <a {if $jqZoomEnabled && $have_image && !$content_only} href="javascript:void(0);" rel="{literal}[spam-filter]/literal}gallery: 'gal1', smallimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'large_default')|escape:'html':'UTF-8'}',largeimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}'{literal[spam-filter]{/literal}" {else} href="{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}" data-fancybox-group="other-views" class="fancybox{if $image.id_image == $cover.id_image} shown{/if}" {/if} title="{$imageTitle}"> <img class="img-responsive" id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'cart_default')|escape:'html':'UTF-8'}" alt="{$imageTitle}" title="{$imageTitle}" height="{$cartSize.height}" width="{$cartSize.width}" itemprop="image" /> </a> </li> {/foreach} {/if} </ul> </div> <!-- end thumbs_list --> {if isset($images) && count($images) > 4} <a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"> {l s='Next'} </a> {/if} </div> <!-- end views-block --> <!-- end thumbnails --> {/if} {if isset($images) && count($images) > 1} <p class="resetimg clear no-print"> <span id="wrapResetImages" style="display: none;"> <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" name="resetImages"> <i class="icon-repeat"></i> {l s='Display all pictures'} </a> </span> </p> {/if} </div> <!-- end pb-left-column --> <!-- end left infos--> <!-- center infos --> <div class="pb-center-column col-xs-12 col-sm-4"> {if $product->online_only} <p class="online_only">{l s='Online only'}</p> {/if} <h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1> <p id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}> <label>{l s='Model'} </label> <span class="editable" itemprop="sku">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span> </p> {if $product->condition} <p id="product_condition"> <label>{l s='Condition'} </label> {if $product->condition == 'new'} <link itemprop="itemCondition" href="http://schema.org/NewCondition"/> <span class="editable">{l s='New'}</span> {elseif $product->condition == 'used'} <link itemprop="itemCondition" href="http://schema.org/UsedCondition"/> <span class="editable">{l s='Used'}</span> {elseif $product->condition == 'refurbished'} <link itemprop="itemCondition" href="http://schema.org/RefurbishedCondition"/> <span class="editable">{l s='Refurbished'}</span> {/if} </p> {/if} {if $product->description_short || $packItems|@count > 0} <div id="short_description_block"> {if $product->description_short} <div id="short_description_content" class="rte align_justify">{$product->description_short}</div> {/if} {if $product->description} <!-- More info --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='More info'}</h3>{/if} {if isset($product) && $product->description} <!-- full description --> <div itemprop="description" class="rte">{$product->description}</div> </section> <!--end More info --> {/if} <!--{if $packItems|@count > 0} <div class="short_description_pack"> <h3>{l s='Pack content'}</h3> {foreach from=$packItems item=packItem} <div class="pack_content"> {$packItem.pack_quantity} x <a href="{$link->getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)|escape:'html':'UTF-8'}">{$packItem.name|escape:'html':'UTF-8'}</a> <p>{$packItem.description_short}</p> </div> {/foreach} </div> {/if}--> </div> <!-- end short_description_block --> {/if} {if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)} <!-- number of item in stock --> <p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}> <span id="quantityAvailable">{$product->quantity|intval}</span> <span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span> <span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span> </p> {/if} {if $PS_STOCK_MANAGEMENT} <!-- availability --> <p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {*<span id="availability_label">{l s='Availability:'}</span>*} <span id="availability_value"{if $product->quantity <= 0} class="warning_inline"{/if}>{if $product->quantity <= 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}</span> </p> <p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p> {/if} <p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}> <span id="availability_date_label">{l s='Availability date:'}</span> <span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span> </p> <!-- Out of stock hook --> <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}> {$HOOK_PRODUCT_OOS} </div> {if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if} {if !$content_only} <!-- usefull links--> <ul id="usefull_link_block" class="clearfix no-print"> {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if} {*<li class="print"> <a href="javascript:print();"> {l s='Print'} </a> </li>*} {if $have_image && !$jqZoomEnabled}{/if} </ul> {/if} </div> <!-- end center infos--> <!-- pb-right-column--> <div class="pb-right-column col-xs-12 col-sm-4 col-md-3"> {if ($product->show_price && !isset($restricted_country_mode)) || isset($groups) || $product->reference || (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)} <!-- add to cart form--> <form id="buy_block"{if $PS_CATALOG_MODE && !isset($groups) && $product->quantity > 0} class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post"> <!-- hidden datas --> <p class="hidden"> <input type="hidden" name="token" value="{$static_token}" /> <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="id_product_attribute" id="idCombination" value="" /> </p> <div class="box-info-product"> <div class="content_prices clearfix"> {if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <!-- 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}" /> {/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} <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 --> <p id="reduction_amount" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'amount' || $product->specificPrice.reduction|floatval ==0} style="display:none"{/if}> <span id="reduction_amount_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'amount' && $product->specificPrice.reduction|intval !=0} -{convertPrice price=$productPriceWithoutReduction-$productPrice|floatval} {/if} </span> </p> {if $packItems|@count && $productPrice < $product->getNoPackPrice()} <p class="pack_price">{l s='Instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p> {/if} {if $product->ecotax != 0} <p class="price-ecotax">{l s='Include'} <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span> {l s='For green tax'} {if $product->specificPrice && $product->specificPrice.reduction} <br />{l s='(not impacted by the discount)'} {/if} </p> {/if} {if !empty($product->unity) && $product->unit_price_ratio > 0.000000} {math equation="pprice / punit_price" pprice=$productPrice punit_price=$product->unit_price_ratio assign=unit_price} <p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'html':'UTF-8'}</p> {/if} {/if} {*close if for show price*} <div class="clear"></div> </div> <!-- end content_prices --> <div class="product_attributes clearfix"> <!-- quantity wanted --> {if !$PS_CATALOG_MODE} <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> <label>{l s='Quantity:'}</label> <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" /> <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down"> <span><i class="icon-minus"></i></span> </a> <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up "> <span><i class="icon-plus"></i></span> </a> <span class="clearfix"></span> </p> {/if} <!-- minimal quantity wanted --> <p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {l s='This product is not sold individually. You must select at least'} <b id="minimal_quantity_label">{$product->minimal_quantity}</b> {l s='quantity for this product.'} </p> {if isset($groups)} <!-- attributes --> <div id="attributes"> <div class="clearfix"></div> {foreach from=$groups key=id_attribute_group item=group} {if $group.attributes|@count} <fieldset class="attribute_fieldset"> <label class="attribute_label" {if $group.group_type != 'color' && $group.group_type != 'radio'}for="group_{$id_attribute_group|intval}"{/if}>{$group.name|escape:'html':'UTF-8'} : </label> {assign var="groupName" value="group_$id_attribute_group"} <div class="attribute_list"> {if ($group.group_type == 'select')} <select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print"> {foreach from=$group.attributes key=id_attribute item=group_attribute} <option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option> {/foreach} </select> {elseif ($group.group_type == 'color')} <ul id="color_to_pick_list" class="clearfix"> {assign var="default_colorpicker" value=""} {foreach from=$group.attributes key=id_attribute item=group_attribute} <li{if $group.default == $id_attribute} class="selected"{/if}> <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" id="color_{$id_attribute|intval}" name="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}" style="background: {$colors.$id_attribute.value|escape:'html':'UTF-8'};" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}"> {if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')} <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" /> {/if} </a> </li> {if ($group.default == $id_attribute)} {$default_colorpicker = $id_attribute} {/if} {/foreach} </ul> <input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" /> {elseif ($group.group_type == 'radio')} <ul> {foreach from=$group.attributes key=id_attribute item=group_attribute} <li> <input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} /> <span>{$group_attribute|escape:'html':'UTF-8'}</span> </li> {/foreach} </ul> {/if} </div> <!-- end attribute_list --> </fieldset> {/if} {/foreach} </div> <!-- end attributes --> {/if} </div> <!-- end product_attributes --> <div class="box-cart-bottom"> <div{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || (isset($restricted_country_mode) && $restricted_country_mode) || $PS_CATALOG_MODE} class="unvisible"{/if}> <p id="add_to_cart" class="buttons_bottom_block no-print"> <button type="submit" name="Submit" class="exclusive"> <span>{l s='Comprar'}</span> </button> </p> </div> {if isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS}{$HOOK_PRODUCT_ACTIONS}{/if}<strong></strong> </div> <!-- end box-cart-bottom --> </div> <!-- end box-info-product --> </form> {/if} </div> <!-- end pb-right-column--> </div> <!-- end primary_block --> {if !$content_only} {if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <!-- quantity discount --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Volume discounts'}</h3> <div id="quantityDiscount"> <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 isset($features) && $features} <!-- Data sheet --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Data sheet'}</h3> <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 --> <section class="page-product-box"> {$HOOK_PRODUCT_TAB} {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if} </section> <!--end HOOK_PRODUCT_TAB --> {if isset($accessories) && $accessories} <!--Accessories --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Accessories'}</h3> <div class="block products_block accessories-block clearfix"> <div class="block_content"> <ul id="bxslider" class="bxslider clearfix"> {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)} <li class="item product-box 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_desc"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image"> <img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" width="{$homeSize.width}" height="{$homeSize.height}"/> </a> <div class="block_description"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description"> {$accessory.description_short|strip_tags|truncate:25:'...'} </a> </div> </div> <div class="s_title_block"> <h5 class="product-name"> <a href="{$accessoryLink|escape:'html':'UTF-8'}"> {$accessory.name|truncate:20:'...':true|escape:'html':'UTF-8'} </a> </h5> {if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <span class="price"> {if $priceDisplay != 1} {displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc} {/if} </span> {/if} </div> <div class="clearfix" style="margin-top:5px"> {if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)} <div class="no-print"> <a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&id_product={$accessory.id_product|intval}&token={$static_token}&add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Comprar'}"> <span>{l s='Comprar'}</span> </a> </div> {/if} </div> </li> {/if} {/foreach} </ul> </div> </div> </section> <!--end Accessories --> {/if} {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/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 class="page-product-box"> <h3 class="page-product-heading">{l s='Download'}</h3> {foreach from=$attachments item=attachment name=attachements} {if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if} <div class="col-lg-4"> <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 class="page-product-box"> <h3 class="page-product-heading">{l s='Product customization'}</h3> <!-- 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} {if isset($packItems) && $packItems|@count > 0} <section id="blockpack"> <h3 class="page-product-heading">{l s='Pack content'}</h3> {include file="$tpl_dir./product-list.tpl" products=$packItems} </section> {/if} {/if} {strip} {strip} {if isset($smarty.get.ad) && $smarty.get.ad} {addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL} {/if} {if isset($smarty.get.adtoken) && $smarty.get.adtoken} {addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL} {/if} {addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval} {addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'} {addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'} {addJsDef attribute_anchor_separator=$attribute_anchor_separator|addslashes} {addJsDef attributesCombinations=$attributesCombinations} {addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"} {addJsDef currencyRate=$currencyRate|floatval} {addJsDef currencyFormat=$currencyFormat|intval} {addJsDef currencyBlank=$currencyBlank|intval} {addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'} {if isset($combinations) && $combinations} {addJsDef combinations=$combinations} {addJsDef combinationsFromController=$combinations} {addJsDef displayDiscountPrice=$display_discount_price} {addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL} {/if} {if isset($combinationImages) && $combinationImages} {addJsDef combinationImages=$combinationImages} {/if} {addJsDef customizationFields=$customizationFields} {addJsDef default_eco_tax=$product->ecotax|floatval} {addJsDef displayPrice=$priceDisplay|intval} {addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval} {addJsDef group_reduction=$group_reduction} {if isset($cover.id_image_only)} {addJsDef idDefaultImage=$cover.id_image_only|intval} {else} {addJsDef idDefaultImage=0} {/if} {addJsDef img_ps_dir=$img_ps_dir} {addJsDef img_prod_dir=$img_prod_dir} {addJsDef id_product=$product->id|intval} {addJsDef jqZoomEnabled=$jqZoomEnabled|boolval} {addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval} {addJsDef minimalQuantity=$product->minimal_quantity|intval} {addJsDef noTaxForThisProduct=$no_tax|boolval} {addJsDef oosHookJsCodeFunctions=Array()} {addJsDef productHasAttributes=isset($groups)|boolval} {addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval} {addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval} {addJsDef productReference=$product->reference|escape:'html':'UTF-8'} {addJsDef productAvailableForOrder=$product->available_for_order|boolval} {addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval} {addJsDef productPrice=$productPrice|floatval} {addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval} {addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval} {addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE} {if $product->specificPrice && $product->specificPrice|@count} {addJsDef product_specific_price=$product->specificPrice} {else} {addJsDef product_specific_price=array()} {/if} {if $display_qties == 1 && $product->quantity} {addJsDef quantityAvailable=$product->quantity} {else} {addJsDef quantityAvailable=0} {/if} {addJsDef quantitiesDisplayAllowed=$display_qties|boolval} {if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'} {addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval} {else} {addJsDef reduction_percent=0} {/if} {if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'} {addJsDef reduction_price=$product->specificPrice.reduction|floatval} {else} {addJsDef reduction_price=0} {/if} {if $product->specificPrice && $product->specificPrice.price} {addJsDef specific_price=$product->specificPrice.price|floatval} {else} {addJsDef specific_price=0} {/if} {addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *} {addJsDef stock_management=$stock_management|intval} {addJsDef taxRate=$tax_rate|floatval} {addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL} {addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL} {addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL} {addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL} {addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL} {/strip} {/if} Lo que he hecho es subir y meter la descripción larga dentro del div que define al producto, justo después de la descripción corta lo cual va a hacer que se muestre de esa manera en la página del producto, pero al menos probamos si así la herramieta de Google si reconoce bien el campo descripción. Además le faltaba la modificación que hablábamos en post anteriores. También he modificado la parte de "condition" a la manera correcta según el marcado de productos. Espero que pueda servirte. Saludos! Link to comment Share on other sites More sharing options...
jjryeste Posted December 14, 2014 Share Posted December 14, 2014 Grraciassssssss, lo pruebo y te digo Link to comment Share on other sites More sharing options...
jjryeste Posted December 14, 2014 Share Posted December 14, 2014 Acabo de probalo uy esta correctisimo incluso ha desaparecido un error que ponia antes Error: Page contains property "condition" which is not part of the schema. haora , o en estos dias lo comporbare con site maps aver que dato screa y s i no cambi ala estructura de l apagina en coasas que yo habia quitado, muchisimas gracias. Xinito, tendre el post unos dias abierto , par aterminar de comporbar , muy agradecido , no sabes cuanto Link to comment Share on other sites More sharing options...
xinito Posted December 14, 2014 Share Posted December 14, 2014 Nada jjryeste, espero que funcione correctamente y vaya bien la cosa. Un saludo! Link to comment Share on other sites More sharing options...
jjryeste Posted December 15, 2014 Share Posted December 15, 2014 Hola, estar esta, perfecto, solo que creo se ha descuadrado el campo descripcion te envio enlaces con imagenes antes y despues http://www.punto-de-cruz.es/antes.jpg http://www.punto-de-cruz.es/ahora.jpg echale un vistazo , buen dia Link to comment Share on other sites More sharing options...
jjryeste Posted December 15, 2014 Share Posted December 15, 2014 que part del css, en global o en product.csss, debria tocar para que aparecier adescripcion debajo de l aimagen miro con firebug y no doy con ello Link to comment Share on other sites More sharing options...
xinito Posted December 16, 2014 Share Posted December 16, 2014 El bloque de código que muestra la descripción en el product.tpl es: {if $product->description} <!-- More info --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='More info'}</h3>{/if} {if isset($product) && $product->description} <!-- full description --> <div itemprop="description" class="rte">{$product->description}</div> </section> <!--end More info --> {/if} Por la estructura de tu plantilla, este bloque descripción debe estar dentro del DIV que engloba a la info del producto en el marcado de datos. Por eso, en el cambio que te he propuesto, el bloque se ha subido de sitio y aparece ahí. Prueba a cambiar esa porción de código de tu product.tpl, ponla justo antes de donde acaba el DIV (primary_block) sobre la línea 404, dejándolo entonces así: </div> <!-- end pb-right-column--> {if $product->description} <!-- More info --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='More info'}</h3>{/if} {if isset($product) && $product->description} <!-- full description --> <div itemprop="description" class="rte">{$product->description}</div> </section> <!--end More info --> {/if} </div> <!-- end primary_block --> No sé si se visualizará correctamente, esto ya es una cuestión del diseño y cómo estructures la plantilla. También podrías probar a ponerlo debajo del bloque izquierdo de las imágenes, justo antes del </div> <!-- end pb-left-column -->. saludos. Link to comment Share on other sites More sharing options...
jjryeste Posted December 16, 2014 Share Posted December 16, 2014 Hola amigo Xinito, la primer aopcion m edesaparece la imagen asi que no se como debe quedar, en la segunda con la descripcion debajo de la imagen, me gusta mucho, en l a1 opcon donde dices que quedaria, muchisimas gracias Link to comment Share on other sites More sharing options...
Losada Posted January 27, 2015 Share Posted January 27, 2015 Buenas a todos, retomo esto porque no he conseguido arreglar el problema que tengo... y creo que hay mas de uno que lo sigue teniendo. Una vez hecho todos los cambios que habeis propuesto y no tener exito.. Os pongo aquí el tipo de error que me da, no es en el producto en si, sino que me da error en todas las categorías o páginas que muestran una lista de productos. Esto es lo que me da al revisar los datos: Product 1 url: http://www.dismatacmataro.com/calzado/300-barbaric-coyote-coolmax-no-zipper.html image: http://www.dismatacmataro.com/315-home_default/barbaric-coyote-coolmax-no-zipper.jpg name: Barbaric coyote coolmax no zipper url: http://www.dismatacmataro.com/calzado/300-barbaric-coyote-coolmax-no-zipper.html description: barbaric coyote coolmax no zipper url: http://www.dismatacmataro.com/calzado/300-barbaric-coyote-coolmax-no-zipper.html offers [Offer]: price: 52,12 € priceCurrency: 0 offers [Offer]: price: 52,12 € priceCurrency: 0 offers [Offer]: availability: http://schema.org/InStock price: falta y es necesaria Product 2 url: http://www.dismatacmataro.com/calzado/296-barbaric-negra-thinsulate.html image: http://www.dismatacmataro.com/311-home_default/barbaric-negra-thinsulate.jpg name: BARBARIC Negra Thinsulate url: http://www.dismatacmataro.com/calzado/296-barbaric-negra-thinsulate.html description: BARBARIC Negra Thinsulate url: http://www.dismatacmataro.com/calzado/296-barbaric-negra-thinsulate.html offers [Offer]: price: 52,12 € priceCurrency: 0 offers [Offer]: price: 52,12 € priceCurrency: 0 offers [Offer]: availability: http://schema.org/InStock price: falta y es necesaria Esto sigue pero con todos los productos de la lista, pero he acortado para no alargar. Alguien sabe que puedo hacer para solucionarlo? 1 Link to comment Share on other sites More sharing options...
MarioCM Posted February 13, 2015 Share Posted February 13, 2015 lo del precio modificando la moneda se me solucionó. Pero a mi me sigue dando un error raro de:Error: Incomplete microdata with schema.org. Creo que está relacionado con los reviews, pero por más que lo repaso veo todo correcto. También me está ignorando el mpn (lo cambié por el sku), desde que he añadido el brand, ya no me lee el mpn, no sé por qué A ver si véis qu eme puede fallar que ya llevo dos días loco! http://www.google.com/webmasters/tools/richsnippets?q=http%3A%2F%2Fwww.comercialmoyano.com%2Fes%2F32-traje-de-novio-italiano-gris-marengo-1171-ottavio-nuccio-gala.html&hl=es el testing tool directamente me tira este fallo: "Se ha producido un error al validar tu marcado.Ignorar"https://developers.google.com/structured-data/testing-tool/?url=http://www.comercialmoyano.com/es/39-traje-de-novio-italiano-alpaca-azul-1178-ottavio-nuccio-gala.html así tengo en el product.tpl: <!-- center infos --> <div class="pb-center-column col-xs-12 col-sm-4"> {if $product->online_only} <p class="online_only">{l s='Online only'}</p> {/if} <h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1> <p> <span id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}> <label>{l s='Model'} </label> <span class="editable" itemprop="mpn">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span></span> <label class="editable" itemprop="brand">OTTAVIO NUCCIO GALA</label> </p> y esto en los comentarios: <div class="comment row" itemprop="review" itemscope itemtype="http://schema.org/Review"> <div class="comment_author col-sm-4"> <span>{l s='Grade' mod='productcomments'} </span> <div class="star_content clearfix" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> {section name="i" start=0 loop=5 step=1} {if $comment.grade le $smarty.section.i.index} <div class="star"></div> {else} <div class="star star_on"></div> {/if} {/section} <meta itemprop="worstRating" content = "0" /> <meta itemprop="ratingValue" content = "{$comment.grade|escape:'html':'UTF-8'}" /> <meta itemprop="bestRating" content = "5" /> </div> <div class="comment_author_infos"> <strong itemprop="author">{$comment.customer_name|escape:'html':'UTF-8'}</strong> <meta itemprop="datePublished" content="{$comment.date_add|escape:'html':'UTF-8'|substr:0:10}" /> <em>{dateFormat date=$comment.date_add|escape:'html':'UTF-8' full=0}</em> </div> </div> <!-- .comment_author --> <div class="comment_details col-sm-8" itemprop="review" itemscope itemtype="http://schema.org/Review"> <p class="title_block"> <strong itemprop="itemReviewed">{$comment.title}</strong> </p> <p itemprop="reviewBody">{$comment.content|escape:'html':'UTF-8'|nl2br}</p> <ul> {if $comment.total_advice > 0} <li> {l s='%1$d out of %2$d people found this review useful.' sprintf=[$comment.total_useful,$comment.total_advice] mod='productcomments'} </li> Link to comment Share on other sites More sharing options...
Lazarop Posted February 14, 2015 Share Posted February 14, 2015 (edited) El problema que está dando básicamente en algunas plantillas es que en las páginas de productos product-list.tpl se está dejando información básica para la validación del schema.org desde webmasterstools. Ocurre lo siguiente. En algunas plantillas el campo pricecurrency del esquema lo deja = 0 cuando tiene que ser = EUR (en el caso de euros) para arreglar esto en el product-list.tpl fijaros que tienen que quedar así todas las referencias a pricecurrency: <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> por otra parte es importante que el elemento del esquema que nos dice si el producto está en stock tiene que contener también el precio y la moneda igual que se muestra a continuación. Item 1 type: http://schema.org/offer property: availability: http://schema.org/InStock price: 50 € pricecurrency: EUR debería quedar más o menos así <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> {if ($product.allow_oosp || $product.quantity > 0)} <span class="{if $product.quantity <= 0}out-of-stock{else}available-now{/if}"> <link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{$product.available_later}{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 itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <span class="available-dif"> <link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {else} <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {/if} </span> Muchas gracias! Esta es la solución que elimina todos los errores de "falta Price" que daba webmaster tools. El único "problema" que tengo ahora es que antes salía un rectangulito verde pequeño en el que ponía "En Stock" y ahora aparece uno más grande en el que pone "En Stock (precio)". Me gustaría que quedara como antes, más pequeño y sin indicar ahí el precio, ya que está también justo encima y no me parece estético. Adjunto foto de cómo me queda ahora... gracias!!! Edited February 14, 2015 by Lazarop (see edit history) 1 Link to comment Share on other sites More sharing options...
ReactionCode Posted February 15, 2015 Share Posted February 15, 2015 Para los que aún tengáis dudas podéis echarle un vistazo a mi tutorial de rich snippets http://goo.gl/yy6toC aunque esté explicado para la plantilla de la 1.5 la esencia es la misma. Echarle un ojo también al rich snippets de los Breadcrumbs para que quede todo con el mismo tipo de código. No sé si me ha parecido entender que ponéis los richsnippets en el product-list.tpl, cuidadito a Google no le gusta ni un pelo tener un amasijo de datos enriquecidos en una sola página. Los richsnippets podéis ponerlos solo en el product.tpl, breadcrumbs y comentarios. Me engancho al hilo y en lo que pueda os echo un cable. Link to comment Share on other sites More sharing options...
MarioCM Posted February 19, 2015 Share Posted February 19, 2015 Añadiendo esas líneas de precio en el product-list ya me lo reconoce todo sin problemas! Muchas Gracias!! Link to comment Share on other sites More sharing options...
progger Posted February 27, 2015 Share Posted February 27, 2015 Yo sigo teniendo el problema del price, alguien me puede echar una mano? Gracias y un saludo... Link to comment Share on other sites More sharing options...
ReactionCode Posted February 28, 2015 Share Posted February 28, 2015 Yo sigo teniendo el problema del price, alguien me puede echar una mano? Gracias y un saludo... Lo más fácil para que os podamos ayudar es que nos dejéis una URL de vuestro producto, así podremos ver que está ocurriendo y como tenéis los snippets aplicados. Link to comment Share on other sites More sharing options...
progger Posted March 1, 2015 Share Posted March 1, 2015 A ver, os voy a poner unas capturas de lo que me sale en webmaster de google y si os hace falta mas cosas os las pongo. Y aqui parte de los enlaces: Saludos y gracias... Link to comment Share on other sites More sharing options...
MarioCM Posted March 2, 2015 Share Posted March 2, 2015 Pero deja una url para que podamos ver cómo tienes el código. Yo tengo una duda, me sale todo ok, pero me da una advertencia que no sé que puede ser: Tipo no especificado El nodo está vacío. Comprueba que sea así como lo quieres y ten en cuenta que se puede eliminar. Link to comment Share on other sites More sharing options...
progger Posted March 2, 2015 Share Posted March 2, 2015 Pero deja una url para que podamos ver cómo tienes el código. Yo tengo una duda, me sale todo ok, pero me da una advertencia que no sé que puede ser: Tipo no especificado El nodo está vacío. Comprueba que sea así como lo quieres y ten en cuenta que se puede eliminar. La web es esta: www.paratiparami.es saludos y gracias... Link to comment Share on other sites More sharing options...
ReactionCode Posted March 3, 2015 Share Posted March 3, 2015 La web es esta: www.paratiparami.es saludos y gracias... Por lo que veo aquí ya lo tienes solucionado? http://goo.gl/BtJm8e A mi me sale todo ok sin advertencias. Link to comment Share on other sites More sharing options...
ReactionCode Posted March 3, 2015 Share Posted March 3, 2015 Os aviso que no es nada recomendable configurar los rich snippets en las listas de productos, no os servirá de nada y os perjudicará en el SEO. Igual que el contenido duplicado, si tienes el rich snippets del producto específico para que lo queréis mandar en el listado de productos? Leeros esto por favor https://support.google.com/webmasters/answer/146750 y para los perezosos copio el párrafo concreto de Google A continuación, se indican las directrices que se aplican a los fragmentos de productos: Al utilizar el marcado de productos, el tema principal de la página debe tratar sobre un producto específico y no sobre una categoría o sobre una lista de productos. No se admite el marcado de productos en páginas de fichas o de categorías. Es necesario que el producto se pueda comprar directamente en la página. No se admite el marcado de productos en páginas que exijan que el usuario visite el sitio de otro vendedor o un vendedor offline para completar la compra. No se admiten productos relacionados con contenido para adultos. Si el producto solo tiene un revisor, el nombre del mismo tiene que ser un nombre de persona válido (por ejemplo, "Carmen López") o de un equipo u organización (por ejemplo, "CNET Revisores"). Por ejemplo, "50% de descuento en la Noche de Reyes" no es un nombre válido. 1 Link to comment Share on other sites More sharing options...
MarioCM Posted March 3, 2015 Share Posted March 3, 2015 (edited) ahhh eso no lo sabía yo, es que como lo traía por defecto el prestashop por eso lo puse bien, recomiendas quitarlo entonces?? La verdad que estando en los productos con esto se repite, pero pensé que sería como un tipo índice de cara a google... PD: Te voy hacer caso, ya se lo he quitado PD2: Alguien sabe porqué me marca esta advertencia en los productos?? igual no es grave, pero es que no sé qué es, por más que busco en google no aparece ese error: https://developers.google.com/structured-data/testing-tool/?url=http://www.comercialmoyano.com/es/480-chaleco-cruzado-gris-lana-principe-de-gales-23697-5389-8100-ottavio-nuccio-gala.html Edited March 3, 2015 by MarioCM (see edit history) Link to comment Share on other sites More sharing options...
ReactionCode Posted March 3, 2015 Share Posted March 3, 2015 ahhh eso no lo sabía yo, es que como lo traía por defecto el prestashop por eso lo puse bien, recomiendas quitarlo entonces?? La verdad que estando en los productos con esto se repite, pero pensé que sería como un tipo índice de cara a google... PD: Te voy hacer caso, ya se lo he quitado PD2: Alguien sabe porqué me marca esta advertencia en los productos?? igual no es grave, pero es que no sé qué es, por más que busco en google no aparece ese error: https://developers.google.com/structured-data/testing-tool/?url=http://www.comercialmoyano.com/es/480-chaleco-cruzado-gris-lana-principe-de-gales-23697-5389-8100-ottavio-nuccio-gala.html No sabía que esa integración de Rich Snippets estaba en la plantilla por defecto, ahora caigo porque hay tanta gente empeñada en ella. En todo caso será algo que tengan que quitar en próximas versiones o algo a quitar en cada versión que saquen. Para ver mucho mejor en que línea está ese error, te recomiendo quitar todas las compresiones CCC, le pasas el análisis de richsnippets y te indicará en que línea concreta están los errores. Después de solucionarlo vuelves a activar el CCC y listos. Lo más seguro es que tengas código extra que se puede eliminar y no hace nada. Por otro lado tienes un handicap parecido al de los product list pero con las reviews. Tienes que utilizar el marcado opiniones globales, ahora lo haces como opiniones individuales, y viendo que tienes más de 1 Google te lo tomará como Spam. https://support.google.com/webmasters/answer/146645?hl=es El párrafo concreto. Utiliza el formato de opiniones individuales para las páginas que contengan una única opinión. Para las páginas que contengan una recopilación de opiniones, utiliza el formato de opiniones globales. Si la página contiene los dos tipos de opiniones (por ejemplo, la opinión de un editor y un conjunto de opiniones de usuarios), te recomendamos que selecciones un formato. Puedes utilizar el formato de opiniones individuales para marcar la opinión del editor o el formato de opiniones globales para resumir el conjunto de las opiniones de los usuarios. Si una página contiene los dos tipos de marcado, Google mostrará el marcado de opiniones globales. Si viene así por defecto pues otra cosa a mejorar. 1 Link to comment Share on other sites More sharing options...
MarioCM Posted March 3, 2015 Share Posted March 3, 2015 (edited) Vale, he eliminado de la plantilla de los comentarios y lo he dejado sólo en el recuento total, me queda así ahora: https://developers.google.com/webmasters/structured-data/testing-tool?url=http%253A%252F%252Fwww.comercialmoyano.com%252Fes%252F480-chaleco-cruzado-gris-lana-principe-de-gales-23697-5389-8100-ottavio-nuccio-gala.html Voy a repasar en el product.tpl a ver si veo algún código sobrante, lo que me mosquea un poco es que no me aparece el código "MPN" del producto en el análisis y lo tengo puesto Edited March 3, 2015 by MarioCM (see edit history) Link to comment Share on other sites More sharing options...
ReactionCode Posted March 3, 2015 Share Posted March 3, 2015 (edited) Si no te sale el mpn lo más seguro es que te falte alguna etiqueta de marcado, por eso puede que no te salga error y no lo veas. si desactivas los CCC te lo miro Edited March 3, 2015 by javsmile (see edit history) Link to comment Share on other sites More sharing options...
MarioCM Posted March 4, 2015 Share Posted March 4, 2015 Gracias por tu ayuda! He chapuceado con un meta el sku, pero el mpn normal no lo engancha. Otra duda qu etengo es si hay que repetir todo con metas al inicio, o si está ya en la vista no es necesario. Te dejo el tpl entero (sé que soy un chapuzas por no hacer override, pero como actualizo poco, me gusta ir cacharreando directamente en la plantilla ) {* * 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 *} {include file="$tpl_dir./errors.tpl"} {if $errors|@count == 0} {if !isset($priceDisplayPrecision)} {assign var='priceDisplayPrecision' value=2} {/if} {if !$priceDisplay || $priceDisplay == 2} {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, $priceDisplayPrecision)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)} {elseif $priceDisplay == 1} {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, $priceDisplayPrecision)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)} {/if} <div itemscope itemtype="http://schema.org/Product"> <div class="primary_block row"> {if !$content_only} <div class="container"> <div class="top-hr"></div> </div> {/if} {if isset($adminActionDisplay) && $adminActionDisplay} <div id="admin-action"> <p>{l s='This product is not visible to your customers.'} <input type="hidden" id="admin-action-product-id" value="{$product->id}" /> <input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" /> <input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" /> </p> <p id="admin-action-result"></p> </div> {/if} {if isset($confirmation) && $confirmation} <p class="confirmation"> {$confirmation} </p> {/if} <!-- left infos--> <div class="pb-left-column col-xs-12 col-sm-4 col-md-5"> <!-- product img--> <div id="image-block" class="clearfix"> {if $product->new} <span class="new-box"> <span class="new-label">{l s='New'}</span> </span> {/if} {if $product->on_sale} <span class="sale-box no-print"> <span class="sale-label">{l s='Sale!'}</span> </span> {elseif $product->specificPrice && $product->specificPrice.reduction && $productPriceWithoutReduction > $productPrice} <span class="discount">{l s='Reduced price!'}</span> {/if} {if $have_image} <span id="view_full_size"> {if $jqZoomEnabled && $have_image && !$content_only} <a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}"> <img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/> </a> <!--apaño zoom--> <span class="span_link2 no-print"> <a target="_blank" title="Zoom {if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}"> {l s='View larger'}</a></span> <!--fin de apaño zoom--> {else} <img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link no-print">{l s='View larger'}</span> {/if} {/if} </span> {else} <span id="view_full_size"> <img itemprop="image" src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link"> {l s='View larger'} </span> {/if} </span> {/if} </div> <!-- end image-block --> {if isset($images) && count($images) > 0} <!-- thumbnails --> <div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}"> {if isset($images) && count($images) > 4} <span class="view_scroll_spacer"> <a id="view_scroll_left" class="" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"> {l s='Previous'} </a> </span> {/if} <div id="thumbs_list"> <ul id="thumbs_list_frame"> {if isset($images)} {foreach from=$images item=image name=thumbnails} {assign var=imageIds value="`$product->id`-`$image.id_image`"} {if !empty($image.legend)} {assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'} {else} {assign var=imageTitle value=$product->name|escape:'html':'UTF-8'} {/if} <li id="thumbnail_{$image.id_image}"{if $smarty.foreach.thumbnails.last} class="last"{/if}> <a{if $jqZoomEnabled && $have_image && !$content_only} href="javascript:void(0);" rel="{literal}[spam-filter]/literal}gallery: 'gal1', smallimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'large_default')|escape:'html':'UTF-8'}',largeimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}'{literal[spam-filter]{/literal}"{else} href="{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}" data-fancybox-group="other-views" class="fancybox{if $image.id_image == $cover.id_image} shown{/if}"{/if} title="{$imageTitle}"> <img class="img-responsive" id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'cart_default')|escape:'html':'UTF-8'}" alt="{$imageTitle}" title="{$imageTitle}" height="{$cartSize.height}" width="{$cartSize.width}" itemprop="image" /> </a> </li> {/foreach} {/if} </ul> </div> <!-- end thumbs_list --> {if isset($images) && count($images) > 4} <a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"> {l s='Next'} </a> {/if} </div> <!-- end views-block --> <!-- end thumbnails --> {/if} {if isset($images) && count($images) > 1} <p class="resetimg clear no-print"> <span id="wrapResetImages" style="display: none;"> <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" name="resetImages"> <i class="icon-repeat"></i> {l s='Display all pictures'} </a> </span> </p> {/if} </div> <!-- end pb-left-column --> <!-- end left infos--> <!-- center infos --> <div class="pb-center-column col-xs-12 col-sm-4"> {if $product->online_only} <p class="online_only">{l s='Online only'}</p> {/if} <h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1> <meta itemprop="gtin13" content="{$product->ean13}" /> <p id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}> <label>{l s='Model'} </label> <span class="editable" itemprop="mpn">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span> <label itemprop="brand">OTTAVIO NUCCIO GALA</label> </p> <!--fb--> <p style="margin:5px 0px 0px;"><iframe src="//www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FShopONGala&width&layout=standard&action=like&show_faces=false&share=false&height=35&appId=618328661611644" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:42px;" allowTransparency="true"></iframe></p><!--fin fb--> {if $product->condition} <p id="product_condition" style="display:none;"> <label>{l s='Condition'} </label> {if $product->condition == 'new'} <link itemprop="itemCondition" href="http://schema.org/NewCondition"/> <span class="editable">{l s='New'}</span> {elseif $product->condition == 'used'} <link itemprop="itemCondition" href="http://schema.org/UsedCondition"/> <span class="editable">{l s='Used'}</span> {elseif $product->condition == 'refurbished'} <link itemprop="itemCondition" href="http://schema.org/RefurbishedCondition"/> <span class="editable">{l s='Refurbished'}</span> {/if} </p> {/if} {if $product->description_short || $packItems|@count > 0} <div id="short_description_block"> {if $product->description_short} <div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div> {/if} {if $product->description} <p class="buttons_bottom_block"> <a href="javascript:{ldelim}{rdelim}" class="button"> {l s='More details'} </a> </p> {/if} {if $packItems|@count > 0} <div class="short_description_pack"> <h3>{l s='Pack content'}</h3> {foreach from=$packItems item=packItem} <div class="pack_content"> {$packItem.pack_quantity} x <a href="{$link->getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)|escape:'html':'UTF-8'}">{$packItem.name|escape:'html':'UTF-8'}</a> <p>{$packItem.description_short}</p> </div> {/foreach} </div> {/if} </div> <!-- end short_description_block --> {/if} {if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)} <!-- number of item in stock --> <p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}> <span id="quantityAvailable">{$product->quantity|intval}</span> <span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span> <span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span> </p> {/if} {if $PS_STOCK_MANAGEMENT} <!-- availability --> <p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {*<span id="availability_label">{l s='Availability:'}</span>*} <span id="availability_value"{if $product->quantity <= 0 && !$allow_oosp} class="warning_inline"{/if}>{if $product->quantity <= 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}</span> </p> {hook h="displayProductDeliveryTime" product=$product} <p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p> {/if} <p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}> <span id="availability_date_label">{l s='Availability date:'}</span> <span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span> </p> <!-- Out of stock hook --> <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}> {$HOOK_PRODUCT_OOS} </div> {if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if} {if !$content_only} <!-- usefull links--> <ul id="usefull_link_block" class="clearfix no-print"> <!-- <li class="print"> <a href="javascript:print();"> {l s='Print'} </a> </li> --> {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if} {if $have_image && !$jqZoomEnabled}{/if} </ul> <!-- Made in Italy--> <p align="center"><img src="http://www.comercialmoyano.com/img/italia.png" alt="Made in Italy" title="Made in Italy" align="absmiddle" /></p> <!--madeinitaly--> <!-- QR Code --> <p class="codigoqr"><img src="http://chart.apis.google.com/chart?cht=qr&chs=90x90&chl={$plink|escape:'url'}&choe=UTF-8&chld=L|0" alt="Luxury shopping Comercial Moyano" /></p> {/if} </div> <!-- end center infos--> <!-- pb-right-column--> <div class="pb-right-column col-xs-12 col-sm-4 col-md-3"> {if ($product->show_price && !isset($restricted_country_mode)) || isset($groups) || $product->reference || (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)} <!-- add to cart form--> <form id="buy_block"{if $PS_CATALOG_MODE && !isset($groups) && $product->quantity > 0} class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post"> <!-- hidden datas --> <p class="hidden"> <input type="hidden" name="token" value="{$static_token}" /> <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="id_product_attribute" id="idCombination" value="" /> </p> <div class="box-info-product"> <div class="content_prices clearfix"> {if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <!-- 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="reduction_amount" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'amount' || $product->specificPrice.reduction|floatval ==0} style="display:none"{/if}> <span id="reduction_amount_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'amount' && $product->specificPrice.reduction|floatval !=0} -{convertPrice price=$productPriceWithoutReduction-$productPrice|floatval} {/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 --> {if $packItems|@count && $productPrice < $product->getNoPackPrice()} <p class="pack_price">{l s='Instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p> {/if} {if $product->ecotax != 0} <p class="price-ecotax">{l s='Include'} <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span> {l s='For green tax'} {if $product->specificPrice && $product->specificPrice.reduction} <br />{l s='(not impacted by the discount)'} {/if} </p> {/if} {if !empty($product->unity) && $product->unit_price_ratio > 0.000000} {math equation="pprice / punit_price" pprice=$productPrice punit_price=$product->unit_price_ratio assign=unit_price} <p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'html':'UTF-8'}</p> {hook h="displayProductPriceBlock" product=$product type="unit_price"} {/if} {/if} {*close if for show price*} {hook h="displayProductPriceBlock" product=$product type="weight"} <div class="clear"></div> <p style="font-size:11px; line-height:13px" align="center">{l s='texto2'}<br>{l s='texto3'}</p> </div> <!-- end content_prices --> <div class="product_attributes clearfix"> <!-- quantity wanted --> {if !$PS_CATALOG_MODE} <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> <label>{l s='Quantity:'}</label> <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" /> <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down"> <span><i class="icon-minus"></i></span> </a> <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up"> <span><i class="icon-plus"></i></span> </a> <span class="clearfix"></span> </p> {/if} <!-- minimal quantity wanted --> <p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {l s='This product is not sold individually. You must select at least'} <b id="minimal_quantity_label">{$product->minimal_quantity}</b> {l s='quantity for this product.'} </p> {if isset($groups)} <!-- attributes --> <div id="attributes"> <div class="clearfix"></div> {foreach from=$groups key=id_attribute_group item=group} {if $group.attributes|@count} <fieldset class="attribute_fieldset"> <label class="attribute_label" {if $group.group_type != 'color' && $group.group_type != 'radio'}for="group_{$id_attribute_group|intval}"{/if}>{$group.name|escape:'html':'UTF-8'} : </label> {assign var="groupName" value="group_$id_attribute_group"} <div class="attribute_list"> {if ($group.group_type == 'select')} <select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print"> {foreach from=$group.attributes key=id_attribute item=group_attribute} <option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option> {/foreach} </select> {elseif ($group.group_type == 'color')} <ul id="color_to_pick_list" class="clearfix"> {assign var="default_colorpicker" value=""} {foreach from=$group.attributes key=id_attribute item=group_attribute} {assign var='img_color_exists' value=file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')} <li{if $group.default == $id_attribute} class="selected"{/if}> <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" id="color_{$id_attribute|intval}" name="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}"{if !$img_color_exists && isset($colors.$id_attribute.value) && $colors.$id_attribute.value} style="background:{$colors.$id_attribute.value|escape:'html':'UTF-8'};"{/if} title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}"> {if $img_color_exists} <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" /> {/if} </a> </li> {if ($group.default == $id_attribute)} {$default_colorpicker = $id_attribute} {/if} {/foreach} </ul> <input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" /> {elseif ($group.group_type == 'radio')} <ul> {foreach from=$group.attributes key=id_attribute item=group_attribute} <li> <input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} /> <span>{$group_attribute|escape:'html':'UTF-8'}</span> </li> {/foreach} </ul> {/if} </div> <!-- end attribute_list --> </fieldset> {/if} {/foreach} </div> <!-- end attributes --> {/if} </div> <!-- end product_attributes --> <div class="box-cart-bottom"> <!--mío--> <!--fin mío--> <div{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || (isset($restricted_country_mode) && $restricted_country_mode) || $PS_CATALOG_MODE} class="unvisible"{/if}> <p id="add_to_cart" class="buttons_bottom_block no-print"> <button type="submit" name="Submit" class="exclusive"> <span>{l s='Add to cart'}</span> </button> </p> </div> {if isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS}{$HOOK_PRODUCT_ACTIONS}{/if}<strong></strong> </div> <!-- end box-cart-bottom --> </div> <!-- end box-info-product --> </form> {/if} </div> <!-- end pb-right-column--> </div> <!-- end primary_block --> {if !$content_only} {if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <!-- quantity discount --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Volume discounts'}</h3> <div id="quantityDiscount"> <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} <!-- description and 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} <div id="more_info_block" class="clear"> <ul id="more_info_tabs" class="idTabs idTabsShort clearfix"> {if isset($accessories) AND $accessories}<li><a href="#idTab4">{l s='Accessories'}</a></li>{/if} {if isset($product) && $product->customizable}<li><a href="#idTab10">{l s='Product customization'}</a></li>{/if} {if $product->description}<li><a id="more_info_tab_more_info" href="#idTab1">{l s='More info'}</a></li>{/if} <!-- {if $features}<li><a id="more_info_tab_data_sheet" href="#idTab2">{l s='Data sheet'}</a></li>{/if} --> {if $attachments}<li><a id="more_info_tab_attachments" href="#idTab9">{l s='Download'}</a></li>{/if} {$HOOK_PRODUCT_TAB} </ul> <div id="more_info_sheets" class="sheets align_justify"> {if isset($product) && $product->description} <!-- full description --> <div id="idTab1" class="rte">{$product->description}</div> {/if} <!-- product's features --> {if isset($features) && $features} <ul id="idTab2" class="rte block_hidden_only_for_screen"> {foreach from=$features item=feature} {if isset($feature.value)} <li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li> {/if} {/foreach} </ul> {/if} {if isset($attachments) && $attachments} <ul id="idTab9" class="bullet"> {foreach from=$attachments item=attachment} <li><a href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html'}">{$attachment.name|escape:'htmlall':'UTF-8'}</a><br />{$attachment.description|escape:'htmlall':'UTF-8'}</li> {/foreach} </ul> {/if} {if isset($accessories) AND $accessories} <!-- accessories --> <div id="idTab4" class="bullet"> <div class="block products_block accessories_block clearfix"> <div class="block_content"> <h6> <img src="{$img_dir}icon/infos.gif" alt="Informations" /> {l s='texto1'} </h6> <ul> {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)} <li class="item product-box 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_desc"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image" target="_blank"> <img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" width="{$homeSize.width}" height="{$homeSize.height}"/> </a> <!--<div class="block_description"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description"> {$accessory.description_short|strip_tags|truncate:25:'...'} </a> </div>--> </div> <div class="s_title_block" align="center"> <h5 class="product-name"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" target="_blank"> {$accessory.name|truncate:20:'...':true|escape:'html':'UTF-8'} </a> </h5> {if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <span class="price"> {if $priceDisplay != 1} {displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc} {/if} </span> {/if} </div> <!-- <div class="clearfix" style="margin-top:5px" align="center"> {if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)} <div class="no-print"> <a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&id_product={$accessory.id_product|intval}&token={$static_token}&add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Add to cart'}"> <span>{l s='Add to cart'}</span> </a> </div> {/if} </div> --> </li> {/if} {/foreach} </ul> </div> </div> </div> {/if} <!-- Customizable products --> {if isset($product) && $product->customizable} <div id="idTab10" class="bullet customization_block"> <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix"> <p class="infoCustomizable"> {if $product->uploadable_files} {l s='Allowed file formats are: GIF, JPG, PNG'}{/if} </p> {if $product->uploadable_files|intval} <div class="customizableProductsFile"> <h3 class="infoCustomizable">{l s='Pictures'}</h3> <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'}" 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"> <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="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"> <h3 class="infoCustomizable">{l s='Text'}</h3> <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}" id="textField{$customizationField}" rows="1" cols="40" class="customization_block_input">{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}</textarea> </li> {counter} {/if} {/foreach} </ul> </div> {/if} <p class="clear required"><sup>*</sup> {l s='required fields'}</p> <p id="customizedDatas"> <input type="hidden" name="quantityBackup" id="quantityBackup" value="" /> <input type="hidden" name="submitCustomizedDatas" value="1" /> <input type="button" class="button" value="{l s='Save'}" onclick="javascript:saveCustomization()" /> <span id="ajax-loader" style="display:none"><img src="{$img_ps_dir}loader.gif" alt="loader" /></span> </p> </form> <h4 style="color:#C00" align="right"> <img src="{$img_dir}icon/infos.gif" alt="Informations" /> {l s='After saving your customized product, remember to add it to your cart.'} </h4> </div> {/if} {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if} </div> </div> {/if} {if isset($packItems) && $packItems|@count > 0} <div id="blockpack"> <h2>{l s='Pack content'}</h2> {include file="$tpl_dir./product-list.tpl" products=$packItems} </div> {/if} {/if} </div> <!-- itemscope product wrapper --> <!--relacionados--> {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if} <!--fin relacionados--> {strip} {if isset($smarty.get.ad) && $smarty.get.ad} {addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL} {/if} {if isset($smarty.get.adtoken) && $smarty.get.adtoken} {addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL} {/if} {addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval} {addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'} {addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'} {addJsDef attribute_anchor_separator=$attribute_anchor_separator|addslashes} {addJsDef attributesCombinations=$attributesCombinations} {addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"} {addJsDef currencyRate=$currencyRate|floatval} {addJsDef currencyFormat=$currencyFormat|intval} {addJsDef currencyBlank=$currencyBlank|intval} {addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'} {if isset($combinations) && $combinations} {addJsDef combinations=$combinations} {addJsDef combinationsFromController=$combinations} {addJsDef displayDiscountPrice=$display_discount_price} {addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL} {/if} {if isset($combinationImages) && $combinationImages} {addJsDef combinationImages=$combinationImages} {/if} {addJsDef customizationFields=$customizationFields} {addJsDef default_eco_tax=$product->ecotax|floatval} {addJsDef displayPrice=$priceDisplay|intval} {addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval} {addJsDef group_reduction=$group_reduction} {if isset($cover.id_image_only)} {addJsDef idDefaultImage=$cover.id_image_only|intval} {else} {addJsDef idDefaultImage=0} {/if} {addJsDef img_ps_dir=$img_ps_dir} {addJsDef img_prod_dir=$img_prod_dir} {addJsDef id_product=$product->id|intval} {addJsDef jqZoomEnabled=$jqZoomEnabled|boolval} {addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval} {addJsDef minimalQuantity=$product->minimal_quantity|intval} {addJsDef noTaxForThisProduct=$no_tax|boolval} {addJsDef customerGroupWithoutTax=$customer_group_without_tax|boolval} {addJsDef oosHookJsCodeFunctions=Array()} {addJsDef productHasAttributes=isset($groups)|boolval} {addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval} {addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval} {addJsDef productBasePriceTaxExcl=($product->base_price|floatval)} {addJsDef productReference=$product->reference|escape:'html':'UTF-8'} {addJsDef productAvailableForOrder=$product->available_for_order|boolval} {addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval} {addJsDef productPrice=$productPrice|floatval} {addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval} {addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval} {addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE} {if $product->specificPrice && $product->specificPrice|@count} {addJsDef product_specific_price=$product->specificPrice} {else} {addJsDef product_specific_price=array()} {/if} {if $display_qties == 1 && $product->quantity} {addJsDef quantityAvailable=$product->quantity} {else} {addJsDef quantityAvailable=0} {/if} {addJsDef quantitiesDisplayAllowed=$display_qties|boolval} {if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'} {addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval} {else} {addJsDef reduction_percent=0} {/if} {if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'} {addJsDef reduction_price=$product->specificPrice.reduction|floatval} {else} {addJsDef reduction_price=0} {/if} {if $product->specificPrice && $product->specificPrice.price} {addJsDef specific_price=$product->specificPrice.price|floatval} {else} {addJsDef specific_price=0} {/if} {addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *} {addJsDef stock_management=$stock_management|intval} {addJsDef taxRate=$tax_rate|floatval} {addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL} {addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL} {addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL} {addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL} {addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL} {addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL} {addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL} {/strip} {/if} Link to comment Share on other sites More sharing options...
ReactionCode Posted March 4, 2015 Share Posted March 4, 2015 Las metas se usan si ese dato no está en la vista y puede ser un meta-dato relevante para el producto, así que no lo dupliques y elimina las metas. Si no te sale lo del mpn tampoco es que sea importante. Te recomiendo que te pases por el hilo https://www.prestashop.com/forums/topic/275929-aporte-rich-snippets-para-prestashop-14x-y-15x/ Lo acabo de actualizar y más o menos sirve para todas las versiones, al menos tendrás la guia de los richsnippets de Breadcrumb que es lo mismo para todas las versiones y a Google le gustan mucho. 1 Link to comment Share on other sites More sharing options...
MarioCM Posted March 5, 2015 Share Posted March 5, 2015 Muchas gracias! Pedazo tutorial, ya tengo el breadcrumb funcionando perfecto Lo de la advertencia no sé porqué será, pero no parece muy grave. Un saludo!! Link to comment Share on other sites More sharing options...
ReactionCode Posted March 5, 2015 Share Posted March 5, 2015 Si quieres quitarte las advertencias deberías de hacer un repaso y eliminar los datos que no valgan la pena, mi consejo sería que te quedaras con lo que te pongo en el tutorial, mantuvieras la etiqueta de marca y el marcado de comentarios. No hace falta que envies el itemprop en cada imagen, quédate solo con las que comento en el tutorial que en realidad es solo 1 a la vista. Tienes un condicional con el tipo de producto nuevo, usado y demás utiliza el que pongo en el tutorial que el que tienes no está nada bien. 1 Link to comment Share on other sites More sharing options...
MarioCM Posted March 5, 2015 Share Posted March 5, 2015 (edited) He modificado la disponiblididad con el meta de tu tutorial y he dejado sólo una imagen, la verdad que me cogía las 3 que suelo poner, y seguro que no le hacía mucha gracia a guugle Lo del estado del producto era tal cual viene en la plantilla por defecto, lo único que le he añadido es el "display:none" para que no me salga en el front. Estoy repasando el tutorial pero no veo nada de el estado del producto, la verdad que estoy por eliminarlo, todo lo que vendo en mi tienda es nuevo, pero no sé si es necesario para google Edited March 5, 2015 by MarioCM (see edit history) Link to comment Share on other sites More sharing options...
ReactionCode Posted March 5, 2015 Share Posted March 5, 2015 Tienes razón me he confundido lo que sale al final del tuto es la disponibildad. Si tus productos son todos nuevos, puedes eliminarlo ese código claro. Link to comment Share on other sites More sharing options...
ad.plata Posted March 10, 2015 Share Posted March 10, 2015 tengo el mismo problema de falta price, alguien me puede comentar un poco por encima??? gracias url: https://regalosgourmetonline.com plantilla: default 1.6.0.9 Link to comment Share on other sites More sharing options...
ReactionCode Posted March 13, 2015 Share Posted March 13, 2015 tengo el mismo problema de falta price, alguien me puede comentar un poco por encima??? gracias url: https://regalosgourmetonline.com plantilla: default 1.6.0.9 Te recomiendo que te pases por el hilo https://www.prestash...shop-14x-y-15x/ Link to comment Share on other sites More sharing options...
durdi Posted April 8, 2015 Share Posted April 8, 2015 Hola a todos, Mi pregunta es la siguiente. Yo conseguí implementarlos en principio correctamente, según indica el test de google, del cual dejo adjunto una imagen. El problema es que hace unos 2 meses que los activé, pero aun no salen en las búsquedas. Sabéis por que? Gracias Link to comment Share on other sites More sharing options...
maximo88 Posted April 15, 2015 Share Posted April 15, 2015 Os aviso que no es nada recomendable configurar los rich snippets en las listas de productos, no os servirá de nada y os perjudicará en el SEO. Igual que el contenido duplicado, si tienes el rich snippets del producto específico para que lo queréis mandar en el listado de productos? Leeros esto por favor https://support.google.com/webmasters/answer/146750 y para los perezosos copio el párrafo concreto de Google CUIDADO: GOOGLE ya ha cambiado la política, y ya soporta multiproducto en página desde hace poco tiempo. La página española no está aún traducida, de ahí la confusión, y si leéis en el foro inglés de prestashop, se puede observar como en diciembre 2014 ya anunciaban que Google introduciría esta característica muy pronto https://developers.google.com/structured-data/policies Multiple entities on the same page When you have multiple entity types on a page, we recommend you mark up all entities on that page to help Google algorithms better understand and index your content. For example: A recipe page might have text describing the recipe along with an accompanying video. Each of these types should be marked separately with schema.org/Recipe and schema.org/VideoObject respectively. A category page listing several different products (or recipes, videos, or any other type). Each entity should be marked up using the relevant schema.org type, such as schema.org/Product for product category pages. Marking up just one category entity from all listed on the page is against our guidelines. A video play page might have related videos embedded in a separate section on the page. In this case, mark up the main video as well as the related videos. 1 Link to comment Share on other sites More sharing options...
ReactionCode Posted April 15, 2015 Share Posted April 15, 2015 Interesante Maximo88. Hay alguien que tenga esos rich snippets de categoría registrados en Web Master Tools? Link to comment Share on other sites More sharing options...
MarioCM Posted April 15, 2015 Share Posted April 15, 2015 A mi en PS1.6.9 me funcionan perfecto ya con las modificaciones que hice siguiendo tus notas. https://developers.google.com/webmasters/structured-data/testing-tool?url=http%253A%252F%252Fwww.comercialmoyano.com%252Fen%252F86-accessories%253Fp%253D31 Ya ni siquiere me sale la advertencia aquella que mostraba, sale todo Ok Link to comment Share on other sites More sharing options...
maximo88 Posted April 16, 2015 Share Posted April 16, 2015 (edited) Yo tiro la toalla para arreglar los Rich Snippets en 1.6.0.9 con Warehouse 3.2 Prestashop default template ya lo ha corregido en 1.6.0.14 POR FIN. Pero es imposible extrapolarlo al Warehouse anterior, hay que actualizar a Warehouse 3.5.1 Así que ni lo intentéis arreglar, más de 3 horas perdidas, a menos que sepáis mucho de lenguaje contextual. Lo único que conseguí fue duplicar el precio, y entonces ya sí lo detectaba bien. (Archivo que os adjunto) Prestashop product-list.tpl Se basa en una rama doble, una para el bloque de la izquierda y otro para el bloque derecho. Esto se traduce en que cada producto listado divide su presentación en dos zonas. Y claro Warehouse pone lo del bloque izquierdo en el derecho y es imposible de arreglar por nosotros. O yo tardaría más horas. Si alguno se atreve... Mi web www.comercialandalucia.es (os adjunto también el que uso ahora) Prestashop ha tardado más de 3 años en corregir este error, como siempre digo, esto es una plataforma que funciona como puede...Aunque bueno, en este caso se ha corregido para aquellos que tengan 1.6.0.14, que por supuesto arregla esto,pero introduce otros errores, así que prudencia. @MarioCM Si lo ha conseguido, pero su estructura de presentación, no es nada convencional, y cualquiera lo entiende. Es un caso específico. Me parece una locura que hayáis plantado los tpl, a lo bruto en el foro, el post ha quedado ilegible funciona pero claro el left repite.txt Edited April 16, 2015 by maximo88 (see edit history) Link to comment Share on other sites More sharing options...
MarioCM Posted April 16, 2015 Share Posted April 16, 2015 si yo le he tocado bastante porque no necesito presentar los productos con tantas opciones, pero el tutorial que seguí creo que es bastante genérico y supongo que lo podrás adaptar a la plantilla que usas ( en vez de duplicar el precio trata de marcar sólo un grupo completo del itemprop, yo solucioné el problema así) Link to comment Share on other sites More sharing options...
elperi17 Posted April 17, 2015 Share Posted April 17, 2015 El problema del price puede deberse a que se encuentre duplicada la itemprop de offer. Todos los datos de price, currency... han de estar en una única propiedad offer, y no en dos. Si me pasáis una ruta de ejemplo donde os esté dando error puedo mirarlo. El tema tiene muchos posts y desconozco si todos seguís con el problema o no. Link to comment Share on other sites More sharing options...
maximo88 Posted April 22, 2015 Share Posted April 22, 2015 (edited) product-list con fallo de google.txt Anda por favor, arréglamelo me está afectando bastante al posicionamiento. Efectivamente, la offer está duplicada. El .tpl tiene dos ramas, el left block y el right block. El precio aparece en la web en el right block. Hay que quitar la offer del left block, y ponerlo en el derecho. Ojalá puedas ayudarme, yo estuve 3 horas y no fui capaz. www.comercialandalucia.es Edited April 22, 2015 by maximo88 (see edit history) Link to comment Share on other sites More sharing options...
elperi17 Posted April 22, 2015 Share Posted April 22, 2015 No creas que afecta tanto al posicionamiento. ;-) El problema te viene con la parte de itemprop="availability", que está en una nueva itemprop="offers". He movido de sitio la parte de availability, si lo estás mostrando en tu ficha y no lo estás dejando oculto con css seguramente te descuadre algo. Con esto debería funcionarte bien. Solución extensible a todos los theme-default y derivados. product-list con fallo de google.txt 1 Link to comment Share on other sites More sharing options...
maximo88 Posted April 22, 2015 Share Posted April 22, 2015 @elperi17 Muchísimas gracias...hay que ver las 3 horas que perdí de mi vida, con lo fácil que era..anidar los IF en el right block. Mil gracias, qué crack Le servirá a mucha gente antes de 1.6.0.14 Link to comment Share on other sites More sharing options...
Losada Posted July 10, 2015 Share Posted July 10, 2015 Entonces como lo habéis arreglado? Mi problema esta en los listados de categorias, marcas, novedades, etc... y en los links de los productos que se muestran cuando haces un pack de productos. Los rich snippet de los productos a secas están correctos y sin errores, los configuré en su día mediante WMT por lo que no creo conveniente seguir el tutorial de "Laboratorio Prestashop", aunque le he echado una ojeada que nunca esta de mas. Los errores que me salen son los mismos que MarioCM, y usando la plantilla default. entonces, ¿que debería hacer para solucionar esto? que ya me tiene loco todo esto y con tantas soluciones que se han dicho y probado ya no se cual es la correcta. Por favor echadme una mano que me tiene desquiciado esto... Link to comment Share on other sites More sharing options...
fernan87 Posted October 26, 2015 Share Posted October 26, 2015 (edited) Esto es valido para prestashop 1.6.1? He leido todos los post que he encontrado sobre este tema y no logro solucionarlo. Alguna idea? Edited October 26, 2015 by fernan87 (see edit history) Link to comment Share on other sites More sharing options...
idiompc Posted October 31, 2015 Share Posted October 31, 2015 Me he leido todo el tema y no me queda claro como solucionar el problema de falta:price, alguna solucion para ps 1.6.1.1? Link to comment Share on other sites More sharing options...
elperi17 Posted October 31, 2015 Share Posted October 31, 2015 Intenta aplicar la lógica de que todos los price estén dentro de offers. Sobretodo presta atención a los bucles y sentencias condicionales de la plantilla, para que nada se salga de su sitio. Al final es cuestión de cumplir con schema.org Link to comment Share on other sites More sharing options...
idiompc Posted October 31, 2015 Share Posted October 31, 2015 Me quedo igual La plantilla es por defecto. Link to comment Share on other sites More sharing options...
elperi17 Posted October 31, 2015 Share Posted October 31, 2015 En un par de mensajes anteriores ayudé a otro usuario, dándole incluso el código. Lo has revisado? En scheme.org tienes información al respecto sobre los rich snippets. Tienes que editar plantilla. Link to comment Share on other sites More sharing options...
idiompc Posted November 1, 2015 Share Posted November 1, 2015 Estuve mirando igual que todo el cogido de las 5 paginas, pero miro el codigo y el codigo me mira a mí... No se que tengo que añadir, quitar o modificar... Link to comment Share on other sites More sharing options...
[email protected] Posted February 26, 2016 Share Posted February 26, 2016 El problema que está dando básicamente en algunas plantillas es que en las páginas de productos product-list.tpl se está dejando información básica para la validación del schema.org desde webmasterstools. Ocurre lo siguiente. En algunas plantillas el campo pricecurrency del esquema lo deja = 0 cuando tiene que ser = EUR (en el caso de euros) para arreglar esto en el product-list.tpl fijaros que tienen que quedar así todas las referencias a pricecurrency: <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> por otra parte es importante que el elemento del esquema que nos dice si el producto está en stock tiene que contener también el precio y la moneda igual que se muestra a continuación. Item 1 type: http://schema.org/offer property: availability: http://schema.org/InStock price: 50 € pricecurrency: EUR debería quedar más o menos así <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> {if ($product.allow_oosp || $product.quantity > 0)} <span class="{if $product.quantity <= 0}out-of-stock{else}available-now{/if}"> <link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{$product.available_later}{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 itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <span class="available-dif"> <link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {else} <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} <span itemprop="price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> </span> {/if} </span> Sencillamente perfecto, implementé el código en la propiedad y funciona geniaaaaal !! muchas gracias por el aporte... Pedro... Tienda de Poker Link to comment Share on other sites More sharing options...
jjryeste Posted November 19, 2016 Share Posted November 19, 2016 Hola mi codigo en prestashop 1.6 es el siguiente y no veo donde hacer los cambios para eliminar el signo € o para que no entre en os datos estructurados <!-- 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}" /> {/if} </p> una ayudita por fis Link to comment Share on other sites More sharing options...
infinityl Posted March 21, 2017 Share Posted March 21, 2017 A ver familia, me imagino que ya habrá quedado más que resuelto, pero el problema de los precios viene a que a google no le gusta el precio con la moneda junto. Los quiere por separado, con que se cambie la parte que pone el precio (la que pone en una sola etiqueta lo de {convertPrice price=$productPrice}) por: <meta itemprop="price" content="{$productPrice}" /> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> ya va. Un saludo! 1 Link to comment Share on other sites More sharing options...
luico Posted June 5, 2017 Share Posted June 5, 2017 Llevo ya dos o tres noches perdidas por el problema de los precios en los datos estructurados de google. Se que este hilo es un poco antiguo pero de todos los que he leido me parece el más interesante y acertado, aunque yo me sienta incapaz de solucionarlo por mi mismo. He realizado muchas pruebas y ninguna ha terminado bien. Yo estoy con prestashop 1.6.1.11 y con un tema de leodigital version 1.0 En estos momentos el codigo lo tengo de la siguiente manera: <!-- prices --> <div class="price" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <p class="our_price_display" itemprop="offers" itemscope itemtype="https://schema.org/Offer">{strip} {if $product->quantity > 0}<link itemprop="availability" href="https://schema.org/InStock"/>{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display" itemprop="price" content="{$productPrice}">{convertPrice price=$productPrice|floatval}</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} {/strip}</p> <p id="reduction_percent" {if $productPriceWithoutReduction <= 0 || !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}>{strip} <span id="reduction_percent_display"> {if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if} </span> {/strip}</p> <p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction)} class="hidden"{/if}>{strip} {if $priceDisplay >= 0 && $priceDisplay <= 2} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction|floatval}{/if}{if $tax_enabled && $display_tax_label == 1} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if}</span> {/if} {/strip}</p> {if $priceDisplay == 2} <br /> <span id="pretaxe_price">{strip} <span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span> {l s='tax excl.'} {/strip}</span> {/if} </div> <!-- end prices --> a ver si alguien me puede ayudar un poquito, por que si no tendré que desistir :-( 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