Jump to content

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

Link to comment
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}
Link to comment
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 :/

Link to comment
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)
Link to comment
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)
Link to comment
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 :/ ^_^ 

Link to comment
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 ^_^ 

Link to comment
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>
   ...
   
Link to comment
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... :)

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