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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> rendre visible produit stock épuisé
gaet
posté 19 Mar 2013, 11:44
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 122
Inscrit : 23-July 09
Lieu : Aveyron
Membre no 25830



L'idée étant de garder les produits indisponibles non supprimé en ligne mais non présent sur le site (catégories, fabriquant, recherche).
Ils seront donc trouvable que par liens externes afin d'éviter les 404 ou Produit non trouvé !
Bien entendu il faudrait que le bouton acheter ne soit pas présent.
Ce sujet a été abordé ici mais je n'ai pas trouvé la solution : http://www.oscommerce-fr.info/forum/index....showtopic=65948


--------------------
OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
Go to the top of the page
 
Havock
posté 19 Mar 2013, 12:52
Message #2


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 912
Inscrit : 4-February 04
Membre no 1926



Salut gaet.

Quand tu visites le catalogue (catalogue, recherche, fabricant) tu fais des tests sur le champ products_status de la table products pour voir si tu dois afficher tes produits. Si products_status est à 1 on affiche, sinon on cache. Donc de ce coté tu n'a rien à faire sinon passer ton produit en inactif coté admin.

En ce qui concerne la page product_info c'est assez simple.

(Je te met le code de la 2.31, mais le principe est le même pour les autres versions) Tu as un test en début de page pour voir si le produit est actif :

Code
$product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_check = tep_db_fetch_array($product_check_query);
...
if ($product_check['total'] < 1) {


En fonction du résultat de ce test tu affiches la page produit ou une page avec un message.

Tout ce que tu as à faire c'est compléter ce test.
Tu ajoutes une requête pour voir si la produit est bien dans la base, mais inactif :

Code
$product_checkin_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '0' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_checkin = tep_db_fetch_array($product_checkin_query);


Maintenant tu modifie le test

Code
if ($product_check['total'] < 1) {


pour tenir compte des deux infos

Code
if (($product_check['total'] < 1) AND ($product_checkin['total'] < 1)) { // Le produit n'est pas dans la base (il n'est ni actif, ni inactif); on balance la page produit non trouvé
...
} else { // Le produit est dans la base mais actif ou inactif; on balance le reste du code de la page product_info
...


Il reste juste à ajouter un test au niveau du bouton Acheter pour ne l'afficher que si le produit est actif :
Code
if ($product_check['total'] > 0) { // Le produit est actif
// On met le code du bouton
}



Voila ; c'est en gros le principe


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
gaet
posté 19 Mar 2013, 13:52
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 122
Inscrit : 23-July 09
Lieu : Aveyron
Membre no 25830



Merci pour ta réponse Hanvock.
Donc pour résumer aprés
Code
  $product_check = tep_db_fetch_array($product_check_query);

je rajoute
Code
$product_checkin_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '0' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_checkin = tep_db_fetch_array($product_checkin_query);

Ensuite je remplace
Code
if ($product_check['total'] < 1) {
par
Code
if (($product_check['total'] < 1) AND ($product_checkin['total'] < 1)) {

Et aprés il faut modifier le code pour l'affichage du bouton.

Ce message a été modifié par gaet - 19 Mar 2013, 17:51.


--------------------
OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
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 : 28th March 2024 - 11:19
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)