Jump to content

Home Featured sort order not working


Recommended Posts

Hi! I am trying to change the order of the products in my home featured, but moving the order in the backoffice does not seem to change the front-office at all... Not sure what's going on... using prestashop Version 1.3.2.3.

 

is this a bug? I could swear it was working once...

 

anyone can point me in the general direction of how to fix this? I am somewhat proficient in PHP so I can make changes to fix this if pointed in the general direction.

 

thanks!

 

Rush

Link to comment
Share on other sites

  • 1 year later...

It's quite simple. All you need to do is change one line in your homefeatured.php file. In Prestashop 1.5.3.2 it's line nr 106:

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));

and it should be changed to this:

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_upd', 'DESC');

This way you will get most recently updated products on top of the list. For other ways of sorting check column names in your ps_product table (prefix can be different than PS_) in your phpmyadmin i.e. date_add, id_product, id_supplier, id_manufacturer, id_category_default etc.

Possible order ways: ASC, DESC

Edited by Sharak (see edit history)
Link to comment
Share on other sites

  • 10 months later...

It's quite simple. All you need to do is change one line in your homefeatured.php file. In Prestashop 1.5.3.2 it's line nr 106:

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));
and it should be changed to this:

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_upd', 'DESC');
This way you will get most recently updated products on top of the list. For other ways of sorting check column names in your ps_product table (prefix can be different than PS_) in your phpmyadmin i.e. date_add, id_product, id_supplier, id_manufacturer, id_category_default etc.

Possible order ways: ASC, DESC

 

 

Well, it didn't work for me!! I'm using 1.5.6.2 and the website is www.lotericapremiada.com.br

Could you help me?

Link to comment
Share on other sites

Well, it didn't work for me!! I'm using 1.5.6.2 and the website is www.lotericapremiada.com.br

Could you help me?

can you show how your code looks like ?

 

in addition, after changes you have to recompile entire theme, its because this module uses module caching

Link to comment
Share on other sites

can you show how your code looks like ?

 

in addition, after changes you have to recompile entire theme, its because this module uses module caching

 

 

