osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

> [hack] Trier les produits et leurs options dans le panier et/ou la commande, en 5 lignes de code
FoxP2
posté 18 Dec 2011, 10:59
Message #1


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



Nativement, la page shopping_cart n'est pas filtrée. Les produits (ainsi que leurs options qui elles sont triées dans la page product_info) sont affichés dans l'ordre de l'ajout fait par le client.
ce qui donne :


la modification est simple (à mettre en place, un peu moins à trouver techniquement).
dans le fichier catalog/shopping_cart.php, ajouter après :
Code
    $any_out_of_stock = 0;
    $products = $cart->get_products();


ces 5 lignes de code :

Code
    foreach ($products as $key => $row) {
          $attributes[$key] = $row['attributes'];
          $name[$key] = $row['name'];          
    }
    array_multisort(array_map('strtolower',$name), $attributes, $products, SORT_ASC);


avec comme résultat visuel :



dans cet exemple, la fonction array_multisort filtre les produits par leurs nom (tri ascendant) mais également par le nom des options (tri ascendant). C'est un double filtrage.
Le tri par le nom est donné a titre d'exemple, sachant que l'ensemble des données du tableau peut être filtré (quantité, prix, etc)

La même chose peut être fait dans la boxe shopping_cart (catalog/includes/modules/boxes/shopping_cart) en ajoutant après :

Code
        $products = $cart->get_products();


les mêmes 5 lignes de code :

Code
          foreach ($products as $key => $row) {
          $attributes[$key] = $row['attributes'];
          $name[$key] = $row['name'];          
          }
          array_multisort(array_map('strtolower',$name), $attributes, $products, SORT_ASC);


il en va de même pour la commande (catalog/includes/classes/order.php) ~ligne 281 après :

Code
      $index = 0;
      $products = $cart->get_products();


en ajoutant :

Code
      foreach ($products as $key => $row) {
          $attributes[$key] = $row['attributes'];
          $name[$key] = $row['name'];          
      }
      array_multisort(array_map('strtolower',$name), $attributes, $products, SORT_ASC);





mis sur le forum pour mémoire.
Go to the top of the page
 
 
Start new topic
Réponse(s)
Gnidhal
posté 20 Dec 2011, 21:39
Message #2


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9221
Inscrit : 4-March 03
Lieu : Pau
Membre no 927



Yes! smile.gif
Good job et assez simple comme principe. Cool.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 14:34
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)