Aide - Recherche - Membres - Calendrier
Version complète : Affichage des attributs dans le panier
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Fonctionnement
Rusti
Bonjours à tous,

Je voudrais savoir si d'après vous il est possible de n'afficher que certains attributs sélectionner dans le panier.

Exemple :
1 T-shirt avec l'option couleur et l'option taille son ajouter dans le panier.
Et dans le panier on ne vois que 1 t-shirt et l'option taille (on n'affiche pas l'option couleur).

J'ai bien repérer ou se trouve l'affichage des options dans le panier mais je me demande si il est possible de n'afficher que celle que l'on veut et surtout si c'est possible est ce que c'est bien dans la page du panier qu'il faut faire des modifications.

Merci
chti_poupon
Bonjour,
C'est effectivement dans shopping_cart que se prépare la chaîne à afficher, après le
Code
reset($products[$i]('attributes']);

que l'on complète $products_name qui sera complété, puis introduit dans $info_box_contents[$cur_row][], variable qui sera affichée pour chaque ligne.
Ceci dit, - tu es libre - mais je n'aimerais pas acheter un tee-shirt rose en XXXXL, sans vérifier coloris ET taille
A suivre...
Chti poupon
PS normalement, tout devrait bien aller côté totaux, facturation et port.
Moins bien s'il y a des manquants, selon une éventuelle contrib
Rusti
Bonjour chti_poupon

je comprend ton interrogation
Citation
mais je n'aimerais pas acheter un tee-shirt rose en XXXXL, sans vérifier coloris ET taille


Donc pour être un peu plus précis je suis en train de développer un module de personnalisation (pas simple wacko.gif ) et pour simplifier l'intégration avec oscommerce je me sert beaucoup des options pour personnaliser mon article.
Le soucis c'est que certaine option font appel à des menu déroulant qui pour les besoins non pas de valeur nul même ci certaine n'affiche rien d'autre que ceci ------- et donc c'est option qui ne sont pas sélectionné sont quand même afficher dans le panier (normal puisque ------ est une valeur), c'est pour ceci que je voudrais les enlever du panier.

Je vais regarder la piste que tu m'as donner et je te remercie pour cette réponse très rapide.

FoxP2
par expérience ( voir ce sujet ), je pense que tu te diriges droit dans un mur.
il est plus simple de travailler sur la page produit. (product_info)
Rusti
Bonjour,

Bon pour l'instant je suis arrivé au résultat voulu en ajoutant le code suivant à ma page shopping_cart.php
Code
          if ($value == 3) {
            echo '<span style="display:none">' . tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . TEXT_PREFIX . $option . ']', $products[$i]['attributes_values'][$option]).'</span>';
            $attributes_values['products_options_name'] = '<span style="display:none"></span>';
            $attr_value = '<span style="display:none"></span>';
          } else {
            echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);
            $attributes_values['products_options_name'] = '<br>- ' . $attributes_values['products_options_name'] . ' : ';
            $attr_value = $attributes_values['products_options_values_name'];
          }


En gros si l'id de la valeur de l'option (3 pour l'exemple) fait parti du produit elle ne s'affiche pas dans la liste des options (c'est clair que c'est pas le plus simple puisqu'il faut que j'ajoute toutes les id que je ne veux pas voir).
Par contre comme j'aime pas trop les murs happy.gif, j'ai regarder le code que tu ma conseiller FoxP2, mais je comprend pas comment je peu faire pour lui dire de ne pas afficher tel ou tel options dans le panier (Mon code se trouve juste en dessous de celui que tu propose dans une version non modifier bien sur).

Du coup je me demande toujours si j'ai fais le bon choix ou pas.

Merci
chti_poupon
Bonjour,
Il est possible de s'inspirer de ce code pour éliminer une liste (mise dans un fichier a_ecarter.txt)
Citation (chti_poupon @ 29 Nov 2011, 17:32) *
Dans catalog/includes/application_top.php, il y a ce code:
Code
    $spider_flag = false;
  
       if (tep_not_null($user_agent)) {
         $spiders = file(DIR_WS_INCLUDES . 'spiders.txt');
  
         for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
           if (tep_not_null($spiders[$i])) {
             if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
               $spider_flag = true;
               break;
             }
           }
         }
       }
  
       if ($spider_flag == false) {
         tep_session_start();
         $session_started = true;
       }
     } else {
       tep_session_start();
       $session_started = true;
     }

