Jump to content

Ajout du tri par derniers produits ajoutés et tri indépendant pour les nouveaux produits (+ correction bug pagination)


kink

Recommended Posts

Tout est dans le titre:

Voici les modifications à effectuer:

Dans product-sort.php

Ajouter après la ligne 7 ($orderWay = ...):

$orderNewProductsBy = Tools::strtolower(Tools::getValue('ordernewproductsby', $orderByValues[intval(Configuration::get('PS_NEW_PRODUCTS_ORDER_BY'))]));
$orderNewProductsWay = Tools::strtoupper(Tools::getValue('ordernewproductsway', $orderWayValues[intval(Configuration::get('PS_NEW_PRODUCTS_ORDER_WAY'))]));
if (!in_array($orderNewProductsBy, $orderByValues))
   $orderNewProductsBy = $orderByValues[0];
if (!in_array($orderNewProductsWay, $orderWayValues))
   $orderNewProductsWay = $orderWayValues[0];



Ajouter après la ligne 21 ( 'orderway' => $orderWay,):

   'ordernewproductsby' => $orderNewProductsBy,
   'ordernewproductsway' => $orderNewProductsWay,



Dans le fichier new-products.php
remplacer la ligne 11 par:

'products' => Product::getNewProducts(intval($cookie->id_lang), intval($p) - 1, intval($n), false, $orderNewProductsBy, $orderNewProductsWay),



Dans votre admin/tabs/AdminPPreferences.php
Insérer le code suivant
entre la ligne 44 ('PS_PRODUCTS_ORDER_WAY' => ...) :
et 45 ('PS_IMAGE_GENERATION_METHOD' => ...) :

'PS_NEW_PRODUCTS_ORDER_BY' => array('title' => $this->l('Default new products order by:'), 'desc' => $this->l('Default order by for new products list'), 'type' => 'select', 'list' => 
   array(
       array('id' => '0', 'name' => $this->l('Product name')),
       array('id' => '1', 'name' => $this->l('Product price')),
       array('id' => '2', 'name' => $this->l('Product added date')),
       array('id' => '4', 'name' => $this->l('Position inside category')),
       array('id' => '5', 'name' => $this->l('Manufacturer')),
       array('id' => '3', 'name' => $this->l('Product modified date'))
   ), 'identifier' => 'id'),
'PS_NEW_PRODUCTS_ORDER_WAY' => array('title' => $this->l('Default new products order way:'), 'desc' => $this->l('Default order way for new products list'), 'type' => 'select', 'list' => array(array('id' => '0', 'name' => $this->l('Ascending')), array('id' => '1', 'name' => $this->l('Decreasing'))), 'identifier' => 'id'),



