Jump to content

sort items in product cart alphabetically?


RGBY

Recommended Posts

My product cart has the electronic cigarette theme installed (39305)

 

When there are 2 or more items in the product cart, and I click to increase quanitity of one of them, they re-arrange.

 

I would like to make it so they stay in the same position regardless of adjustments. I dont actually care what order they appear in, just that they dont get changed.

 

I know that the original prestashop doesnt do this, but mine does (due to new theme?)

 

the product-cart.tpl is below

 

{capture name=path}{l s='Your shopping cart'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}
<h1 id="cart_title">{l s='Shopping cart summary'}</h1>
{assign var='current_step' value='summary'}
{include file="$tpl_dir./order-steps.tpl"}
{include file="$tpl_dir./errors.tpl"}
{if isset($empty)}
<p class="warning">{l s='Your shopping cart is empty.'}</p>
{elseif $PS_CATALOG_MODE}
<p class="warning">{l s='This store has not accepted your new order.'}</p>
{else}
<script type="text/javascript">
// <![CDATA[
var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';
var currencyRate = '{$currencyRate|floatval}';
var currencyFormat = '{$currencyFormat|intval}';
var currencyBlank = '{$currencyBlank|intval}';
var txtProduct = "{l s='product'}";
var txtProducts = "{l s='products'}";
// ]]>
</script>
<p style="display:none" id="emptyCartWarning" class="warning">{l s='Your shopping cart is empty.'}</p>
{*
{if isset($lastProductAdded) AND $lastProductAdded}
{foreach from=$products item=product}
 {if $product.id_product == $lastProductAdded.id_product AND (!$product.id_product_attribute OR ($product.id_product_attribute == $lastProductAdded.id_product_attribute))}
 <table class="cart_last_product std">
  <tr>
   <th colspan="2">{l s='Last added product'}</th>
  </tr>
  <tr>
   <td class="cart_product"><a class="cart_last_product_img" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small')}" alt="{$product.name|escape:'htmlall':'UTF-8'}"/></a></td>
   <td>
 <h5><a class="product_link" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'}</a></h5>
 {if isset($product.attributes) && $product.attributes}<a class="product_descr" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}">{$product.attributes|escape:'htmlall':'UTF-8'}</a>{/if}
   </td>
  </tr>
 </table>
 {/if}
{/foreach}
{/if}
*}
<p  class="p-cart">{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span></p>
<div id="order-detail-content" class="table_block">
<table id="cart_summary" class="std">
 <thead>
  <tr>
   <th class="cart_product first_item">{l s='Product'}</th>
   <th class="cart_description item">{l s='Description'}</th>
   <th class="cart_ref item">{l s='Ref.'}</th>
   <th class="cart_availability item">{l s='Avail.'}</th>
   <th class="cart_unit item">{l s='Unit price'}</th>
   <th class="cart_quantity item">{l s='Qty'}</th>
   <th class="cart_total last_item">{l s='Total'}</th>
  </tr>
 </thead>
 <tfoot>
  {if $use_taxes}
   {if $priceDisplay}
 <tr class="cart_total_price">
  <td colspan="6">{l s='Total products'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'}</td>
  <td class="price" id="total_product"><span class="price">{displayPrice price=$total_products}</span></td>
 </tr>
   {else}
 <tr class="cart_total_price">
  <td colspan="6">{l s='Total products'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'}</td>
  <td class="price" id="total_product"><span class="price">{displayPrice price=$total_products_wt}</span></td>
 </tr>
   {/if}
  {else}
   <tr class="cart_total_price">
 <td colspan="6">{l s='Total products:'}</td>
 <td class="price" id="total_product"><span class="price">{displayPrice price=$total_products}</span></td>
   </tr>
  {/if}
  <tr class="cart_total_voucher" {if $total_discounts == 0}style="display: none;"{/if}>
   <td colspan="6">
   {if $use_taxes}
 {if $priceDisplay}
  {l s='Total vouchers'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'}
 {else}
  {l s='Total vouchers'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'}
 {/if}
   {else}
 {l s='Total vouchers:'}
   {/if}
   </td>
   <td class="price-discount" id="total_discount">
 <span class="price">{if $use_taxes}{if $priceDisplay}{displayPrice price=$total_discounts_tax_exc}{else}{displayPrice price=$total_discounts}{/if}{else}{displayPrice price=$total_discounts_tax_exc}{/if}</span>
   </td>
  </tr>
  <tr class="cart_total_voucher" {if $total_wrapping == 0}style="display: none;"{/if}>
   <td colspan="6">
   {if $use_taxes}
 {if $priceDisplay}
  {l s='Total gift-wrapping'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'}
 {else}
  {l s='Total gift-wrapping'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'}
 {/if}
   {else}
 {l s='Total gift-wrapping:'}
   {/if}
   </td>
   <td class="price-discount" id="total_wrapping">
 <span class="price">{if $use_taxes}{if $priceDisplay}{displayPrice price=$total_wrapping_tax_exc}{else}{displayPrice price=$total_wrapping}{/if}{else}{displayPrice price=$total_wrapping_tax_exc}{/if}</span>
   </td>
  </tr>
  {if $use_taxes}
   {if $priceDisplay}
 <tr class="cart_total_delivery" {if $shippingCost <= 0} style="display:none;"{/if}>
  <td colspan="6">{l s='Total shipping'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'}</td>
  <td class="price" id="total_shipping"><span class="price">{displayPrice price=$shippingCostTaxExc}</span></td>
 </tr>
   {else}
 <tr class="cart_total_delivery"{if $shippingCost <= 0} style="display:none;"{/if}>
  <td colspan="6">{l s='Total shipping'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'}</td>
  <td class="price" id="total_shipping" ><span class="price">{displayPrice price=$shippingCost}</span></td>
 </tr>
   {/if}
  {else}
   <tr class="cart_total_delivery"{if $shippingCost <= 0} style="display:none;"{/if}>
 <td colspan="6">{l s='Total shipping:'}</td>
 <td class="price" id="total_shipping" ><span class="price">{displayPrice price=$shippingCostTaxExc}</span></td>
   </tr>
  {/if}
  {if $use_taxes}
  <tr class="cart_total_price">
   <td colspan="6">
 {if $display_tax_label}
  {l s='Total (tax excl.):'}
 {else}
  {l s='Subtotal:'}
 {/if}
   </td>
   <td class="price" id="total_price_without_tax"><span class="price">{displayPrice price=$total_price_without_tax}</span></td>
  </tr>
  <tr class="cart_total_tax">
   <td colspan="6">
 {if $display_tax_label}
  {l s='Total tax:'}
 {else}
  {l s='Estimated Sales Tax:'}
 {/if}
   </td>
   <td class="price" id="total_tax"><span class="price">{displayPrice price=$total_tax}</span></td>
  </tr>
  <tr class="cart_total_price">
   <td colspan="6">
 {if $display_tax_label}
  {l s='Total (tax incl.):'}
 {else}
  {l s='Total:'}
 {/if}
   </td>
   <td class="price" id="total_price"><span class="price">{displayPrice price=$total_price}</span></td>
  </tr>
  {else}
  <tr class="cart_total_price">
   <td colspan="6">{l s='Total:'}</td>
   <td class="price" id="total_price"><span class="price">{displayPrice price=$total_price_without_tax}</span></td>
  </tr>
  {/if}
  <tr class="cart_free_shipping" {if $free_ship <= 0 || $isVirtualCart} style="display:none;" {/if}>
 <td colspan="6" style="white-space:normal;">{l s='Remaining amount to be added to your cart in order to obtain free shipping:'}</td>
 <td id="free_shipping" class="price"><span class="price">{displayPrice price=$free_ship}</span></td>
   </tr>
 </tfoot>
 <tbody>
 {foreach from=$products item=product name=productLoop}
  {assign var='productId' value=$product.id_product}
  {assign var='productAttributeId' value=$product.id_product_attribute}
  {assign var='quantityDisplayed' value=0}
  {* Display the product line *}
  {include file="$tpl_dir./shopping-cart-product-line.tpl"}
  {* Then the customized datas ones*}
  {if isset($customizedDatas.$productId.$productAttributeId)}
   {foreach from=$customizedDatas.$productId.$productAttributeId key='id_customization' item='customization'}
 <tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" class="alternate_item cart_item">
  <td colspan="5">
   {foreach from=$customization.datas key='type' item='datas'}
    {if $type == $CUSTOMIZE_FILE}
	 <div class="customizationUploaded">
	  <ul class="customizationUploaded">
	   {foreach from=$datas item='picture'}<li><img src="{$pic_dir}{$picture.value}_small" alt="" class="customizationUploaded" /></li>{/foreach}
	  </ul>
	 </div>
    {elseif $type == $CUSTOMIZE_TEXTFIELD}
	 <ul class="typedText">
	  {foreach from=$datas item='textField' name='typedText'}<li>{if $textField.name}{$textField.name}{else}{l s='Text #'}{$smarty.foreach.typedText.index+1}{/if}{l s=':'} {$textField.value}</li>{/foreach}
	 </ul>
    {/if}
   {/foreach}
  </td>
  <td class="cart_quantity">
   <div id="cart_quantity_button" style="float:left">
    <a rel="nofollow" class="cart_quantity_up" id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="{$link->getPageLink('cart.php', true)}?add&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_customization={$id_customization}&token={$token_cart}" title="{l s='Add'}"><img src="{$img_dir}icon/quantity_up.png" alt="{l s='Add'}" /></a>
    {if $product.minimal_quantity < ($customization.quantity -$quantityDisplayed) OR $product.minimal_quantity <= 1}
    <input class="text" size="2" type="text" value="{$customization.quantity}" class="cart_quantity_input" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"/>
    <a rel="nofollow" class="cart_quantity_down" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="{$link->getPageLink('cart.php', true)}?add&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_customization={$id_customization}&op=down&token={$token_cart}" title="{l s='Subtract'}"><img src="{$img_dir}icon/quantity_down.png" alt="{l s='Subtract'}" /></a>
   {else}
   <a class="cart_quantity_down" style="opacity:0.3;" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="#" title="{l s='Subtract'}"><img src="{$img_dir}icon/quantity_down.png" alt="{l s='Subtract'}" /></a>
   {/if}
   </div>
   <a rel="nofollow" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="{$link->getPageLink('cart.php', true)}?delete&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_customization={$id_customization}&token={$token_cart}"><img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" title="{l s='Delete this customization'}" class="icon" /></a>
   <input type="hidden" value="{$customization.quantity}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_hidden"/>
  </td>
  <td class="cart_total"></td>
 </tr>
 {assign var='quantityDisplayed' value=$quantityDisplayed+$customization.quantity}
   {/foreach}
   {* If it exists also some uncustomized products *}
   {if $product.quantity-$quantityDisplayed > 0}{include file="$tpl_dir./shopping-cart-product-line.tpl"}{/if}
  {/if}
 {/foreach}
 </tbody>
{if sizeof($discounts)}
 <tbody>
 {foreach from=$discounts item=discount name=discountLoop}
  <tr class="cart_discount {if $smarty.foreach.discountLoop.last}last_item{elseif $smarty.foreach.discountLoop.first}first_item{else}item{/if}" id="cart_discount_{$discount.id_discount}">
   <td class="cart_discount_name" colspan="2">{$discount.name}</td>
   <td class="cart_discount_description" colspan="3">{$discount.description}</td>
   <td class="cart_discount_delete"><a href="{if $opc}{$link->getPageLink('order-opc.php', true)}{else}{$link->getPageLink('order.php', true)}{/if}?deleteDiscount={$discount.id_discount}" title="{l s='Delete'}"><img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="icon" /></a></td>
   <td class="cart_discount_price"><span class="price-discount price">
 {if $discount.value_real > 0}
  {if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}
 {/if}
   </span></td>
  </tr>
 {/foreach}
 </tbody>
{/if}
</table>
</div>
{if $voucherAllowed}
<div id="cart_voucher" class="table_block">
{if isset($errors_discount) && $errors_discount}
 <ul class="error">
 {foreach from=$errors_discount key=k item=error}
  <li>{$error|escape:'htmlall':'UTF-8'}</li>
 {/foreach}
 </ul>
{/if}
<form action="{if $opc}{$link->getPageLink('order-opc.php', true)}{else}{$link->getPageLink('order.php', true)}{/if}" method="post" id="voucher">
 <fieldset class="bordercolor">
  <h2>{l s='Vouchers'}</h2>
  <p class="text">
   <label for="discount_name">{l s='Code:'}</label>
   <input type="text" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
  </p>
  <p class="submit"><input type="hidden" name="submitDiscount" /><input type="submit" name="submitAddDiscount" value="{l s='Add'}" class="button" /></p>
 {if $displayVouchers}
  <div class="clearblock"></div>
  <div id="display_cart_vouchers">
  <h4>{l s='Take advantage of our offers:'}</h4>
  {foreach from=$displayVouchers item=voucher}
   <div><span onclick="$('#discount_name').val('{$voucher.name}');return false;" class="voucher_name">{$voucher.name}</span> — {$voucher.description}</div>
  {/foreach}
  </div>
 {/if}
 </fieldset>
</form>
</div>
{/if}
<div id="HOOK_SHOPPING_CART">{$HOOK_SHOPPING_CART}</div>
{* Define the style if it doesn't exist in the PrestaShop version*}
{* Will be deleted for 1.5 version and more *}
{if !isset($addresses_style)}
{$addresses_style.company = 'address_company'}
{$addresses_style.vat_number = 'address_company'}
{$addresses_style.firstname = 'address_name'}
{$addresses_style.lastname = 'address_name'}
{$addresses_style.address1 = 'address_address1'}
{$addresses_style.address2 = 'address_address2'}
{$addresses_style.city = 'address_city'}
{$addresses_style.country = 'address_country'}
{$addresses_style.phone = 'address_phone'}
{$addresses_style.phone_mobile = 'address_phone_mobile'}
{$addresses_style.alias = 'address_title'}
{/if}
{if (($carrier->id AND !isset($virtualCart)) OR $delivery->id OR $invoice->id) AND !$opc}
<div class="order_delivery">
{if !isset($formattedAddresses)}
{if $delivery->id}
<ul id="delivery_address" class="address item bordercolor">
 <li class="address_title">{l s='Delivery address'}</li>
 {if $delivery->company}<li class="address_company">{$delivery->company|escape:'htmlall':'UTF-8'}</li>{/if}
 <li class="address_name">{$delivery->firstname|escape:'htmlall':'UTF-8'} {$delivery->lastname|escape:'htmlall':'UTF-8'}</li>
 <li class="address_address1">{$delivery->address1|escape:'htmlall':'UTF-8'}</li>
 {if $delivery->address2}<li class="address_address2">{$delivery->address2|escape:'htmlall':'UTF-8'}</li>{/if}
 <li class="address_city">{$delivery->postcode|escape:'htmlall':'UTF-8'} {$delivery->city|escape:'htmlall':'UTF-8'}</li>
 <li class="address_country">{$delivery->country|escape:'htmlall':'UTF-8'} {if $delivery_state}({$delivery_state|escape:'htmlall':'UTF-8'}){/if}</li>
</ul>
{/if}
{if $invoice->id}
<ul id="invoice_address" class="address alternate_item bordercolor">
 <li class="address_title">{l s='Invoice address'}</li>
 {if $invoice->company}<li class="address_company">{$invoice->company|escape:'htmlall':'UTF-8'}</li>{/if}
 <li class="address_name">{$invoice->firstname|escape:'htmlall':'UTF-8'} {$invoice->lastname|escape:'htmlall':'UTF-8'}</li>
 <li class="address_address1">{$invoice->address1|escape:'htmlall':'UTF-8'}</li>
 {if $invoice->address2}<li class="address_address2">{$invoice->address2|escape:'htmlall':'UTF-8'}</li>{/if}
 <li class="address_city">{$invoice->postcode|escape:'htmlall':'UTF-8'} {$invoice->city|escape:'htmlall':'UTF-8'}</li>
 <li class="address_country">{$invoice->country|escape:'htmlall':'UTF-8'} {if $invoice_state}({$invoice_state|escape:'htmlall':'UTF-8'}){/if}</li>
</ul>
{/if}
{else}
 {foreach from=$formattedAddresses item=address name=myLoop}
  <ul class="bordercolor address {if $smarty.foreach.myLoop.last}last_item{elseif $smarty.foreach.myLoop.first}first_item{/if} {if $smarty.foreach.myLoop.index % 2}alternate_item{else}item{/if}">
   <li class="address_title">{$address.object.alias}</li>
   {foreach from=$address.ordered name=adr_loop item=pattern}
 {assign var=addressKey value=" "|explode:$pattern}
 <li>
 {foreach from=$addressKey item=key name="word_loop"}
  <span class="{if isset($addresses_style[$key])}{$addresses_style[$key]}{/if}">
   {$address.formated[$key]|escape:'htmlall':'UTF-8'}
  </span>
 {/foreach}
 </li>
   {/foreach}
   </ul>
 {/foreach}
{/if}
<div class="clearblock"></div>
{if $carrier->id AND !isset($virtualCart)}
<div id="order_carrier" class="bordercolor">
 <h4>{l s='Carrier:'}</h4>
 {if isset($carrierPicture)}<img src="{$img_ship_dir}{$carrier->id}.jpg" alt="{l s='Carrier'}" />{/if}
 <span>{$carrier->name|escape:'htmlall':'UTF-8'}</span>
</div>
{/if}
</div>
{/if}
<p class="cart_navigation">
{if !$opc}<a href="{$link->getPageLink('order.php', true)}?step=1{if $back}&back={$back}{/if}" class="exclusive" title="{l s='Next'}">{l s='Next'} »</a>{/if}
<a href="{if (isset($smarty.server.HTTP_REFERER) && strstr($smarty.server.HTTP_REFERER, $link->getPageLink('order.php'))) || !isset($smarty.server.HTTP_REFERER)}{$link->getPageLink('index.php')}{else}{$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'|secureReferrer}{/if}" class="button_large" title="{l s='Continue shopping'}">« {l s='Continue shopping'}</a>
</p>
{$HOOK_SHOPPING_CART_EXTRA}
{/if}

Edited by RGBY (see edit history)
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...