Comme toutes les premières fois, ça donne toujours un sentiment de puissance absolue .
Sérieusement je crois avoir remonté sur ce forum il y a quelques jours un petit soucis que j'avais rencontré sur ma boutique. Voici mon problème tel qu'il était :
. j'ai une page affichant un module WWStore Front dans lequel je n'ai que les nouveaux produits, la page de détails du produit pointe sur la seconde page qui suit,
. j'ai une seconde page qui se charge d'afficher le détail de tous mes produits avec un WWStore Menu (pour naviguer) et WWStore Front pour l'affichage du catalogue et du détail des produits.
. j'ai défini un texte de présentation pour mes catégories
. lorsque je navigue parmi mes catégories et mes produits à partir du WWStore Menu de ma seconde page aucun soucis, j'accède au détail d'un produit et j'ai au dessus de mon détail de produit le texte correspondant à la catégorie du produit
. par contre lorsque j'accède au détail de mon produit directement à partir du module WWStore Front que j'ai sur ma première page, je n'avais pas le texte lié à ma catégorie !!
A l'époque, Gilles m'avait conseillé de vérifié que la balise [MESSAGE] était bien présente dans mon template. Elle n'y était pas et pour cause elle est présente dans le template de mon catalogue (normal). Donc pourquoi cela ne fonctionne-t-il pas ?
Le problème provient du fait que lorsque l'on accède en direct au produit, le catalogue ne connais pas la catégorie et ne peux donc pas affiché le texte qui lui est attaché.
Pour Gilles (et ceux que cela interesse), j'ai modifié le Page_Load de Catalog.ascx, on chargeait les infos de la catégorie avant le produit hors dans mon cas on connait le produit avant de connaitre la catégorie. Voici le code tel qu'il était :
if(catalogNav.CategoryID != Null.NullInteger)
{
CategoryController categoryController = new CategoryController();
categoryInfo = categoryController.GetCategory(catalogNav.CategoryID);
}
if(catalogNav.ProductID != Null.NullInteger)
{
ProductController productController = new ProductController();
productInfo = productController.GetProduct(catalogNav.ProductID);
}
Et le voici tel que je l'ai modifié :
if(catalogNav.ProductID != Null.NullInteger)
{
ProductController productController = new ProductController();
productInfo = productController.GetProduct(catalogNav.ProductID);
catalogNav.CategoryID = productInfo.CategoryID;
}
if(catalogNav.CategoryID != Null.NullInteger)
{
CategoryController categoryController = new CategoryController();
categoryInfo = categoryController.GetCategory(catalogNav.CategoryID);
}
On notera que je récupère l'ID de la catégorie à partir des infos du produit (ce qui me semble ma foi logique).
Des effets de bords en perspectives ?