[ic] Foundation Component Hacking - cross sell anomalies [solved?]

Louie Martinez louie at kopykake.com
Wed Sep 24 02:52:14 EDT 2003


I've been mucking my way through interchange for awhile. I know how to add 
a few tags here and there, but I haven't dabbled much with ITL.

I've been working on getting cross selling to display correctly. It seems 
no matter how many items you specify for it to display with in the 
component interface, it will only show one. I noticed that it was adding 
the columns to my pages, but it was only displaying an item for the first 
column. So I started taking apart templates/components/cross to see what 
was the problem.

I think the problem exists in this piece of code.

     [calc]
         my $n = [control cols 3];
         $Scratch->{width_percent} = q{[control width_percent 100%]}
                                                           || int(100 / $n) 
. '%';
         my $rand = q{[control random]};
         delete $Scratch->{random};
         if($rand) {
                 $Scratch->{random} = q{[control size 3]};
         }
         return;
     [/calc]

for some reason unknown to me due to my limited programming skills, 
[scratch width_percent] will only return 100 and [scratch random] will only 
display 1 items.

The actual loop it uses is here.

     <table border="0" width="100%">
     [table-organize embed=1 pretty=1 cols="[control cols 3]"]
     [loop random="[scratch random]" list="[strip interpolate=1][scratch 
cross_codes][/strip]"]
       <TD width="[scratch width_percent]">
         <table border="0">
         <tr>

Now it's my assumption is that if you had [control cols 3] set to show up 4 
columns, [scratch width_percent] should have returned 25%. As for the loop, 
I changed random="[scratch random]" to random="[control size 3]" and it now 
shows the appropriate number of items instead of just 1.

so for the mean time I removed width="[scratch width_percent]" from the TD 
tag and made the change to the loop and everything "appears" to be working ok.

Now I'm looking at the code at the top of cross.

Can someone explain how this piece of code work? Apparently it creates a 
fall back routine so that if there aren't any specific SKU numbers 
specified to cross-sell, that it'll look for a cross sell category 
specified, or fall back to featured items, and if there isn't any featured 
items, it'll display random products. At least that's how I understand it.

[if !scratch cross_codes]
[tmp cross_codes][control cross_codes][/tmp]
[/if]
[if !scratch cross_codes]
[tmp cross_codes][loop search="
[if scratch cross_category]
                                                 st=db
                                                 fi=merchandising
                                                 sf=cross_category
                                                 se=[scratch cross_category]
[else]
                                                 st=db
                                                 fi=merchandising
                                                 sf=featured
                                                 se=specials
[/else]
[/if]
                                         "] [loop-code][/loop][/tmp]
[/if]
[if !scratch cross_codes]
[tmp cross_codes][loop search="
                                                 st=db
                                                 fi=merchandising
                                                 ra=yes
                                                 tf=times_ordered
                                                 ml=10
                                         "] [loop-code][/loop][/tmp]
[/if]

What I'd like to do is to be able to change the banner text so that if the 
cross conponent uses specified SKU's, that the banner will display 
something like "You might also need these..." to suggestive sell, if an 
item doesn't have specified SKU's or a category and it displays a featured 
item, the banner would display "Featured Item", and if displays a random 
item, the banner would display "See also..."

if someone can point out how the above function works, I may be able to use 
that as an IF statement when it diplays the banner, I'm just not sure how 
the IF statement above determines the value of cross_codes

Any help in this department would be much appreciated.


Louie Martinez
louie at kopykake.com
Kopykake Enterprises
(310) 373-8906 (800) 999-5253 




More information about the interchange-users mailing list