<?php
/*
* 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:
* 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 (!defined('_PS_VERSION_'))
exit;
 
class HomeFeatured extends Module
{
private $_html = '';
private $_postErrors = array();
 
function __construct()
{
$this->name = 'homefeatured';
$this->tab = 'front_office_features';
$this->version = '1.1';
$this->author = 'PrestaShop';
$this->need_instance = 0;
 
parent::__construct();
 
$this->displayName = $this->l('Featured products on the homepage.');
$this->description = $this->l('Displays featured products in the middle of your homepage.');
}
 
function install()
{
$this->_clearCache('homefeatured.tpl');
Configuration::updateValue('HOME_FEATURED_NBR', 20);
 
if (!parent::install()
|| !$this->registerHook('displayHome')
|| !$this->registerHook('header')
|| !$this->registerHook('addproduct')
|| !$this->registerHook('updateproduct')
|| !$this->registerHook('deleteproduct')
)
return false;
return true;
}
 
public function uninstall()
{
$this->_clearCache('homefeatured.tpl');
return parent::uninstall();
}
 
public function getContent()
{
$output = '<h2>'.$this->displayName.'</h2>';
if (Tools::isSubmit('submitHomeFeatured'))
{
$nbr = (int)Tools::getValue('nbr');
if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))
$errors[] = $this->l('An invalid number of products has been specified.');
else
Configuration::updateValue('HOME_FEATURED_NBR', (int)($nbr));
if (isset($errors) AND sizeof($errors))
$output .= $this->displayError(implode('<br />', $errors));
else
$output .= $this->displayConfirmation($this->l('Your settings have been updated.'));
}
return $output.$this->displayForm();
}
 
public function displayForm()
{
$output = '
<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
<fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
<p>'.$this->l('To add products to your homepage, simply add them to the "home" category.').'</p><br />
<label>'.$this->l('Define the number of products to be displayed.').'</label>
<div class="margin-form">
<input type="text" size="5" name="nbr" value="'.Tools::safeOutput(Tools::getValue('nbr', (int)(Configuration::get('HOME_FEATURED_NBR')))).'" />
<p class="clear">'.$this->l('Define the number of products that you would like to display on homepage (default: 20).').'</p>
 
</div>
<center><input type="submit" name="submitHomeFeatured" value="'.$this->l('Save').'" class="button" /></center>
</fieldset>
</form>';
return $output;
}
 
public function hookDisplayHeader($params)
{
$this->hookHeader($params);
}
 
public function hookHeader($params)
{
$this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all');
}
 
public function hookDisplayHome($params)
{
if (!$this->isCached('homefeatured.tpl', $this->getCacheId('homefeatured')))
{
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)Configuration::get('HOME_FEATURED_NBR');
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 20), "position");
 
 
$this->smarty->assign(array(
'products' => $products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
));
}
return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId('homefeatured'));
}
 
public function hookAddProduct($params)
{
$this->_clearCache('homefeatured.tpl');
}
 
public function hookUpdateProduct($params)
{
$this->_clearCache('homefeatured.tpl');
}
 
public function hookDeleteProduct($params)
{
$this->_clearCache('homefeatured.tpl');
}
}
Link to comment
Share on other sites

sorry to pop in late on this and not sure I can help...

 

but one sorts how they want home featured to appear by position under category 'home'.

 

what I have seen with home featured is that it uses cache, for example if I put in a specific price the product reflects this but not home featured until I clear cache.

 

please set postition of featured products under category home...then back office-->advanced parms-->performance-->clear smarty cache and autoload cache.

 

hope that helps

Link to comment
Share on other sites

sorry to pop in late on this and not sure I can help...

 

but one sorts how they want home featured to appear by position under category 'home'.

 

what I have seen with home featured is that it uses cache, for example if I put in a specific price the product reflects this but not home featured until I clear cache.

 

please set postition of featured products under category home...then back office-->advanced parms-->performance-->clear smarty cache and autoload cache.

 

hope that helps

 

Thanks for your kindness, but it didn't work!

Edited by Fabiana G C de O Rox (see edit history)
Link to comment
Share on other sites

Thanks for your kindness, but it didn't work!

 

this is how it works 'out of the box' from PrestaShop, i.e. without any customization

 

1. display of home featured

02.24.2014-07.38.png

http://screencast.com/t/JU3eMn6rR

 

2. modify order of products in home category, here I moved ipod touch to top of home category

02.24.2014-07.39.png

http://screencast.com/t/d9XYLoeJL6

 

3. cleared cache (may not always be necessary do this if you do not get new featured order)

02.24.2014-07.39.png

http://screencast.com/t/bzgbX92d

 

4. this is the final result (ipod touch is now first in home featrued)

02.24.2014-07.41.png

http://screencast.com/t/z578ryWN

Link to comment
Share on other sites

this is how it works 'out of the box' from PrestaShop, i.e. without any customization

 

1. display of home featured

02.24.2014-07.38.png

http://screencast.com/t/JU3eMn6rR

 

2. modify order of products in home category, here I moved ipod touch to top of home category

02.24.2014-07.39.png

http://screencast.com/t/d9XYLoeJL6

 

3. cleared cache (may not always be necessary do this if you do not get new featured order)

02.24.2014-07.39.png

http://screencast.com/t/bzgbX92d

 

4. this is the final result (ipod touch is now first in home featrued)

02.24.2014-07.41.png

http://screencast.com/t/z578ryWN

 

 

Dear El Patron, 

 

I would like to thank you hugely !!! It works!!

:wub:

 

Many thanks,

Link to comment
Share on other sites

hello El Patron

 

I have the same issue 

 

but i did not manage to change positions as in the Home category i don't see how to move a item up or down

in version 1.4.8.2 I have a drag and drop curser but not anymore in 1.5.6.1

 

thanks 

Well it is back (the cursor) , yess thanks

Link to comment
Share on other sites

×
×
  • Create New...