PrestaShop Forum

The best place in the world to ask questions about PrestaShop and get advice from our passionate community!

PrestaShop Forum

Jump to content

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

15 replies to this topic
#1
kink

    PrestaShop Apprentice

  • Members
  • PipPip
  • 51 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 (


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.

#2
kink

    PrestaShop Apprentice

  • Members
  • PipPip
  • 51 posts
Voici les fichiers modifiés:

Dans les classes:
Classes/Product.php
Classes/Link.php

Zippé dans new.tpl.zip car impossible d'uploader un fichier tpl
A copier dans votre theme:
new-products.tpl
new-product-sort.tpl
product-sort.tpl

Attached Files



#3
kink

    PrestaShop Apprentice

  • Members
  • PipPip
  • 51 posts
Ainsi que:

Dans la racine:
new-products.php
product-sort.php
new-product-sort.php

Dans la partie admin/tabs
AdminPPreferences.php

Vous pouvez voir le résultat sur http://www.deko-flammes.com/

Attached Files



#4
jolvil

    PrestaShop Fanatic

  • Members
  • PipPipPipPip
  • 2706 posts
Bravo ! :-)

Pas si simple que ca comme modif ! mais bien utile

#5
myname

    PrestaShop Apprentice

  • Members
  • PipPip
  • 275 posts
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

#6
kink

    PrestaShop Apprentice

  • Members
  • PipPip
  • 51 posts

Quote


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.

#7
anniebel

    PrestaShop Newbie

  • Members
  • Pip
  • 18 posts
Wow, excellent travail, rien n'a été oublié...
Merci d'avoir pris le temps de partager la méthode!
c'est vraiment apprécié :-)

#8
SupoWeb

    PrestaShop Newbie

  • Members
  • Pip
  • 6 posts
Un grand merci pour la méthode, ca fonctionne impec ! ;)

#9
davidan

    PrestaShop Apprentice

  • Members
  • PipPip
  • 70 posts
Bonjour kink,

J'ai visiter ton site, et les tag en 3D c'est génial... Tu peux me dire comment tu as fait ? Je veux le même !

Sinon je vais tester les modif du block new product, en espérant que ça marche.

Merci

#10
jolvil

    PrestaShop Fanatic

  • Members
  • PipPipPipPip
  • 2706 posts
attention la modif est valable pour la version 1.1 de Prestashop, pour d'autres versions il y a probablement des adaptations !

#11
justincarton

    PrestaShop Apprentice

  • Members
  • PipPip
  • 44 posts
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

#12
jolvil

    PrestaShop Fanatic

  • Members
  • PipPipPipPip
  • 2706 posts
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...

#13
shroom

    PrestaShop Apprentice

  • Members
  • PipPip
  • 27 posts
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>


#14
scoobi

    PrestaShop Apprentice

  • Members
  • PipPip
  • 93 posts
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>

PS V1.3.7.0

#15
diabolyo

    PrestaShop Apprentice

  • Members
  • PipPip
  • 125 posts

View Postshroom, on 09 October 2011 - 01:55 PM, said:

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 !
Posted Image

#16
leaven

    PrestaShop Newbie

  • Members
  • Pip
  • 23 posts
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..