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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> ajout du prix dans la description du produit, ajout du prix dans la description du produit
jlb59226
posté 22 Mar 2017, 14:10
Message #1


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 24
Inscrit : 3-February 09
Membre no 24419



Bonjour

je cherche à ajouter dans la description de l'article de ma boutique le prix en promotion.
N'étant pas un pro du php , pour l'instant j'arrive à rien.

j'ai essayer d'ajouter simplement : <?php echo $products_price; ?> dans la Description du produit mais le prix ne s'affiche pas .
Merci d'avance

oscommerce ms2.2 RC1
Go to the top of the page
 
Bonbec
posté 22 Mar 2017, 14:24
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

C'est dans la page product_info.php que l'affichage doit se faire ?

Est-ce que dans le fichier catalog/includes/funsctions/general.php il y a la function tep_get_products_special_price ?

Si oui, alors pour récupérer le prix recherché, il faut utiliser un truc du genre :
Code
$new_price = tep_get_products_special_price($product_info['products_id'])
echo $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id']));


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
jlb59226
posté 22 Mar 2017, 14:49
Message #3


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 24
Inscrit : 3-February 09
Membre no 24419



bonjour

en fait ce que je veux faire, dans la description des articles (page product_info ) avoir le prix promo s'affichant à l'intérieur de la description de l'article .

En gros pour que le prix soit affiché lors de la recherche dans google.

Cela ne pose pas de probléme d’ailleurs si c'est manuel dans la description des articles ( ajout d'un bout de code à chaque remplissage de la description d'un article dans l'interface d'admin)

Merci
cordialement

Citation (Bonbec @ 22 Mar 2017, 14:24) *
Bonjour,

C'est dans la page product_info.php que l'affichage doit se faire ?

Est-ce que dans le fichier catalog/includes/funsctions/general.php il y a la function tep_get_products_special_price ?

Si oui, alors pour récupérer le prix recherché, il faut utiliser un truc du genre :
Code
$new_price = tep_get_products_special_price($product_info['products_id'])
echo $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id']));


Ce message a été modifié par jlb59226 - 22 Mar 2017, 14:54.
Go to the top of the page
 
Bonbec
posté 22 Mar 2017, 15:04
Message #4


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Ok, alors non c'est pas possible, le code n'est pas interprété dans la partie désignation.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
jlb59226
posté 22 Mar 2017, 15:16
Message #5


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 24
Inscrit : 3-February 09
Membre no 24419



ok merci .
j'ajouterais le prix à la main dans le descriptif , dommage

Merci pour les réponses
Go to the top of the page
 
SaphyraK
posté 22 Mar 2017, 17:04
Message #6


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



(déplacé plus bas)

Ce message a été modifié par SaphyraK - 22 Mar 2017, 18:14.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
Bonbec
posté 22 Mar 2017, 17:53
Message #7


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



@SaphyraK,

Si j'ai bien compris, c'est pour inclure le prix promotionnel dans le texte du descriptif de l'article, autrement dit l'inclure dans la valeur du champ product_description de la table TABLE_PRODUCTS_DESCRIPTION et que cela s'affiche via echo $product_info['products_description'];

En gros, cela donnerait cela :
Citation
La farine de seigle
Notre farine maison, en promotion actuellement au prix de 0.95€ le sac de 1 kg, est une farine dite « panifiable », mais pauvre en gluten mais en moindre proportion que la farine de blé. ...


OsCommerce n'accepte pas du Php dans les enregistrements en BDD.





--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
SaphyraK
posté 22 Mar 2017, 18:15
Message #8


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Citation
J'ai mis à jour mon ancien post: (donc j'ai édité l'ancien plus haut histoire de créér un UP, sans faire un UP)


Hello,

Cela devrait être possible dans l'administration avec une requête SQL custom non?

Je veux dire par là..

Créer une fonction personnalisée dans admin/includes/functions/general.php pour gérer ce cas de figure.

