Jump to content

[résolu] afficher les vignettes des produits dans le boc wishlist


Recommended Posts

Bonjour,

 

quelqu'un saurait-il s'il existerait un moyen de remonter la vignettes des produits affichés dans le bloc wishlist ajouté au front ?

 

 

j'ai tenté d'ajouter cette ligne au blocwishlist.tpl, mais seul le $product.link_rewrite remonte

 

<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home')}"
height="{$homeSize.height}" width="{$homeSize.width}" alt="{$productRef.legend|escape:html:'UTF-8'}" />

 

comment faire pour récupérer l'id de l'image associé au produit, ?

je vois dans wishlist.php que la liste des produits affichés dans le cart semble être attribuée à smarty ici via la fonction getProductByIdCustomer() :

 

'wishlist_products' => ($id_wishlist == false ? false : WishList::getProductByIdCustomer($id_wishlist,
$params['cookie']->id_customer, $params['cookie']->id_lang, null, true))

 

j'imagine que la requête à la base dans getProductByIdCustomer() de wishlist.php doit être modifiée pour récuperrer les infos manquantes mais là je ne m'y connais pas assez ... donc si quelqu'un a une solution je suis preneur

 

 

merci

Link to comment
Share on other sites

merci volta|jmm,

 

je viens de tester mais rien ne remonte là non plus, j'ai mis un {$product.cover} pour être sur, mais cela ne retourne rien.

ta modification portait-elle aussi sur la wishlist ?

 

sinon je n'ai pas précisé je suis sur la 1.6.4.2 là

Link to comment
Share on other sites

Ma modification concernait la template managewishlist.tpl, sur le module fourni avec le moteur de PS 1.4.7

 

sinon je n'ai pas précisé je suis sur la 1.6.4.2 là

 

La "1.6.4.2" ... sauf erreur de ma part PS n'est en version Béta qu'à la 1.5.0.5 ... et le module Wishlist en 0.2 ... tu parles de la version de quoi ? :)

 

Sinon, je viens de comparer les fichiers managewishlist.php et blockwishlist.php, et effectivement la variable {$product.cover} n'est assigné que dans managewishlist.php.

Mais la modif de blockwishlist.php ne sera pas trop dure, il suffit de sortir, dans la méthode hookRightColumn et de l'affectation à smarty l'appel à WishList::getProductByIdCustomer ... et de s'inspirer du traitement fait dans managewishlist.php

 

Tu pourra alors utiliser {$product.cover}

Link to comment
Share on other sites

yes ! ça marche, je met le code là pour ceux que ça intéresserait

( sinon mon clavier a fourché, je voulais dire 1.4.6.2, pour la version de presta utilisée là ) :

 

 