En deux temps:
  1. la variable à tester courante est-elle sur la liste si oui, mettre un drapeau à true
  2. Si le drapeau est à true agir en conséquence, sinon, faire comme d'hab.
Bon code

Chti poupon

Citation
PS normalement, tout devrait bien aller côté totaux, facturation et port.
Moins bien s'il y a des manquants, selon une éventuelle contrib

PS' (prime): Tu peux aussi utiliser l'option "sans cette option" gratuite et qui te permet, bien qu'un peu lourde, d'utiliser le code de base
FoxP2
lorsque je lis ton autre sujet, pourquoi réinventer la roue ?

Product Attributes - Option Type Feature
Rusti
Alors en fait je me sert je me suis inspiré de cette contrib pour gérer mes options, mais mon module de personnalisation est assez compliquer et complet.
Il y à des containers java différent qui s'affiche selon si on veux mettre un texte, un logo, un texte et un logo si on veux faire de la broderie, une impression flex ou sirégraphique, et pour corsé le tout, les prix sont différent en fonction des quantités, de l’emplacement, du type d'impression, et du nombre de couleur voulue avec des options qui s'affiche seulement si certaine autre option sont choisie et un aperçu final du produit. Le tout devant rester valide W3C, optimisé et bien sur agréable visuellement et simple d'utilisation pour le client (un truc de fou quoi wacko.gif).
Donc la simple utilisation d'une contribution n'est pas trop possible et l'utilisation unique de la page product_info.php me parraissait plus difficile que de repartir sur un module indépendant.

Mon module en lui même est terminer, fonctionnel, valide et optimisé, il ne me reste plus que la page du panier à régler.
C'est pour ceci que je suis un peu têtu (peu être un peu plus q'un peu wink.gif ) que je complique un peu les chose et que je redemande les objurgations de FoxP2 car le but est de comprendre et de proposé le mieux ci possible.

Rusti

Rusti
Petite question
Est ce que le code que j'ai mis pour l'instant et qui fonctionne est si mauvais que ça ?

Rusti
FoxP2
Citation (Rusti)
j'ai regarder le code que tu ma conseiller FoxP2, mais je comprend pas comment je peu faire pour lui dire de ne pas afficher tel ou tel options dans le panier
.../...

en fait, le sujet à lire était celui ci : sort order the shopping cart où 2 écoles s'opposent (à savoir à quel moment faut il trier les données) :
celle de Monika :
qui préfère attaquer la classe shopping_cart. très théorique au demeurant, car les attributs/options n'y sont que référencés que par leurs id.
la mienne :
consistant à juste modifier la clause order by des requètes gérant les attributs (dans la page produit - donc on travaille en amont) et ensuite on réorganise le panier. au final, c'est cette solution que peteravu a retenu, car la plus simple à mettre en place dans l'ensemble de la boutique en gardant une homogénéité de l'affichage de l'information pour ses clients.

je te laisse le soin de lire le sujet jusqu'au bout pour te faire ton idée.


en aparté, dans oscom3, le tri du panier se résume à ces lignes dans la méthode getProducts() [osCommerce\OM\Core\Site\Shop\ShoppingCart.php]:
Code
        uasort($this->_contents, function ($a, $b) {
          if ( $a['date_added'] == $b['date_added'] ) {
            return strnatcasecmp($a['name'], $b['name']);
          }

          return ($a['date_added'] > $b['date_added']) ? -1 : 1;
        });


Le problème avec toi, c'est que tu as modifié les fondamentaux du script, en ajoutant une page custom.
En tant que dèv, je te le dis, c'est une erreur.en autre car la page produit est référencée dans pas mal de fichiers :

  • catalog\includes\application_top.php
  • catalog\includes\modules\also_purchased_products.php
  • catalog\includes\modules\boxes\bm_best_sellers.php
  • catalog\includes\modules\boxes\bm_order_history.php
  • catalog\includes\modules\boxes\bm_shopping_cart.php
  • catalog\includes\modules\boxes\bm_specials.php
  • catalog\includes\modules\boxes\bm_whats_new.php
  • catalog\includes\modules\header_tags\ht_product_title.php
  • catalog\includes\modules\new_products.php
  • catalog\includes\modules\product_listing.php
  • catalog\includes\modules\social_bookmarks\sb_digg.php
  • catalog\includes\modules\social_bookmarks\sb_facebook.php
  • catalog\includes\modules\social_bookmarks\sb_facebook_like.php
  • catalog\includes\modules\social_bookmarks\sb_google_buzz.php
  • catalog\includes\modules\social_bookmarks\sb_twitter.php
  • catalog\includes\modules\social_bookmarks\sb_twitter_button.php
  • catalog\includes\modules\upcoming_products.php
  • catalog\product_reviews.php
  • catalog\product_reviews_info.php
  • catalog\product_reviews_write.php
  • catalog\products_new.php
  • catalog\shopping_cart.php
  • catalog\specials.php
  • catalog\tell_a_friend.php





