问题
The following code simply displays the category thumbs for all subcategories in "category 12" im looking for a way to limit this number to 6 categories and have it be a random selection of those categories.
<ul class="brand_list">
<?php $media = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA); ?>
<?php $children = Mage::getModel('catalog/category')->getCategories(12); ?>
<?php foreach ($children as $category): ?>
<?php $category = Mage::getModel('catalog/category')->load($category->getId()); ?>
<li class="span3">
<a href="<?php echo $category->getUrl(); ?>">
<img alt="<?php echo $category->getName(); ?>" src="<?php echo $media; ?>/catalog/category/<?php echo $category->getThumbnail(); ?>" />
</a>
</li>
<?php endforeach; ?>
</ul>
i've used similar code before for products using the following two pieces of code:
<?php $collection->getSelect()->order('rand()'); ?>
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($collection->getItems() as $category): if($i==6){break;}?>
<?php if ($i++%$_columnCount==0): ?>
<?php endif ?>
i have tried recoding this to suit the category thumbs but i don't seem to be having any joy.
回答1:
The solution to your question is bellow. I wouldn't use mysql rand() function since it's quite slow.
<ul class="brand_list">
<?php
$media = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
$parentCategory = Mage::getModel('catalog/category')->load(12);
$children = Mage::getModel('catalog/category')
->getCollection()
->addIdFilter( array_rand( array_flip( $parentCategory->getAllChildren( true ) ), 6) )
->addAttributeToSelect('name')
->addAttributeToSelect('thumbnail');
?>
<?php foreach ($children as $category): ?>
<li class="span3">
<a href="<?php echo $category->getUrl(); ?>">
<img alt="<?php echo $category->getName(); ?>" src="<?php echo $media; ?>catalog/category/<?php echo $category->getThumbnail(); ?>" />
</a>
</li>
<?php endforeach; ?>
</ul>
来源:https://stackoverflow.com/questions/14440874/randomise-limit-category-thumbs-on-homepage-magento