[Résolu] Qtpro - bugs

Messagepar numerosix » Ven 22 Fév 2008, 21:50

Bonjour,

Ca fait quelques jours que je bataille avec qtpro, version oscss.

Coté admin, tout a l'air de fonctionner normalement.

Cote Public, deux petits soucis :

D'abord, je ne parviens pas a obtenir un menu single dropdown. Rien d'autre que le multiple dropdown, ce qui est ennuyeux pour les attributs multiples.
Et, plus genant, si la page product_listing restreint effectivement l'affichage des attributs, il n'en est pas de meme de la page product_info.

Est-ce que quelqu'un aurait un debut de solution a me proposer ? je coince un peu la ...

Merci d'avance :-)
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar oscim » Sam 23 Fév 2008, 11:31

Dernière édition par oscim le Sam 23 Fév 2008, 11:33, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar numerosix » Sam 23 Fév 2008, 14:49

Bonjour oscim, merci de prendre le temps de me repondre.

J'ai utilise cette version:
http://forums.oscss.org/viewtopic.php?id=734

J'ai installé le plugin après l'installation d'oscss

Et les pblms sont les suivants:

pas de menu autre que le multiple_dropdown (meme si le choix se pose dans l'admin)

La page product_info ne tient pas compte de la disponibilite ou non des attributs

le bouton "acheter maintenant" de la page product_listing mene a un panier... vide
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar oscim » Sam 23 Fév 2008, 15:31

La version du wiki, doit êtres corriger.

J'ai effectué la même manip le moi dernier. un certain nombre d'erreur ...

Si le wiki as des erreurs, ou non. ???

Si un pbs persiste dis le moi. !!

Pour le modif du dropdown, aprés ta remarque j'ai regardé, et effectivement , de mon coté non plus ca n'as pas l'air tres fonctionnel.

Il faut regarder du coté de general.php du front a mon avis. J'ai l'impression qu l'une des focntion gerant cette prise en charge ne passe pas.
Dernière édition par oscim le Sam 23 Fév 2008, 15:32, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar numerosix » Sam 23 Fév 2008, 16:52

Effectivement, il semble y avoir des erreurs dans le wiki.

"/includes/application_top.php" > rien n'est indiqué

et la modif dans order.php (différente de celle d'enguer) me renvoie une erreur.


Concernant les attributs sur la page produit, j'ai trouvé une solution qui me convient bien et resout mes problèmes (partiellement):

includes>modukes>product_listing.php

J'ai enlevé la contrib qtpro

de toute facon, je veux les attributs sur la fiche produit, par sur le listing.

Et donc, pour
includes > content > product_info.php

J'ai remplacé ca :

Code: Tout sélectionner
/* debut ancien code

 $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$_GET['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
   
    while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
      $products_options_array = array();
      $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$_GET['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");

      while ($products_options = tep_db_fetch_array($products_options_query)) {
        $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);

        if ($products_options['options_values_price'] != '0') {
          $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
        }

      }

        if (isset($cart->contents[$_GET['products_id']]['attributes'][$products_options_name['products_options_id']])) {
          $selected_attribute = $cart->contents[$_GET['products_id']]['attributes'][$products_options_name['products_options_id']];
        } else {
          $selected_attribute = false;
        }
?>
      <p>
        <label for="product_option"><?php echo $products_options_name['products_options_name'] . ':'; ?></label>
        <?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', 'product_option',$products_options_array, $selected_attribute); ?>
      </p>

<?php
      }
?>

fin ancien code */

par ça :
Code: Tout sélectionner
    /* QT PRO */
    $products_id = (int)$_GET['products_id'];
    require_once(DIR_WS_CLASSES . 'pad_' . multiple_dropdowns_productlist . '.php');
    $class = 'pad_' . multiple_dropdowns_productlist;
   $pad = new $class($products_id);
    $lc_text =  $pad->draw().'<input type="hidden" name="products_id" value="'.$listing['products_id'].'" />';
    echo $lc_text;
    /* Fin QT PRO */

Ca m'affiche les attributs, uniquement ceux qui sont disponibles, pas les autres, et uniquement sur ma fiche prodit.

Les attributs sont bien reportés dans le panier.

subsistent deux problemes :

le bouton achat immediat du listing renvoie sur un panier vide lorsque les produits n'ont pas d'attributs

Le produit est déclaré hors stock lorsque la commande dépasse la quantité totale, il n'est pas tenu compte de la quantité propre à chaque attribut.

Je vais remettre les mains dans le cambouis une partie du week ende, et essayer de resoudre ca tout seul.

Cela dit, le peu que je connais du php ne me permet pas de tout comprendre au code, loin de la.

Et c'est bien dommage...

Pour le dropdown, je vais regarder du cote de general.php. Mais j'ai bien peur de ne pas y comprendre grand chose ... :-/
Dernière édition par numerosix le Dim 12 Oct 2008, 17:30, édité 1 fois.
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar numerosix » Dim 24 Fév 2008, 20:55

Au secours!!!

Dans le panier le message "out_of_stock" ne s'affiche pas quand il devrait.

Par exemple un t shirt, l'attribut taille avec les options "small, medium, et large"

Il y en a 10 de chaque, soit 30 en tout.

Eh bien je peux en commander 30 small, 30 medium et 30 large, sans messgae d'alerte.

Je pense que ca vient de la fonction "tep_get_products_stock" dans includes>functions>general.php, où sizeof($attributes) renvoie 0

Mais la c'est trop compliqué pour moi. Je ne m'en sors pas.

Quelqu'un peut m'aider ???
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar numerosix » Lun 25 Fév 2008, 03:58

Bonsoir tout le monde.

Fatigué mais soulagé.

J'ai trouvé une solution qui me parait pas mal pour checker au niveau du panier si le nombre d'articles demandés dépasse ou non le nombre d'articles disponibles avec le ou les attributs demandés.

Soyez indulgents, c'est du bricolage

dans include>content>shopping_cart.php, j'ai remplacé (ligne115)
Code: Tout sélectionner
// Push all attributes information in an array
      if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
        while (list($option, $value) = each($products[$i]['attributes'])) {

      echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);

      $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
                                      from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                      where pa.products_id = '" . $products[$i]['id'] . "'
                                       and pa.options_id = '" . $option . "'
                                       and pa.options_id = popt.products_options_id
                                       and pa.options_values_id = '" . $value . "'
                                       and pa.options_values_id = poval.products_options_values_id
                                       and popt.language_id = '" . $languages_id . "'
                                       and poval.language_id = '" . $languages_id . "'");
          $attributes_values = tep_db_fetch_array($attributes);

          $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
          $products[$i][$option]['options_values_id'] = $value;
          $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
          $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
          $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
        }

par ca
Code: Tout sélectionner
// Push all attributes information in an array
        /*  Debut Part 1 - On initialise l'intitule des attributs, et l'etat du stock */
        $intitule_attributs="";
        $etat_stock="ok";
        /* Fin Part - 1 */
       
      if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {

        while (list($option, $value) = each($products[$i]['attributes'])) {
      echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);

      $attributes = tep_db_query("select popt.products_options_name, products_options_id, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
                                      from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                      where pa.products_id = '" . $products[$i]['id'] . "'
                                       and pa.options_id = '" . $option . "'
                                       and pa.options_id = popt.products_options_id
                                       and pa.options_values_id = '" . $value . "'
                                       and pa.options_values_id = poval.products_options_values_id
                                       and popt.language_id = '" . $languages_id . "'
                                       and poval.language_id = '" . $languages_id . "'");
          $attributes_values = tep_db_fetch_array($attributes);

          $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
          $products[$i][$option]['options_values_id'] = $value;
          $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
          $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
          $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
         
            /* Ma Contrib - Debut Part 2 - on verifie le stock pour chaque attribut */
            $intitule_attributs=",".$attributes_values['products_options_id']."-".$products[$i][$option]['options_values_id'].$intitule_attributs;
               
            if(sizeof($products[$i][$option])>0){
                $valeur_attribut=$attributes_values['products_options_id'];
                $valeur_option=$products[$i][$option]['options_values_id'];
               
                // on verifie qu'il y a un suivi du stock
                $demande="SELECT products_options_track_stock FROM ".TABLE_PRODUCTS_OPTIONS." WHERE products_options_id='".$valeur_attribut."' AND language_id='1'";
                $resultat=mysql_query($demande);
                $ligne_resultat=mysql_fetch_assoc($resultat);
                $suivi_stock= $ligne_resultat['products_options_track_stock'];       
            }           
        }                               
        if($suivi_stock==1){
            $products_id= $products[$i]['id'];
            $intitule_attributs=substr($intitule_attributs,1);
            $products_stock_attributes=$valeur_attribut."-".$valeur_option;
            $demande="SELECT products_stock_quantity FROM ".TABLE_PRODUCTS_STOCK." WHERE products_stock_attributes='".$intitule_attributs."' AND products_id='$products_id'";
            $resultat=mysql_query($demande);
            $ligne_resultat=mysql_fetch_assoc($resultat);
            $nombre_resultats=mysql_num_rows($resultat);
            $stock_quantity=intval($ligne_resultat['products_stock_quantity']);
            $quantite_demandee=intval($products[$i]['quantity']);
 
            if($stock_quantity==0){
            $etat_stock="no_stock";
            }
            else if($quantite_demandee>$stock_quantity){
            $etat_stock="out_of_stock";
            }
            else{
                $etat_stock="ok";
            }
           
            /* Fin Part 2 */
        }

Plus loin, je mets ca :
Code: Tout sélectionner
   <?php /* debut Part 3 */ ?>
<?php
if($etat_stock=="no_stock"){
     echo '<li class="alertStock">'.ATTRIBUTES_NO_STOCK.'</li>';
     }
else if ($etat_stock=="out_of_stock"){
    echo '<li class="alertStock">'.sprintf(ATTRIBUTES_OUT_OF_STOCK,$stock_quantity).'</li>';
} ?>
  <?php /*  Fin Part 3 */ ?>

Et dans includes>languages>french>shopping_cart.php, j'ajoute ca:

Code: Tout sélectionner
define('ATTRIBUTES_NO_STOCK', 'Cet article n'est plus disponible avec ces caract&eacute;ristiques pr&eacute;cises. Merci de changer votre choix.');
define('ATTRIBUTES_OUT_OF_STOCK', 'Cet article n'est plus disponible avec ces caract&eacute;ristiques pr&eacute;cises dans cette quantit&eacute;. Quantit&eacute; disponible :<strong>  %d </strong>');

C'est bricolé comme ca peut, il ya surement moyen de faire plus propre.
Mais ca a l'air de marcher, je suis bien content !! :)

19-03-2008 : Il manquait le product id dans ma requete, je viens de l'ajouter.
Dernière édition par numerosix le Jeu 23 Oct 2008, 12:38, édité 1 fois.
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar oscim » Lun 25 Fév 2008, 11:24

Pas, mal !

Une petite retouche su wiki serait la bienvenu alors ! tu t'en croix capables ?
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar numerosix » Lun 25 Fév 2008, 14:45

Une petite retouche su wiki serait la bienvenu alors !

Pour le wiki qtpro, je crois qu'il faudrait le revoir en profondeur

Cela dit, le wiki concerne une installation de qt pro avant installation de oscss.

Je me suis plutot référé au travail d'enguer ici :
http://forums.oscss.org/viewtopic.php?id=734

Alors je ne sais pas trop comment on peut relier tout ca...
Mais je veux bien le faire si on m'explique quoi, ou, et comment...
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar oscim » Lun 25 Fév 2008, 21:05

C'est simple.

le wiki que je suis entrain de rediger est basé sur la même demarche que toi. mais pas terminé !

Donc pour participer, il te suffit de creer un compte sur le wiki.

Si l'interface te pose soucis, dis le moi.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar numerosix » Lun 25 Fév 2008, 23:28

Je veux bien participer.

J'ai créé un compte wiki.

Qu'est-ce que je dois faire, maintenant ?
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar oscim » Mar 26 Fév 2008, 12:06

Maintenant tu as la possibilité d'editer les pages?

Donc aller sur la page du plugin Qtpro.

De la, click sur editer, et modfi du contenu.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar numerosix » Mar 26 Fév 2008, 13:45

Lorsque je clique sur "afficher le texte source", j'ai
Cette page est en lecture seule. Vous ne pouvez pas modifier le texte source. Contactez votre administrateur si vous souhaitez l'éditer.
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar numerosix » Mar 26 Fév 2008, 13:47

Oups! Au temps pour moi. C'est juste que j'etais pas connecté...
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar numerosix » Mar 26 Fév 2008, 14:01

OK ca marche, j'ai ajouté le contenu manquant dans "categories.php" avant modif.

Cela dit ca ne me semble pas hyper clair.
Est-ce qu'il s'agit d'une install de qt pro avant ou apres install de oscss ?
(les downloads peuvent preter a confusion ...)
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar oscim » Mar 26 Fév 2008, 20:33

Merci !

En fait il s'agit scrupuleusement de l'install repris dur le forum, mais avec les différente corrections.

Les tar.gz que j'ai fait sont à copier avant l'install. j'ai modifier le setup.

MAis si tu dis que c'est pas clair, il faut qu'on le rende clair.

En l'ecrivant ca me parraissait clair. mais quand on n'as le nez dedans.
Dernière édition par oscim le Mar 26 Fév 2008, 20:35, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Mer 22 Oct 2008, 18:20

numerosix a écrit:Plus loin, je mets ca :
Code: Tout sélectionner
   <?php /* debut Part 3 */ ?>
<?php
if($etat_stock=="no_stock"){
     echo '<li class="alertStock">'.ATTRIBUTES_NO_STOCK.'</li>';
     }
else if ($etat_stock=="out_of_stock"){
    echo '<li class="alertStock">'.sprintf(ATTRIBUTES_OUT_OF_STOCK,$stock_quantity).'</li>';
} ?>
  <?php /*  Fin Part 3 */ ?>


"Plus loin" où exactement ?
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar numerosix » Jeu 23 Oct 2008, 12:36

Bonjour à toi aussi, Cynic.

"plus loin" la ou je veux qu'apparaisse l'alerte eventuelle, si on depasse la qté autorisée pour l'attribut en question.

Je l'ai mis entre
Code: Tout sélectionner
  <li class="cartName"><?php echo $products_name ;?></li>

et
Code: Tout sélectionner
  <li class="cartQty">

, mais ca n'a pas grande importance.
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar numerosix » Jeu 23 Oct 2008, 12:42

D'autre part, je crois bien qu'il y avait une erreur dans le code que je vous propose plus haut. Je viens de la corriger.
Cela dit, ca reste une version bêta un peu bricolée. Je ne garantis pas le fonctionnement.
Si ca ne marche pas correctement, faites le moi savoir, j'essaierai de comprendre d'ou ca vient.
Et si un vrai développeur veut se mettre sur le coup et faire mieux que moi, il ne faut pas hésiter!
numerosix
Membre actif
 
Messages: 22
Inscription: Ven 11 Jan 2008, 17:27

Messagepar cynic- » Jeu 23 Oct 2008, 12:56

... logiquement, ton code comportant des balises <li>, on le place dans la (seule) liste non-ordonnée de la page, ce qui donne ceci :

Code: Tout sélectionner
<ul>
  <li class="cartName"><?php echo $products_name ;?></li>

 <li class="cartQty"><?php
   if(AJAX_CART_MODE == 'true') {
      echo tep_draw_input_field('cart_quantity[]','cartQty'.$i, $products[$i]['quantity'], 'onkeyup="changecartqty('.$i.')"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']) ;
   } else {
    echo MY_CART_QTY .' '. tep_draw_input_field('cart_quantity[]','cartQty', $products[$i]['quantity']) . tep_draw_hidden_field('products_id[]', $products[$i]['id']) ;
   }
   echo ' ' .MY_CART_EX ;
?></li>
 <li id="ajaxcartPrice<?php echo $i; ?>" class="cartPrice"><?php echo $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) ;?></li>
 
  <?php /* debut Part 3 */

if ($etat_stock=="no_stock") {
     echo '<li class="alertStock">'. ATTRIBUTES_NO_STOCK .'</li>';
     }
else if ($etat_stock=="out_of_stock"){
    echo '<li class="alertStock">' . sprintf(ATTRIBUTES_OUT_OF_STOCK, $stock_quantity) . '</li>';
}  /*  Fin Part 3 */
?>

</ul>

Mais pour l'instant sans résultat. Je vais bien finir par trouver (ça fonctionnait très bien la 1ère fois où je l'ai fait) :)
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Suivante

Retourner vers Plugin

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron