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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Affichage des attributs dans le panier
Rusti
posté 26 Dec 2011, 18:06
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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


--------------------
osCommerce v2.3
Go to the top of the page
 
chti_poupon
posté 26 Dec 2011, 19:42
Message #2


Ceinture noire OSC
Icône de groupe

Groupe : TechDev
Messages : 2757
Inscrit : 9-September 08
Lieu : Douai
Membre no 22915



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

Ce message a été modifié par chti_poupon - 26 Dec 2011, 19:43.
Go to the top of the page
 
Rusti
posté 26 Dec 2011, 20:39
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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.



--------------------
osCommerce v2.3
Go to the top of the page
 
FoxP2
posté 26 Dec 2011, 23:17
Message #4


Ceinture marron OSC
Icône de groupe

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



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)
Go to the top of the page
 
Rusti
posté 29 Dec 2011, 17:31
Message #5


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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

Ce message a été modifié par Rusti - 29 Dec 2011, 21:14.


--------------------
osCommerce v2.3
Go to the top of the page
 
chti_poupon
posté 29 Dec 2011, 18:22
Message #6


Ceinture noire OSC
Icône de groupe

Groupe : TechDev
Messages : 2757
Inscrit : 9-September 08
Lieu : Douai
Membre no 22915



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

Ce message a été modifié par chti_poupon - 29 Dec 2011, 18:27.
Go to the top of the page
 
FoxP2
posté 29 Dec 2011, 18:55
Message #7


Ceinture marron OSC
Icône de groupe

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



lorsque je lis ton autre sujet, pourquoi réinventer la roue ?

Product Attributes - Option Type Feature
Go to the top of the page
 
Rusti
posté 29 Dec 2011, 20:59
Message #8


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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



--------------------
osCommerce v2.3
Go to the top of the page
 
Rusti
posté 29 Dec 2011, 20:59
Message #9


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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

Rusti

Ce message a été modifié par Rusti - 29 Dec 2011, 21:10.


--------------------
osCommerce v2.3
Go to the top of the page
 
FoxP2
posté 30 Dec 2011, 08:10
Message #10


Ceinture marron OSC
Icône de groupe

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



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.
Go to the top of the page
 
Rusti
posté 30 Dec 2011, 12:08
Message #11


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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


--------------------
osCommerce v2.3
Go to the top of the page
 
Rusti
posté 30 Dec 2011, 12:08
Message #12


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 103
Inscrit : 11-October 10
Lieu : Villemomble
Membre no 28103



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


--------------------
osCommerce v2.3
Go to the top of the page
 

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 : 19th March 2024 - 07:39
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)