Code
function jlb_recuperer_prix_promotion($product_id)
           {
              // ici on effectue la requête SQL pour récupérer la promotion pour le produit (ayant comme ID: $product_id)
             $requete_sql_promotion_produit = tep_db_query("select  specials_new_products_price from " . TABLE_SPECIALS . " where  products_id = '" . (int)$product_id . "' and status");
             // ici on stocke le résultat dans une variable qui sera un tableau à 1 dimension.
             $promotion_produit = tep_db_fetch_array($requete_sql_promotion_produit);
        
             // et là on retourne le seul index du tableau qui nous intérésse à savoir: 'specials_new_products_price'
             // 'specials_new_products_price' est le NOM de la colonne SQL dans  la table des promotions (toujours dans la base de données SQL)..
              return ($promotion_produit['specials_new_products_price']);
           }




ET dans le fichier product_info.php

Code
  // on récupère le prix Hors Taxe non formaté.
           $jlb_prix_promotionnel_ht = jlb_recuperer_prix_promotion($product_info['products_id']);
           // on l'affiche avec display_price() et on utilise au travers tep_get_tax_rate() pour avoir le taux de taxation du produit.
           // afin de retourner le prix Toute Taxe Comprise:
           echo $currencies->display_price($jlb_prix_promotionnel_ht,  tep_get_tax_rate($product_info['products_tax_class_id']));



C'est pas compliqué pour l'affichage, le seul travail de recherche sera au niveau de la requête SQL pour trouver l'information.
Mais pour aider plus amplement, il faudrait vraiment que tu précises clairement ce que tu souhaites faire, car pour le frontOffice c'est possible sans mon code.
Mais si c'est pour le backOffice... c'est avec ma méthode que tu t'en sortiras.

Après si tu te sens en forme, tu peux aussi décider de créer un bouton: [Ajouter Prix Promotionnel] à côté du champ de texte du produit dans le backOffice.
(un début ci dessous):
NOTE:
{ID DU CHAMP HTML A MODIFIER} == est à remplacer par l'ID du champ HTML à modifier (si il est dynamique, génère le via PHP, si il est statique, écrit le simplement).
Code
    <input type="button" value="Ajouter Prix Promotionnel"  onclick="jlb_ajax_recuper_prix_promotion('<?php echo  strval($_GET=['product_id'])); ?>', {ID DU CHAMP HTML A MODIFIER});">
            <script type="text/javascript">
              function jlb_ajax_recuper_prix_promotion(id_produit,id_html)
               {
                 // truc habituel pour initialiser un objet AJAX:
                 // lis ça pour plus d'informations sur AJAX:  https://openclassrooms.com/courses/ajax-et-l-echange-de-donnees-en-javascript/l-objet-xmlhttprequest-1
                 var xhr = new XMLHttpRequest();
                 // on encode la chaîne contenue dans la variable (qui sert d'attribut) pour éviter la perte de caractères non ASCII.
                 var id_produit = encodeURIComponent(id_produit);
                 xhr.open("GET", "jlb_recuperer_promotion_produit.php", true);
                 xhr.send("product_id=id_produit");
                // ..etc..
                //
                // la fonction appellée par la page PHP initiée serait alors un clone de ta fonction 'jlb_recuperer_prix_promotion()':
                // mais cette fois, sans la notion de fonction
                //
                // pour récupérer le résultat compilé par ta page PHP:
                xhr.onreadystatechange = function()
                  {
                     if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
                       {
                          // et on écrit à la suite de ton champ de texte la valeur récupérée!
                          document.getElementById(id_html).value = document.getElementById(id_html).value + '. Actuellement au prix promotionnel à partir de: ' + xhr.responseText;
                       }
                  };
                 // j'ai un peu théorisé le tout, à toi de trouver comment tout emboîter, mais c'est vraiment facile.
                 // j'aurai eu le temps je t'aurai tout fait, mais voilà.. actuellement je n'en ai pas! (même pas pour moi :/)
               }


Oh.. Et le code de ta page PHP nommée 'jlb_recuperer_promotion_produit.php' ressemblerait à ça:

