Antoniosan Posted April 10, 2013 Share Posted April 10, 2013 (edited) Hola, Me gustaría saber so me pueden echar un cable con lo siguiente: Quiero ocultar o “esconder” los productos de la tienda que no tengan stock (en PS 1.5), pero no los quiero desactivar, de manera que se sigan mostrando si alguien accede a través de la URL del producto (aunque el producto muestre el texto “Este producto ya no se encuentra en stock”). Sólo quiero que no se muestren en el frontend pero que si un usuario encuentra la URL del producto a través de los buscadores haga click y vaya a la página del producto, no quiero desactivar el producto ya que mostraría “Producto no encontrado”, tampoco quiero redireccionar a la home u otra página. Las razones: 1.- Vendemos productos únicos, por ejemplo, vendemos anillos, podemos tener 1000 anillos pero sólo tenemos un Anillo Ref. Y423111 otro anillo Ref. Y4875413 y así sucesivamente hasta el anillo número 1000. NO tenemos más de una unidad por referencia. Los anillos que se van vendiendo automáticamente aparecen en la tienda con stock de 0 y los usuarios que entran a ver un producto vendido son advertidos que “Este producto ya no se encuentra en stock”, hasta aquí todo correcto. EL problema es que de poco a poco la tienda se va llenando de productos vendidos, sin stock, salen en destacados, en listado de productos de las categorías, en el buscador, en productos más vistos, por todas partes como es habitual. Lo anterior hace que los usuarios, muchos por coincidencia, hagan varios clicks en diferentes productos y la mayoría de los que han visitado son productos fuera de stock, vendidos, lo cual obviamente es negativo para la tienda, el usuario puede pensar que no hay productos para comprar :-) 2.- Por otro lado, las páginas de los anillos se van indexando en los buscadores, y si desactivo los productos desde el BO, me corregiría el punto anterior (no se mostrarían en el frontend) pero me generaría páginas 404 ya que si un usuario encuentra el producto a través de, por ejemplo, google, no encontraría la página del producto porque estaría desactivado (Hay 1 error - Producto no disponible). ¿Qué opinan? ¿Alguna idea por dónde buscar o sugerencia? Muchas gracias de antemano. Edited June 5, 2013 by Antoniosan (see edit history) Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted April 10, 2013 Share Posted April 10, 2013 Ok, quieres ocutarlos, pero no desactivarlas, facilmente puedes hacerlo con una condicional por ejemplo en el product-list.tpl de tu plantilla para el listado de productos, del tipo: {if productos stock mayor que 0} imprimo productos {/if} Link to comment Share on other sites More sharing options...
deabaria Posted April 10, 2013 Share Posted April 10, 2013 la idea genial si puedes poner mas, mas genial Link to comment Share on other sites More sharing options...
Feliz Garcia Posted April 10, 2013 Share Posted April 10, 2013 Ok, quieres ocutarlos, pero no desactivarlas, facilmente puedes hacerlo con una condicional por ejemplo en el product-list.tpl de tu plantilla para el listado de productos, del tipo: {if productos stock mayor que 0} imprimo productos {/if} Gracias Rubalcaba, acabo de tu aplicar tu idea, y me funciona perfectamente. Link to comment Share on other sites More sharing options...
Antoniosan Posted April 11, 2013 Author Share Posted April 11, 2013 ¡Muchas gracias Rubalcaba! Feliz, podrías detallar cómo lo hiciste para los que no somos programadores :-), tal vez compartir código para poder ver dónde ponerlo exactamente. Mientras tanto iré probando a ver cómo queda, saludos!! Link to comment Share on other sites More sharing options...
RaulFlorido Posted April 15, 2013 Share Posted April 15, 2013 yo me uno a la petición de Antoniosan ... si alguien se anima sería de agradecer. Saludos! Link to comment Share on other sites More sharing options...
Xzelot Posted April 16, 2013 Share Posted April 16, 2013 (edited) Ok, quieres ocutarlos, pero no desactivarlas, facilmente puedes hacerlo con una condicional por ejemplo en el product-list.tpl de tu plantilla para el listado de productos, del tipo: {if productos stock mayor que 0} imprimo productos {/if} Si tienes activada la preventa esto no debería mostrar el item o si ? cuál será la variable del estado de la "disponibilidad"? Tendría que ser conmo un anidado? Podría ser así también? {if (productos stock = 0 and avaliability = "PreVenta") || (productos stock > 0 )} imprimo productos {/if} Mostraría los items en Preventa y los que tienen Stock dejando lso que son 0 aparte.... Alguien lo puede probar?? {if ($product.quantity = 0 && $product.allow_oosp) ||($product.quantity > 0)} Lo puse en la Línea 26 y cerré en la 77 del Product-list.tpl V 1.5.4 Pero no me entra alguein me ayuda con las variables??? Edited April 16, 2013 by Xzelot (see edit history) 1 Link to comment Share on other sites More sharing options...
mariloli Posted April 23, 2013 Share Posted April 23, 2013 ¿alguien ha pulido esto un poco y/o conseguir que le funcione? Link to comment Share on other sites More sharing options...
Antoniosan Posted May 2, 2013 Author Share Posted May 2, 2013 Muy buenas, No lo he logrado, pero seguiré probando, ya les contaré. Saludos y gracias a todos!! Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 2, 2013 Share Posted May 2, 2013 ¡Muchas gracias Rubalcaba! Feliz, podrías detallar cómo lo hiciste para los que no somos programadores :-), tal vez compartir código para poder ver dónde ponerlo exactamente. Mientras tanto iré probando a ver cómo queda, saludos!! Para el listado de productos, Justo al empezar el: {foreach from=$products item=product name=products} {if $product.quantity > 0} Y cierras luego el {/if} Dejandolo asi: {* * 2007-2013 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-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {if isset($products)} <!-- Products list --> <ul id="product_list" class="clear"> {foreach from=$products item=product name=products} {if $product.quantity > 0} <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix"> <div class="left_block"> {if isset($comparator_max_item) && $comparator_max_item} <p class="compare"> <input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} /> <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label> </p> {/if} </div> <div class="center_block"> <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"> <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /> {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if} </a> <h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:35:'...'}</a></h3> <p class="product_desc"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}" >{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}</a></p> </div> <div class="right_block"> {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span> {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>{/if} {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if} {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if} </div> {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only'}</span>{/if} {/if} {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {else} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}", false)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {/if} {else} <span class="exclusive"><span></span>{l s='Add to cart'}</span><br /> {/if} {/if} <a class="button lnk_view" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a> </div> </li>{/if} {/foreach} </ul> <!-- /Products list --> {/if} Es una pequeña chapuzilla.. lo mejor seria tocar la consulta sql, pero bueno... 2 Link to comment Share on other sites More sharing options...
memp500 Posted May 11, 2013 Share Posted May 11, 2013 Para el listado de productos, Justo al empezar el: {foreach from=$products item=product name=products} {if $product.quantity > 0} Y cierras luego el {/if} Dejandolo asi: {* * 2007-2013 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-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {if isset($products)} <!-- Products list --> <ul id="product_list" class="clear"> {foreach from=$products item=product name=products} {if $product.quantity > 0} <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix"> <div class="left_block"> {if isset($comparator_max_item) && $comparator_max_item} <p class="compare"> <input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} /> <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label> </p> {/if} </div> <div class="center_block"> <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"> <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /> {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if} </a> <h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:35:'...'}</a></h3> <p class="product_desc"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}" >{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}</a></p> </div> <div class="right_block"> {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span> {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>{/if} {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if} {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if} </div> {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only'}</span>{/if} {/if} {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {else} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}", false)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {/if} {else} <span class="exclusive"><span></span>{l s='Add to cart'}</span><br /> {/if} {/if} <a class="button lnk_view" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a> </div> </li>{/if} {/foreach} </ul> <!-- /Products list --> {/if} Es una pequeña chapuzilla.. lo mejor seria tocar la consulta sql, pero bueno... Muy buena tu "chapuzilla..." pero una pregunta? si se me perimite Esta solucion resuelve el problema de indexacion en los buscadores? es decir si hago esto (que lo hice) no me aparencen los productos en la tienda - pero dichos productos en dejan de ser indexados por google por ejemplo.? Link to comment Share on other sites More sharing options...
Antoniosan Posted May 16, 2013 Author Share Posted May 16, 2013 (edited) Muchas gracias Rubalcaba, Lo probaré y te diré algo :-) Memp500, Los productos que ya están indexados seguirán indexados, mientras los buscadores no detecten algún error, como por ejemplo una página 404 not found, seguirá indexada y más si las visitas procedentes de esos productos hacen clicks en otros u otras secciones de la tienda. Si los productos que serán afectados con la "buena chapuzilla de Rubalcaba" se venden o desaparecen antes de ser indexados, ya no se indexarán ya que no existirá un enlace hacia ellos, es decir que cuando los bots vayan a tu tienda y no encuentran enlaces a esos productos no los pueden indexar. Saludos. Actualizo: Funciona bien la "chapuzilla", gracias Rubalcaba :-) Edited June 5, 2013 by Antoniosan (see edit history) Link to comment Share on other sites More sharing options...
Krauser Posted May 20, 2013 Share Posted May 20, 2013 (edited) Pues yo no se que pondre... porque añadi {if $product.quantity > 0} Y cuando voy a la categoria donde se encontraba dicho producto no me deja acceder, se me queda la pantalla en blanco... Solucionado... tenia que poner un {/if} abajo del todo XD Edited May 20, 2013 by Krauser (see edit history) Link to comment Share on other sites More sharing options...
Chungo Posted June 3, 2013 Share Posted June 3, 2013 Muchas gracias por la solución, Rubalcaba. Me funciona perfectamente salvo en el caso de las combinaciones, ya que si tengo un stock de 0 de alguna talla no se lista el producto. También he visto que las páginas totales aparecen aunque no haya productos. He visto una solución que se hizo para la versión 1.2 y voy a ver si puedo trastear un poco y hacer un híbrido chapucero. Link to comment Share on other sites More sharing options...
Recommended Posts