0

次のコードは、「カテゴリ 12」のすべてのサブカテゴリのカテゴリ サムを表示するだけで、この数を 6 カテゴリに制限し、それらのカテゴリをランダムに選択する方法を探しています。

    <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>

次の 2 つのコードを使用する製品に対して、以前に同様のコードを使用したことがあります。

<?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 ?>

カテゴリの親指に合うようにこれを再コーディングしようとしましたが、満足していないようです。

4

1 に答える 1

2

あなたの質問に対する解決策は以下の通りです。非常に遅いので、mysql rand()関数は使用しません。

<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>
于 2013-01-21T17:06:11.453 に答える