Code
<?php
      // ce fichier PHP est à placer à la racine de ton dossier admin.
      // si tu décides de renommer ce fichier, renommes le aussi dans la fonction javascript (plus haut)
      //  si tu décides de déplacer le fichier dans un autre dossier, effectues  en conséquence les remplacements de localisation des require_once  ci-dessous pour adapter à la nouvelle localisation !
      
      // Utilisation d'un header pour spécifier le type de contenu de la page. Ici, il s'agit juste de texte brut (text/plain).
      // Parfois c'est pas utile quand par exemple tu gères des resources et non du texte, ici on retourne du texte.
      // Donc l'exemple d'AlsaCréation convient très bien.
      header("Content-Type: text/plain");
      
      $product_id = (isset($_GET["id_produit"])) ? $_GET["id_produit"] : NULL;
      
      // OUBLIES PAS D'INCLURE AVEC require_once() CHACUN DES FICHIERS QUI CONTIENT AU MOINS 1 FOIS LES DEPENDANCES OSCOMMERCE.
      // SINON LES FONCTIONS COMME:
      // tep_db_query()
      // tep_db_fetch_array()
      // objet comme Currencies
      // Comme je l'ai donc dit..
      // on inclue quelques fichiers et fonctions de osCommerce compte-tenu du fait que comme ce fichier est appellé par AJAX,
      // c'est donc HORS de la page appellante
      // que cette page est appellée, ainsi, toute les constantes de langues ou de OSCommerce n'y sont pas chargée
     //
      require_once('../includes/configure.php');
      require_once('../includes/functions/database.php');    
      // on testes la connexion ici:
     tep_db_connect() or die('Impossible de continuer à récupérer le prix  promotionnel: Une erreur au niveau MySQL. -&gt; impossible de se  connecter &agrave; la base de donn&eacute;es..');
      require_once('../includes/filenames.php');
      require_once('../includes/database_tables.php');    
      require_once('../includes/functions/general.php');
      require_once('../includes/classes/currencies.php');
      
      if ($product_id) {
          // on peut travailler avec l'ID du produit, car il est dans l'attribut reçu !
              // ici on effectue la requête SQL pour récupérer la promotion pour le produit (ayant comme ID: $product_id)
               $requete_sql_promotion_produit = tep_db_query("select  specials_new_products_price from " . TABLE_SPECIALS . " where  products_id = '" . (int)$product_id . "' and status");
              // ici on stocke le résultat dans une variable qui sera un tableau à 1 dimension.
              $promotion_produit = tep_db_fetch_array($requete_sql_promotion_produit);
      
              // et là on retourne le seul index du tableau qui nous intérésse à savoir: 'specials_new_products_price'
               // 'specials_new_products_price' est le NOM de la colonne SQL  dans la table des promotions (toujours dans la base de données SQL)..
              // on récupère ainsi le prix Hors Taxe non formaté.
              $jlb_prix_promotionnel_ht = $promotion_produit['specials_new_products_price'];
               // on l'affiche avec display_price() et on utilise au travers  tep_get_tax_rate() pour avoir le taux de taxation du produit.
              // afin de retourner le prix Toute Taxe Comprise:
               // on fait déjà un appel à la classe currencies de OSCOMMERCE  afin de créér un objet currencies dans la variable $monnaies !
              $monnaies = new currencies();
              echo $monnaies->display_price($jlb_prix_promotionnel_ht, tep_get_tax_rate($product_info['products_tax_class_id']));
      } else {
          // on ne fait rien car on a pas trouvé l'ID de produit dans l'attribut reçu !
      }
      ?>


Voilà, bon courage (et de rien)

EDIT: j'ai ajouté quelques petites précisions et corrigé des erreurs de typo !

Ce message a été modifié par SaphyraK - 22 Mar 2017, 18:30.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
SaphyraK
posté 22 Mar 2017, 18:18
Message #9


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Citation (Bonbec @ 22 Mar 2017, 17:53) *
@SaphyraK,

Si j'ai bien compris, c'est pour inclure le prix promotionnel dans le texte du descriptif de l'article, autrement dit l'inclure dans la valeur du champ product_description de la table TABLE_PRODUCTS_DESCRIPTION et que cela s'affiche via echo $product_info['products_description'];

En gros, cela donnerait cela :
Citation
La farine de seigle
Notre farine maison, en promotion actuellement au prix de 0.95€ le sac de 1 kg, est une farine dite « panifiable », mais pauvre en gluten mais en moindre proportion que la farine de blé. ...


OsCommerce n'accepte pas du Php dans les enregistrements en BDD.


Donc j'avais bien compris.

D'où la solution que j'ai donné, certe.. c'est un poil compliqué si tu connaît pas le PHP @jlb59226 mais tout est possible à qui s'en donne les moyens smile.gif

@oscommerce: coucou smile.gif

Ce message a été modifié par SaphyraK - 22 Mar 2017, 18:31.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
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 : 22nd November 2017 - 17:37
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)