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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Un product_listing différent pour une catégorie
filip59
posté 20 Mar 2009, 14:03
Message #1


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 9
Inscrit : 17-March 09
Lieu : Nord
Membre no 24795



Bonjour à tous,

Je cherche à faire une liste différente de produit pour uniquement une catégorie,sans installer une nouvelle contribution.

ça devrait se passer dans catalog/includes/modules/product_listing.php

et certainement ailleurs...


pour l'instant j'ai coder comme ceci au debut

Citation
case 'PRODUCT_LIST_PRICE':
if ($cPath!=$cPathAuction){
$lc_text = TABLE_HEADING_PRICE;
$lc_align = 'right';
} else {
$lc_text = TABLE_HEADING_PRICE;
$lc_align = 'right';
}
break;



puis au milieu:

Citation
case 'PRODUCT_LIST_PRICE':

if ($cPath!=$cPathAuction){
$lc_align = 'right';
if (tep_not_null($listing['specials_new_products_price'])) {
$lc_text = '&nbsp;<s>' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s>&nbsp;&nbsp;<span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>&nbsp;';
} else {
$lc_text = '&nbsp;' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '&nbsp;';
}
} else {
$lc_align = 'right';
$lc_text = LISTING_DEP_PRIX_AUCTION .' <b>' .$currencies->display_price($listing['auctions_starting_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</b><br>'.LISTING_PRIX_AUCTION.' <font color=RED><b>'. $currencies->display_price($listing['auctions_max'], tep_get_tax_rate($listing['products_tax_class_id'])) .'</font> - <font color=RED>' .$listing['auctions_nb']. LISTING_NB_AUCTION . '</b></font><br>'.LISTING_FIN_AUCTION.' <b>' . date("d/m/Y \à H:i",strtotime($listing['expires_date'])).'</b>';
}

break;



alors ca fonctionne pour ma catégorie 192 , mais aussi pour advance_search (la liste de la recherche par la box search) et ca je voudrais quelle ne soit pas modifier.

merci



Go to the top of the page
 
kardichca
posté 6 May 2009, 07:17
Message #2


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 3
Inscrit : 22-November 07
Membre no 19834



Bonjour,

Pour ma part, avec une catégorie de produits spécifique à mettre en ligne, j'ai crée un 2eme product listing adapté et déclaré dans le fichier filename.
Ensuite sur l'index en bas de fichier, je précise la catégorie (ici 21) concernée par ceci :

if ($current_category_id == '21' )
echo
include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING1);
else
include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING);

Je ne réussi pas à coder pour les sous_cat dépendantes de cette catégorie, après plusieurs essais je sèche sur la requète.
Si quelqu'un à une idée, je suis preneur de conseils. merci.


--------------------
OSC MS2
Go to the top of the page
 
NoZic
posté 6 May 2009, 09:20
Message #3


Ceinture noire OSC
Icône de groupe

Groupe : Membres
Messages : 2871
Inscrit : 27-June 07
Lieu : Elancourt (78)
Membre no 18127



Bonjour,

Citation
alors ca fonctionne pour ma catégorie 192 , mais aussi pour advance_search
Bah faut juste rajouter un test du nom du fichier qui exécute le script (ou celui du referrer, ça dépend ce que renvoie le nom du fichier, ça risque d'être products_listing.php), si c'est index.php alors faire ton listing sinon faire celui d'origine. D'ailleurs tu ne devrais pas utiliser le $cPath comme référence mais plus $current_category_id comme le propose kardichca. Le problème de la variable $cPath c'est qu'elle n'est pas définie quand tu es dans une catégorie contenant directement des produits. Donc je supppose que ta catégorie 192 contient des catégories et pas des produits.

Citation
Je ne réussi pas à coder pour les sous_cat dépendantes de cette catégorie, après plusieurs essais je sèche sur la requète
Faudrait plus de code car là tu montres comment faire la différence pour utiliser le bon listing, mais pas le code du listing ni surtout de la requête avant (oui car la requête qui sera exécutée dans products_listing.php est générée avant dans index.php. Mais normalement le listing affiche déjà les produits inhérents aux sous-catégories de la catégorie courante. Je comprend pas trop ton problème du coup.


--------------------
"Les solutions existent toujours depuis longtemps, il suffit de les trouver."
Go to the top of the page
 
kardichca
posté 6 May 2009, 10:56
Message #4


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 3
Inscrit : 22-November 07
Membre no 19834



bonjour NoZic et merci pour ta réponse

Pour etre un peu plus clair, voilà ce que j'arrive à faire :
Si une categorie ne contient que des produits (pas de sous cat), j'affiche un product listing dédié que j'appelle depuis l'index.

...et pas faire :
Si une cette categorie contient des sous catégories, mon listing dédié est ignoré.
Ce que je n'arrive pas à faire car "limite en php" c'est rediriger cat et surtout sous_cat depuis l'index vers le deuxieme product listing.

if ($current_category_id == '21' ) // pour rediriger vers listing1 par exemple un Cpath 21_42 c'est là le soucis.
echo
include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING1);
else
include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING);





--------------------
OSC MS2
Go to the top of the page
 
NoZic
posté 6 May 2009, 11:20
Message #5


Ceinture noire OSC
Icône de groupe

Groupe : Membres
Messages : 2871
Inscrit : 27-June 07
Lieu : Elancourt (78)
Membre no 18127



index.php est divisée en trois parties distinctes (faudrait le mettre dans la FaQ ça, j'en ai marre de le taper happy.gif ) :
Code
  if ($category_depth == 'nested') {
    ... ici tu es dans une catégorie contenant une autre catégorie
  } elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
    ... ici tu es sur un fabriquant ou dans une catégorie contenant des produits (donc pas de catégories)
  } else { // default page
    ... ici c'est la page d'accueil
  }

Je suppose donc que tu n'as fait la modif' que dans la deuxième partie de la page et pas dans la première. D'ailleurs tu remarqueras que le listing n'est appelé qu'une fois par défaut, dans la partie "catégorie contenant des produits" donc la deuxième. Il faudrait juste rajouter le code qui l'affiche dans la première partie (euh... non en fait, il faudra rajouter ce qui construit la requête du $filterlist_sql aussi...).

Bon courage

[EDIT] oublie cette phrase :
Citation
Mais normalement le listing affiche déjà les produits inhérents aux sous-catégories de la catégorie courante. Je comprend pas trop ton problème du coup.
J'étais à la rue quand j'ai tapé ça, c'est les nouveaux produits qui tapent dans les sous-catégories, pas le listing.

Ce message a été modifié par NoZic - 6 May 2009, 11:27.


--------------------
"Les solutions existent toujours depuis longtemps, il suffit de les trouver."
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 June 2013 - 03:28
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)