Jump to content

quitar productos agotados de home featured


Recommended Posts

Buenas

Necesito 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 :D

Link to comment
Share on other sites

  • 4 months later...

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

  • 3 months later...

¿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

¿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

  • 1 month later...

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

  • 9 months later...

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 by davidsl (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 2 months later...

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

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...