Citation (Rusti)
Petite question
Est ce que le code que j'ai mis pour l'instant et qui fonctionne est si mauvais que ça ?

Rusti


il n'y a pas lieu de donner un avis qualitatif. de toute façon, des bouts par ci par là ... huh.gif
seule une vue d'ensemble permet de le faire, et encore, ça reste à la discrétion de chacun, vu que pour chaque cas, chaque dèv proposera avec plus ou moins d'élégance et de réussite un code fonctionnel mais forcément différent.
Rusti
Bon alors en ce qui concerne la méthode de Monika et la tienne, j'ai une préférence pour la tienne qui est certes plus simple à intégré mais qui me parait aussi plus souple, encore faudrait il ne pas avoir modifié les fondamentaux.
Mais ces surtout les 2 petites phrase suivante qui me pose problème.

Citation (FoxP2 @ 30 Dec 2011, 08:10) *
Le problème avec toi, c'est que tu as modifié les fondamentaux du script, en ajoutant une page custom.
En tant que dèv, je te le dis, c'est une erreur

Faire le choix d'un bout de code plus ou moins optimisé sa peu encore passé mais faire une erreur de développement sur les fondamentaux d'un script c'est pas possible (dès fois je me demande comment je n'ai pas pu m'en apercevoir moi même).
Bref retour à la case départ, modification de mon cahier des charges et intégration de mon module de personnalisation sur la page product_info.php
Donc en réfléchissant un peu je me suis dit que je pourrait faire un peu comme la page index.php, en gros si mon produit en dans les catégories de personnalisation j'affiche uniquement le module de personnalisation sur la page product_info.php, sinon j'affiche la page product_info normal.

Du coup ma question (même si la je pense sortir complètement du sujet du post et je m'en excuse) est-ce aussi une erreur et est ce que sa ne risque pas d'être trop lourd tout en sachant que j'ai de très bon résultat sur page speed (92/100) et de bon résultat de chargement de page.

Rusti

PS : un énorme merci pour votre patience et l'aide que vous m'apporter en cette fin d'année.
PSbis : mille excuses pour avoir dévié du sujet et je comprendrais si ce commentaire doit être supprimer
Rusti
Bon alors en ce qui concerne la méthode de Monika et la tienne, j'ai une préférence pour la tienne qui est certes plus simple à intégré mais qui me parait aussi plus souple, encore faudrait il ne pas avoir modifié les fondamentaux.
Mais ces surtout les 2 petites phrase suivante qui me pose problème.

Citation (FoxP2 @ 30 Dec 2011, 08:10) *
Le problème avec toi, c'est que tu as modifié les fondamentaux du script, en ajoutant une page custom.
En tant que dèv, je te le dis, c'est une erreur

Faire le choix d'un bout de code plus ou moins optimisé sa peu encore passé mais faire une erreur de développement sur les fondamentaux d'un script c'est pas possible (dès fois je me demande comment je n'ai pas pu m'en apercevoir moi même).
Bref retour à la case départ, modification de mon cahier des charges et intégration de mon module de personnalisation sur la page product_info.php
Donc en réfléchissant un peu je me suis dit que je pourrait faire un peu comme la page index.php, en gros si mon produit en dans les catégories de personnalisation j'affiche uniquement le module de personnalisation sur la page product_info.php, sinon j'affiche la page product_info normal.

Du coup ma question (même si la je pense sortir complètement du sujet du post et je m'en excuse) est-ce aussi une erreur et est ce que sa ne risque pas d'être trop lourd tout en sachant que j'ai de très bon résultat sur page speed (92/100) et de bon résultat de chargement de page.

Rusti

PS : un énorme merci pour votre patience et l'aide que vous m'apporter en cette fin d'année.
PSbis : mille excuses pour avoir dévié du sujet et je comprendrais si ce commentaire doit être supprimer
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2024 Invision Power Services, Inc.