Group records in same family

3 posts by 3 authors in: Forums > CMS Builder
Last Post: September 9, 2015   (RSS)

By celuch - September 4, 2015 - edited: September 4, 2015

I'm trying to display a list of catalog items, all with individual skus, but many with different sizes.  All like items are labled with a family name, which is the same as the sku without the size code.  There is a photo of only one size in each family.  Is there a way to group all "families" and only show one record (in this case, the one with a photo?).  Or at least limit, possibly through a select distinct or where statement so it limits the number of records to display, so that it will show all products with an image?

celuch

Hi Celuch,

Don't know if this recipe from my CMSB Cookbook http://www.thecmsbcookbook.com will help, but it does something similar with available colors for a catalog item.

Best,

Jerry Kornbluth

DISPLAYING 'AVAILABLE COLORS" IMAGES ON A DETAIL PAGE IF COLOR IS CHECKED IN A LIST FIELD

In a simple store scenario was trying to display images on a detail page for all colors that are checked as being
available for a particular item.

This was my approach:
 
First I created an array ($colors1) which contains a comma separated list of all of the colors that are available for
the item.

Next I uploaded images representing all of the available colors in a multi-image upload field and entered the color of
the image in the info1 field for each image.

Then in a foreach loop, I used the strpos function to determine if the info1 value exists in the $colors1 variable and
if it does, display that thumbnail image.

Problem was, the image corresponding to the first color in the $colors1 variable was always skipped, and I couldn’t
figure out why.

Greg Thomas from Interactive Tools postulated that it might be because the first item in the array doesn't have a
leading comma and space, and so as far as the strpos function is concerned it’s not an exact match. 

He suggested using the in_array function instead to detect if the color has been selected (was in the array) or not.
Yes, the order of the variables in the 2 functions are opposite from each other, but that’s just the way they need to
be to work.

Here’s the recipe that came out of the discussion:


<table align= “center”>
 <tr>
<td colspan="2">
<?php $colors1 join(', '$store_inventoryRecord['colors:labels']); ?>
<span class="navigation_font">Available Colors: <?php echo $colors1 ?></span><br />
</td>
</tr>
<tr>
<?php foreach ($store_inventoryRecord['image'] as $upload): ?>
<?php $info1 
$upload['info1'?>
<?php 
// if(strpos($colors1, $info1)): // this doesn’t work?>
<?php 
if(in_array($info1,$store_inventoryRecord['colors:labels'])): // This works ?>
 <td align="center">
<span class="sub_heading_font"><?php echo $upload['info1'?></span><br />
<img src="<?php echo $upload['thumbUrlPath'?>" width="<?php echo $upload['thumbWidth'?>" height="<?php echo
$upload['thumbHeight'?>" alt="" />
</td>
<?php endif ?>
<?PHP $maxCols
=2; if (@++$count $maxCols == 0): ?></tr><tr><?PHP endif; ?>
<?php 
endforeach ?>
</tr>
</table>
The first CMS Builder reference book is now available on-line!







Take advantage of a free 3 month trial subscription, only for CMSB users, at: http://www.thecmsbcookbook.com/trial.php