vhea Posted May 11, 2011 Share Posted May 11, 2011 BuenasNecesito algun codigo para que no aparezcan los productos fuera de stock en la pagina de inicio, en el home featured. Mas que nada para darle mas importancia a los que si estan en Stock.Si alguienn supiera un codigo para esto, me seria de gran ayuda, gracias Link to comment Share on other sites More sharing options...
illohacker Posted September 14, 2011 Share Posted September 14, 2011 Llevo buscando esto muchísimo tiempo Link to comment Share on other sites More sharing options...
jvpolivares Posted September 14, 2011 Share Posted September 14, 2011 Hola, En la versión 1.4, en el modulo homefeatured, en el archivo homefeatured.tpl podeis poner despues de la línea {foreach from=$products item=product name=homeFeaturedProducts} la siguiente línea {if ($product.quantity > 2)} y justo antes del {/foreach} pones el {/if} Esto hará que sólo aparezcan en el inicio, los productos cuyo stock sea mayor que dos, el número lo podeis modificar al que queraís, simplemente es el que prestashop marca como límite inferior por defecto. Atentamente, jvpolivares Link to comment Share on other sites More sharing options...
tecnotorba Posted December 16, 2011 Share Posted December 16, 2011 ¿Y para que te muestre todos los productos de la base de datos que tienes?, lo que quiero es que ponga todos los productos de forma aleatoria y que estén en stock. Un saludo. Link to comment Share on other sites More sharing options...
tecnotorba Posted December 16, 2011 Share Posted December 16, 2011 ¿Y si además de que salgan los productos que están en stock, quiero que me muestre todos los productos de la base de datos?, para no tener que estar todos los días destacando productos, esque tengo un pequeño problema y a la hora de importar los productos de cualquiera de mis distribuidores se me borran los productos del inicio al encontrar los mismos productos con las mismas referencias y actualizarse. ¿Cabria la posibilidad de que al importar, especificarle que quiero que se muestre en destacados? Un saludo. Link to comment Share on other sites More sharing options...
tecnotorba Posted December 16, 2011 Share Posted December 16, 2011 ¿Y si además de que salgan los productos que están en stock, quiero que me muestre todos los productos de la base de datos?, para no tener que estar todos los días destacando productos, esque tengo un pequeño problema y a la hora de importar los productos de cualquiera de mis distribuidores se me borran los productos del inicio al encontrar los mismos productos con las mismas referencias y actualizarse. ¿Cabria la posibilidad de que al importar, especificarle que quiero que se muestre en destacados? Un saludo. Link to comment Share on other sites More sharing options...
vive Posted January 25, 2012 Share Posted January 25, 2012 Lo he probado, si el artículo no está en stock no lo pone pero tampoco pone otro que si esté en stock, sino que queda el hueco en blanco. Al menos es lo que me ha pasado a mí. Link to comment Share on other sites More sharing options...
in53ktin Posted January 27, 2012 Share Posted January 27, 2012 Yo lo que hago es al momento de actualizar, lo hago con un .csv, en la parte de la plantilla de productos en el campo categories, le pongo un if al .csv, que si el producto=0 entonces no tome en cuenta el home, si tiene al menos 1 que le agregue el home, la celda queda más o menos así: Si producto >0 home, computadora, laptop Si producto =0 computadora, laptop Jejeje es algo que me ha resultado para poner los nuevos productos diariamente en la página principal. Saludos. Link to comment Share on other sites More sharing options...
davidsl Posted October 27, 2012 Share Posted October 27, 2012 (edited) Después de mucho tiempo buscando una solución a este problema, he encontrado la buena (o eso creo). Hay que modificar dos archivos: Buscar el siguiente código en /classes/Category.php $sql = ' SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` manufacturer_name, tl.`name` tax_name, t.`rate`, cl.`name` category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 new FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`) LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' AND tr.`id_state` = 0) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE p.`quantity` > 0 AND cp.`id_category` = '.(int)$this->id.($active ? ' AND p.`active` = 1' : '').' '.($id_supplier ? 'AND p.id_supplier = '.(int)$id_supplier : ''); Y reemplazarlo por: $sql = ' SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` manufacturer_name, tl.`name` tax_name, t.`rate`, cl.`name` category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 new FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`) LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' AND tr.`id_state` = 0) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE cp.`id_category` = '.(int)$this->id.($active ? ' AND p.`active` = 1' : '').' '.($id_supplier ? 'AND p.id_supplier = '.(int)$id_supplier : '').' '.($orderBy == 'quantity' ? 'AND p.quantity > 0' : ''); Y en el archivo /modules/homefeatured/homefeatured.php, reemplazar: $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'add_date', 'DESC', false, true, true, $nb); Por: $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'quantity', 'DESC', false, true, true, $nb); Yo lo he probado y me funciona correctamente en la versión 1.4.9. Decir también que tengo hecha la modificación para que aparezcan los productos de forma aleatoria. Un saludo Edited October 27, 2012 by davidsl (see edit history) 1 Link to comment Share on other sites More sharing options...
bazaralandalus Posted January 27, 2013 Share Posted January 27, 2013 Hola Davidsl Muchas gracias por el aporte He cambiado en Category.php lo que indicas arriba pero en el archivo homefeatured.php de mi version 1.4.9.0 viene esto: 'products' => $category->getProducts((int)$params['cookie']->id_lang, 1, ($nb ? $nb : 10)), 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize('home'))); que tengo que cambiar porque no tengo ni idea de código Muchas gracias!! Link to comment Share on other sites More sharing options...
davidsl Posted January 27, 2013 Share Posted January 27, 2013 Hola Davidsl Muchas gracias por el aporte He cambiado en Category.php lo que indicas arriba pero en el archivo homefeatured.php de mi version 1.4.9.0 viene esto: 'products' => $category->getProducts((int)$params['cookie']->id_lang, 1, ($nb ? $nb : 10)), 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize('home'))); que tengo que cambiar porque no tengo ni idea de código Muchas gracias!! Buenos días. Te pongo la función completa tal y como la tengo yo, para que lo reemplaces todo: function hookHome($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'quantity', 'DESC', false, true, true, $nb); shuffle($products); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured.tpl'); } Yo eso lo tengo hecho con la versión 1.4.9.0, así que debería funcionarte. Un saludo Link to comment Share on other sites More sharing options...
Recommended Posts