alors dans blockWishlist.php du module blockWishlist, ( a prioris, vers la ligne 199 mais c'est peut être pas exactement celle la, il me semble avoir du changé d'autres trucs entre temps dessus ) il faut repérrer ce bout de code (l'attribution des variables smarty) :

 

 

$smarty->assign(array(
'id_wishlist' => $id_wishlist,
'isLogged' => true,
'wishlist_products' => ($id_wishlist == false ? false : WishList::getProductByIdCustomer($id_wishlist, $params['cookie']->id_customer, $params['cookie']->id_lang, null, true)),
'wishlists' => $wishlists,
'ptoken' => Tools::getToken(false)));

 

 

 

et le remplacer par le suivant récupéré et adapté de managewishlist.php ( merci VOLTA|JMM ! ) :

 

 

 


if( isSet($id_wishlist) && $id_wishlist != "") 
{
$wishlist_products = WishList::getProductByIdCustomer($id_wishlist, $params['cookie']->id_customer, $params['cookie']->id_lang);
for ($i = 0; $i < sizeof($wishlist_products); ++$i){
$obj = new Product((int)($wishlist_products[$i]['id_product']), false, (int)($params['cookie']->id_lang));
if (!Validate::isLoadedObject($obj))
continue;
else{
if ($wishlist_products[$i]['id_product_attribute'] != 0){
$combination_imgs = $obj->getCombinationImages((int)($params['cookie']->id_lang));
$wishlist_products[$i]['cover'] = $obj->id.'-'.$combination_imgs[$wishlist_products[$i]['id_product_attribute']][0]['id_image'];
}else{
$images = $obj->getImages((int)($params['cookie']->id_lang));
foreach ($images AS $k => $image)
if ($image['cover']){
$wishlist_products[$i]['cover'] = $obj->id.'-'.$image['id_image'];
break;
}
}
if (!isset($wishlist_products[$i]['cover']))
$wishlist_products[$i]['cover'] = Language::getIsoById($params['cookie']->id_lang).'-default';
}
}
$smarty->assign(array(
'id_wishlist' => $id_wishlist,
'isLogged' => true,
'wishlist_products' => $wishlist_products,
'wishlists' => $wishlists,
'ptoken' => Tools::getToken(false)));

 

}

 

il suffit ensuite d'ajouter un

 

<img class="img-bj" src="{$link->getImageLink($product.link_rewrite,$product.cover, 'home')}"  /> 

 

dans la boucle de récupération des infos de blocwishlist.tpl

 

 

 

 

 

 

mais cela ne suffit pas, en effet seules les images des produits déjà présents à l'ouverture seront affichés, pour ajouter ou enlever des produits à la volé il faut aussi modifier le code qui gère la wishlist ajax, voici les modifications à apporter :

 

dans le fichier cart.php présent dans le module blockwishlist, repérer la ligne suivante (ligne 69 chez moi):

 

$smarty->assign('products', WishList::getProductByIdCustomer($cookie->id_wishlist, $cookie->id_customer, $cookie->id_lang, null, true));

 

et la remplacer par :

 

 

$wishlist_products =  WishList::getProductByIdCustomer($cookie->id_wishlist, $cookie->id_customer, $cookie->id_lang, null, true);
for ($i = 0; $i < sizeof($wishlist_products); ++$i){
$obj = new Product((int)($wishlist_products[$i]['id_product']), false, (int)($cookie->id_lang));
if (!Validate::isLoadedObject($obj))
continue;
else{
if ($wishlist_products[$i]['id_product_attribute'] != 0){
$combination_imgs = $obj->getCombinationImages((int)($cookie->id_lang));
$wishlist_products[$i]['cover'] = $obj->id.'-'.$combination_imgs[$wishlist_products[$i]['id_product_attribute']][0]['id_image'];
}else{
$images = $obj->getImages((int)($cookie->id_lang));
foreach ($images AS $k => $image)
if ($image['cover']){
$wishlist_products[$i]['cover'] = $obj->id.'-'.$image['id_image'];
break;
}
}
if (!isset($wishlist_products[$i]['cover']))
$wishlist_products[$i]['cover'] = Language::getIsoById($cookie->id_lang).'-default';
}
}
$smarty->assign('products', $wishlist_products);

 

ensuite dans le fichier blockwishlist-ajax.tpl ajouter la ligne suivante au meme emplacement que là ou vous l'avez ajouté dans blockwishlist.tpl

 

<img class="img-bj" src="{$link->getImageLink($product.link_rewrite,$product.cover, 'home')}"  /> 

 

 

 

voila, le blockwishlist devrait désormais gérer correctement les images des produits affichés

  • Like 1
Link to comment
Share on other sites

edit - je viens d'éditer le code à modifier sur blockwishlist.php, ce dernier faisait planter le stie en retournant un fatal error dans les cas où le client ne possède aucune liste définie (si la liste par défaut à été effacée et qu'il n'en a créé aucune autre)

 

pour info tout le code passe désormais le if suivant

 

 

if( isSet($id_wishlist) && $id_wishlist != "") 
{

}

 

 

l'idéal serait alors de recréer une liste automatiquement, mais je n'en ai pas la nécessité, dans mon cas la liste est juste utilisé comme sélection de produits à mètres de coté pour plus tard, du coup j'ai désactivé toutes les fonctions avancé de liste cadeau et leur accés depuis l'espace d'administration du client (création/suppression...) , seule la liste par défaut étant alors accessible.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...