Dans classes/Product.php (function getNewProducts)
//Correction bug pagination
remplacer les lignes 903 (if ($count)) à 911 par:

   if ($count)
   {
       $result = Db::getInstance()->getRow('
       SELECT COUNT(`id_product`) AS nb
       FROM `'._DB_PREFIX_.'product`
       WHERE `active` = 1
       AND DATEDIFF(`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');
       return intval($result['nb']);
   }



Dans votre theme, dans le fichier product-sort.tpl
Insérer après la ligne 21 (addSortDetails($request, 'date_add', 'desc')|escape:'htmlall':'UTF-8'}" {if $orderby eq 'date_add' AND $orderway eq 'DESC'}selected="selected"{/if}>{l s='last added first'}
[/code]



Faire une copie du fichier product-sort.tpl et renommer cette copie en new-product-sort.tpl
Ensuite remplacer
tous les $orderby par $ordernewproductsby
tous les $orderway par $ordernewproductsway
et tous les addSortDetails en addNewProductsSortDetails

Dans votre fichier theme/new-products.tpl
Remplacer la ligne 7 ( {include file=$tpl_dir./product-sort.tpl}) par:

{include file=$tpl_dir./new-product-sort.tpl}



Dans le fichier classes/Link.php
Ajouter après la fonction addSortDetails (ligne 165 à 168)

public function addNewProductsSortDetails($url, $ordernewproductsby, $ordernewproductsway)
{
   return $url.(!strstr($url, '?') ? '?' : '&').'ordernewproductsby='.urlencode($ordernewproductsby).'&ordernewproductsway;='.urlencode($ordernewproductsway);
}



Ensuite vous pourrez choisir le tri à attribuer par défaut au site et aux nouveaux produits dans la partie administration/Préférences/Produits.

Le texte sera en anglais, il faut le traduire en utilisant l'onglet outils traduction.

Link to comment
Share on other sites


Bonjour …. merci! Félicitations pour votre merveilleux site. Deux questions:
1) où vous trouverez le bloc “guides” J’ai vu sur votre site?
2) Où puis-je trouver le bloc “éditorial” configuré comme le vôtre?

Merci


Bonjour,

Merci :) ca fait toujours plaisir à entendre ;)

1) Le block guide est un block que j'ai créé et que je n'ai pas partagé car je rentre les informations directement dans le fichier, il n'y a aucun assistant, aucun automatisme et il n'est donc pas pratique si vous souhaitez créer de nombreux guides.

2) Pour la page d'accueil, j'ai en fait directement modifié le fichier index.tpl dans le theme.
Link to comment
Share on other sites

  • 2 months later...
  • 3 months later...
  • 2 months later...
  • 1 year later...

Et pour la version 1.4.4 de prestashop?

Comment peut on faire pour afficher les produits de la page "nouveaux produits" par date d'ajout, c'est à dire, les nouveaux produits en premiers et non l'inverse?

 

Car pour les modifs fournies içi, les pages de prestashop 1.4.4 n'ont plus iren à voir...

 

Merci

Link to comment
Share on other sites

Et oui c'est bien dommage que Prestashop ne permette toujours pas le classement des nouveaux produits par dernier produit ajouté indépendament du mode de tri de la boutique. Prestashop a évolué depuis cette proposition de code qui fonctionnait bien sous 1.1...

Link to comment
Share on other sites

  • 2 months later...

Pour ce qui est de PS v1.4.4.x, j'ai rajouté la ligne suivante dans product-sort.tpl pour bénéficier du tri par nouveautés :

<option value="date_add:desc" {if $orderby eq 'date_add' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Newly added'}</option>

Link to comment
Share on other sites

  • 1 month later...

Pour la V1.3.7.0 voici la ligne à ajouter

<option value="{$link->addSortDetails($request, 'date_add', 'desc')|escape:'htmlall':'UTF-8'}" {if $orderby eq 'date_add' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Newly added'}</option>

Link to comment
Share on other sites

  • 1 month later...

Pour ce qui est de PS v1.4.4.x, j'ai rajouté la ligne suivante dans product-sort.tpl pour bénéficier du tri par nouveautés :

<option value="date_add:desc" {if $orderby eq 'date_add' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Newly added'}</option>

Bonjour,

Vous avez rajouté cette ligne à quel endroit dans le tpl, chez moi ça ne marche pas… (1.4.4.2)

Merci !

Link to comment
Share on other sites

Bonjour shroom,

 

Oui, quel est le numéro de la ligne sous 1.4.4.x ou il faut rajouter cette ligne dans le fichier tpl :

 

<option value="date_add:desc" {if $orderby eq 'date_add' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Newly added'}</option>

 

 

Merci car je n'arrive pas à trouver..

Link to comment
Share on other sites

  • 7 months later...

Bonsoir,

si quelqu'un cherche encore où ajouter la ligne dans prestashop 1.4 c'est apres le code suivant, dans le fichier /prestashop/themes/votretheme/product-sort.tpl

 

{if !$PS_CATALOG_MODE}

<option value="price:asc" {if $orderby eq 'price' AND $orderway eq 'asc'}selected="selected"{/if}>{l s='Price: lowest first'}</option>

<option value="price:desc" {if $orderby eq 'price' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Price: highest first'}</option>

{/if}

<option value="name:asc" {if $orderby eq 'name' AND $orderway eq 'asc'}selected="selected"{/if}>{l s='Product Name: A to Z'}</option>

<!-- <option value="name:desc" {if $orderby eq 'name' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Product Name: Z to A'}</option>-->

{if !$PS_CATALOG_MODE}

<option value="quantity:desc" {if $orderby eq 'quantity' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='In-stock first'}</option>

{/if}

 

N'oublier pas d'effacer les caches dans /prestashop/tools/smarty/compile et dans /prestashop/tools/smarty/cache pour voir l'effet

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...