limit the total upload records shown inside a foreach loop
4 posts by 2 authors in: Forums > CMS Builder
Last Post: March 28, 2016 (RSS)
By Mikey - March 27, 2016 - edited: March 27, 2016
Anyone have any suggestions on how to limit the total upload records shown inside a foreach loop? Here's my code which I've bolded some text showing what I'm trying to do.
// load records from 'services'
list($servicesImgPanelsRecords, $servicesImgPanelsMetaData) = getRecords(array(
'tableName' => 'services',
'limit' => '3',
'loadUploads' => true,
'allowSearch' => false,
));
I tried limit => '3' as seen above, but it only displays on two records, I guess because I have 4 records and one does not have an image... so that wasn't working for me.
So I think it needs to be filtered in the foreach loop... so records without uploads are not included, and there's a total limit of 3 records that will display with uploads.
<?php foreach ($servicesImgPanelsRecords as $record): ?>
<?php foreach ($record['uploads'] as $index => $upload): ?>
Maximum Uploads Displayed = 3
<div class="grid_4 wow fadeInLeft" data-wow-delay=".2s">
<a class="lazy-img thumb" style="padding-bottom: 67.56756756756757%" href="<?php echo htmlencode($upload['urlPath']) ?>">
<img data-src="<?php echo htmlencode($upload['thumbUrlPath4']) ?>" src="#<?php echo htmlencode($record['num']) ?>" alt="<?php if ($upload['info1']): ?><?php echo htmlencode($upload['info1']) ?><?php else: ?><?php echo htmlencode($record['name']) ?><?php endif ?>" />
<noscript><img src="<?php echo htmlencode($upload['thumbUrlPath4']) ?>" alt="<?php if ($upload['info1']): ?><?php echo htmlencode($upload['info1']) ?><?php else: ?><?php echo htmlencode($record['name']) ?><?php endif ?>" /></noscript>
<div data-type="paw-spinner"></div>
<div class="thumb_overlay"><div class="fa fa-expand"></div></div>
</a>
<h3>
<?php if ($upload['info1']): ?>
<span><a href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>"><?php echo htmlencode($upload['info1']) ?></a></span>
<a href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>"><?php echo htmlencode($upload['info2']) ?></a>
<?php else: ?>
<a href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>"><?php echo htmlencode($record['name']) ?></a>
<?php endif ?>
</h3>
<p><?php echo htmlencode($record['summary']) ?></p>
<a data-type="paw-ink" href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>" class="btn1"><span class="fa fa-angle-right"></span></a>
</div>
<?php endforeach ?>
<?php endforeach ?>
Thanks Zicky
By Damon - March 28, 2016 - edited: March 28, 2016
Hi Zicky,
I added a counter and if statement to your code so that when three images have been displayed, the image foreachloop is exited to only show maximum three images.
<?php foreach ($servicesImgPanelsRecords as $record): ?>
<?php $counter = 0; ?>
<?php foreach ($record['uploads'] as $index => $upload): ?>
<?php $counter++; //increase counter number
if($counter > 3) {break; }
?>
<div class="grid_4 wow fadeInLeft" data-wow-delay=".2s">
<a class="lazy-img thumb" style="padding-bottom: 67.56756756756757%" href="<?php echo htmlencode($upload['urlPath']) ?>">
<img data-src="<?php echo htmlencode($upload['thumbUrlPath4']) ?>" src="#<?php echo htmlencode($record['num']) ?>" alt="<?php if ($upload['info1']): ?><?php echo htmlencode($upload['info1']) ?><?php else: ?><?php echo htmlencode($record['name']) ?><?php endif ?>" />
<noscript><img src="<?php echo htmlencode($upload['thumbUrlPath4']) ?>" alt="<?php if ($upload['info1']): ?><?php echo htmlencode($upload['info1']) ?><?php else: ?><?php echo htmlencode($record['name']) ?><?php endif ?>" /></noscript>
<div data-type="paw-spinner"></div>
<div class="thumb_overlay"><div class="fa fa-expand"></div></div>
</a>
<h3>
<?php if ($upload['info1']): ?>
<span><a href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>"><?php echo htmlencode($upload['info1']) ?></a></span>
<a href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>"><?php echo htmlencode($upload['info2']) ?></a>
<?php else: ?>
<a href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>"><?php echo htmlencode($record['name']) ?></a>
<?php endif ?>
</h3>
<p><?php echo htmlencode($record['summary']) ?></p>
<a data-type="paw-ink" href="<?php echo $record['_link'] ?>" title="<?php echo $record['service_category:label'] ?>" class="btn1"><span class="fa fa-angle-right"></span></a>
</div>
<?php endforeach ?>
<?php endforeach ?>
Try this out and let me know if it works for you.
Damon Edis - interactivetools.com
Hire me! Save time by getting our experts to help with your project.
http://www.interactivetools.com/consulting/
By Mikey - March 28, 2016 - edited: March 28, 2016
Hey Damon,
I changed exit; to break; because the rest of the page under the uploads was killed on exit loop. I really appreciate the help - it's working like a charm.
<?php $counter++; //increase counter number
if($counter > 3) {break; }
?>
Zicky
By Damon - March 28, 2016
Whoops. You are right, I should have used break. Thanks for correcting that for anyone else referring to this post in the future.
Damon Edis - interactivetools.com
Hire me! Save time by getting our experts to help with your project.
http://www.interactivetools.com/consulting/