Jump to content
ZenProduction

Est ce possible de marquer les produits se trouvant déjà dans le panier ?

Recommended Posts

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

Share this post


Link to post
Share on other sites

Version exacte de ton Prestashop?

Share this post


Link to post
Share on other sites

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}

Share this post


Link to post
Share on other sites

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 :/

Share this post


Link to post
Share on other sites

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 :P

Ce qui a surement faussé ton aide ^_^ Désolé ! ;)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
 
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 by ZenProduction (see edit history)

Share this post


Link to post
Share on other sites

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 by doekia (see edit history)

Share this post


Link to post
Share on other sites

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 :/ ^_^ 

Share this post


Link to post
Share on other sites

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 by doekia (see edit history)

Share this post


Link to post
Share on other sites

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 ^_^ 

Share this post


Link to post
Share on other sites

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>
   ...
   

Share this post


Link to post
Share on other sites

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... :)

Share this post


Link to post
Share on other sites

Fais moi un MP pour voir ça in-situ

Share this post


Link to post
Share on other sites

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)))}

Share this post


Link to post
Share on other sites

Ok :) 

En tout les cas encore un énorme merci pour ton aide !!!

 

Très rapide et professionnel !!! :D

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More