View Single Post
  #16  
Old 06-28-2012, 02:28 PM
  totaltec's Avatar 
totaltec totaltec is offline
 

X-Guru
  
Join Date: Jan 2007
Location: Louisville, KY USA
Posts: 5,823
 

Default Re: Product options in product list

Here is where things get a bit tricky.

Let's start modifying the product options Javascript.

In /modules/Product_Options/check_options.tpl near line 27:
Before:
PHP Code:
var variants = []; 
Insert:
PHP Code:
var productid = {$product.productid}; 
This just sets a value that we'll use later to prevent errors on the product page.

Then, near line 76:
After:
PHP Code:
/*
modifiers array: as clasid => array: as optionid => array:
  0 - price_modifier
  1 - modifier_type
  2 - taxes array: as taxid => tax amount
*/ 
Replace:
PHP Code:
var modifiers = [];
/* names array: as classid => class name */
var names = [];
{foreach 
from=$product_options item=v key=k}
names[{$v.classid}] = {ldelim}class_name"{$v.class_orig|default:$v.class|wm_remove|escape:javascript}"options: []{rdelim};
{foreach 
from=$v.options item=o name=opts}
names[{$v.classid}]['options'][{$o.optionid}] = "{$o.option_name_orig|default:$o.option_name|wm_remove|escape:javascript}";
{/foreach}
{if 
$v.is_modifier eq 'Y'}
modifiers[{$v.classid}] = {ldelim}{rdelim};
{foreach 
from=$v.options item=o name=opts}
modifiers[{$v.classid}][{$o.optionid}] = [{strip}
  {
$o.price_modifier|default:"0.00"}, 
  
'{$o.modifier_type|default:"$"}',
  {
ldelim}{rdelim}
{/
strip}];
{foreach 
from=$o.taxes item=t key=id name=optt}
modifiers[{$v.classid}][{$o.optionid}][2][{$id}] = {$t|default:0};
{/foreach}
{/foreach}
{/if}
{/foreach} 
With:
PHP Code:
var modifiers{$product.productid} = [];
/* names array: as classid => class name */
var names = [];
{foreach 
from=$product_options item=v key=k}
names[{$v.classid}] = {ldelim}class_name"{$v.class_orig|default:$v.class|wm_remove|escape:javascript}"options: []{rdelim};
{foreach 
from=$v.options item=o name=opts}
names[{$v.classid}]['options'][{$o.optionid}] = "{$o.option_name_orig|default:$o.option_name|wm_remove|escape:javascript}";
{/foreach}
{if 
$v.is_modifier eq 'Y'}
modifiers{$product.productid}[{$v.classid}] = {ldelim}{rdelim};
{foreach 
from=$v.options item=o name=opts}
modifiers{$product.productid}[{$v.classid}][{$o.optionid}] = [{strip}
  {
$o.price_modifier|default:"0.00"}, 
  
'{$o.modifier_type|default:"$"}',
  {
ldelim}{rdelim}
{/
strip}];
{foreach 
from=$o.taxes item=t key=id name=optt}
modifiers{$product.productid}[{$v.classid}][{$o.optionid}][2][{$id}] = {$t|default:0};
{/foreach}
{/foreach}
{/if}
{/foreach} 
Note: We are simply assigning the modifiers with the productid appended to the end.

Next, near line 159:
Replace:
PHP Code:
var default_price = {$product.taxed_price|default:"0"}; 
With:
PHP Code:
var default_price{$product.productid} = {$product.taxed_price|default:"0"}; 
Note: Again, just appending the productid to the variable to make it unique.

I have attached the whole file with the edits just in case.
Attached Files
File Type: tpl check_options.tpl (6.8 KB, 142 views)
__________________
Mike White - Now Accepting new clients and projects! Work with the best, get a US based development team for just $125 an hour. Call 1-502-773-6454, email mike at babymonkeystudios.com, or skype b8bym0nkey

XcartGuru
X-cart Tutorials | X-cart 5 Tutorials

Check out the responsive template for X-cart.
Reply With Quote