ZenProduction Posted July 5, 2017 Share Posted July 5, 2017 Bonjour à tous Je suis photographe et je créé actuellement un espace boutique, pour pouvoir vendre mes photos. Une cliente m'a soumis une idée, qui, je trouve, est très intéressante mais je ne sais pas si c'est faisable, juste en changeant quelques codes... L'idée serait, dans la liste de produits (photos), de marquer les photos se trouvant déjà dans le panier. Le plus de ce principe serait d'aider le client à s'y retrouver rapidement dans cette liste, surtout si elle souhaite commander plusieurs photos... Je me doute qu'au minimum, des codes seraient à changer Mais est ce que cela peut uniquement se faire dans les fichiers tpl ? Merci à vous Manu Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 Version exacte de ton Prestashop? Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 Pardon pour l'oubli Prestashop v1.6.1.0 Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 C'est possible. Attention, cela peux avoir un impact important sur les performances si tu as beaucoup de produits par page (product-list.tpl): {if $cart->constainsProduct($product['id_product']) > 0} {* ici ton code pour marquer *} {/if} Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 Super ! Merci doekia pour ton retour et ta rapidité Je vais tester cela et te tiens au courant ! Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 Malheureusement cela ne fonctionne pas... :/ Quand j'insère ce code adapté, la page perd tout le css et ne m'affiche qu'un produit (alors que je n'ai rien encore dans le panier...) J'ai tenté de l'insérer à différents endroits, mais j'ai toujours le même souci d'affichage :/ Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 Je vais tenter autre chose Et je m'en excuse, j'avais oublié de préciser que les produits concernés ont chacun, des attributs Ce qui a surement faussé ton aide Désolé ! Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 Ok l'attribut tu peux le passer à la fonction (second paramètre), mais si ton css part en boule et que la boucle s'arrête c'est que tu as écris un erreur de syntaxe quelque part Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 (edited) Bon, je pense que je me plante complètement dans mon code... :/ Voici ce que j'ai tenté de faire ... : {if $cart->containsProduct($product['id_product'], $product['id_product_attribute'])>0} <div class="alert alert-info">{l s='panier'}</div>{/if} C'est sûr ! il y a une (ou plusieurs) erreur de code, mais plus je modifie, plus cela m'embrouille ... :/ Avec ce code, ma page devient blanche... Edited July 5, 2017 by ZenProduction (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 (edited) essaie: {if isset($cart) && $cart->containsProduct($product['id_product'], $product['id_product_attribute'])>0} <div class="alert alert-info">{l s='panier'}</div> {/if} Si ça ne crash plus c'est que le cart n'est pas déclaré dans cette section smarty Edited July 5, 2017 by doekia (see edit history) Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 Alors ... La page est revenue a un affichage normal ! ouf Mais le message ne s'affiche pas, malgré avoir mis le produit dans le panier ... Serait il possible de savoir "comment déclarer le cart dans la section smarty" stp ? Bon j'avoue que rien que le terme, je comprend pas grand chose :/ Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 (edited) Donc, maintenant avant la ligne foreach {foreach from=$products item=product name=products} Ajoute ceci {if !isset($cart)}{assign var='cart' value=Context::getContext()->cart scope='global'}{/if} Edited July 5, 2017 by doekia (see edit history) Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 J'ai tout bien mis comme tu m'as indiqué Doekia Mais le message ne s'affiche toujours pas :/ Je me permet de laisse le bout de code, où j'ai fais les modifications {*define numbers of product per line in other page for tablet*} {assign var='nbLi' value=$products|@count} {math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines} {math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet} <!-- Products list --> <ul{if isset($id) && $id} id="{$id}"{/if} class="listProducts product_list grid row{if isset($class) && $class} {$class}{/if}"> {if !isset($cart)}{assign var='cart' value=Context::getContext()->cart scope='global'}{/if} {foreach from=$products item=product name=products} {math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile} {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if} {if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if} {if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if} <li class="item ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-6 col-md-3{else} col-xs-12 col-sm-6 col-md-3{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} last-in-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} first-in-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)} last-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 0} last-item-of-tablet-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 1} first-item-of-tablet-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 0} last-item-of-mobile-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 1} first-item-of-mobile-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModuloMobile)} last-mobile-line{/if}"> <div class="product-container item-i" itemscope itemtype="http://schema.org/Product"> <div class="left-block item-top"> <div class="cartin"> {if isset($cart) && $cart->containsProduct($product['id_product'], $product['id_product_attribute'])>0} <div class="essai">{l s='panier'}</div> {/if} </div> <div class="product-image-container"> <a class="product_img_link" > Je pense avoir tout fais correctement ... Mais vu que cela ne fonctionne pas, j'ai surement dû me planter (une nouvelle fois) quelque part Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 Pour le produit avec déclinaison ce ne sera pas facilement possible. J'ai juste réécrit et je n'ai aucun problème sur mon thème: {if !isset($cart)}{assign var='cart' value=Context::getContext()->cart scope='global'}{/if} {foreach from=$products item=product name=products} ... <div class="cartin"> {if isset($cart) && !empty($cart->containsProduct($product.id_product))} <div class="essai">{l s='panier'}</div> {/if} </div> ... Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 J'ai fais un copier/coller de ta modification Toutefois, le problème reste le même... En tout les cas, je te remercie vivement d'avoir pris de ton temps pour tenter de m'aider, mais je pense que le niveau est trop élevé pour moi J'ai du me planter ailleurs, ou pas fais quelque chose pour que cela fonctionne. Mais tout cela me dépasse Je t'embete pas plus Merci encore... Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 Fais moi un MP pour voir ça in-situ Link to comment Share on other sites More sharing options...
doekia Posted July 5, 2017 Share Posted July 5, 2017 Pour mémoire Comme tu as des attributs, la méthode ne fonctionne pas. Il faut changer en: {if isset($cart) && !empty($cart->getProducts(false,intval($product.id_product)))} Link to comment Share on other sites More sharing options...
ZenProduction Posted July 5, 2017 Author Share Posted July 5, 2017 Ok En tout les cas encore un énorme merci pour ton aide !!! Très rapide et professionnel !!! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now