2

私はMagentoの初心者で、カテゴリを見出しとして表示し、このカテゴリの下のすべての製品をリストする必要があります。どういうわけか、Web を検索しているときに関連するコードを取得しましたが、機能していません。カテゴリを見出しとして表示できますが、対応する製品を表示できません。

カテゴリと製品を表示するために使用したコードを提供します。

<?php 

$category = Mage::getModel('catalog/category');
$tree = $category->getTreeModel();

$tree->load();
$ids = $tree->getCollection()->getAllIds();
$arr = array();

if ($ids){
    foreach ($ids as $id){
        $cat = Mage::getModel('catalog/category');
        $cat->load($id);
        if ($cat->getIsActive()) {
            $arr[$id] = $cat->getName();
            $arr[$catId] =  $cat->getId();


?>

<div class="right">
                    <div class="products">
                    <h2 class="head"><?php echo $arr[$id]; ?></h2>
<?php 
$catagory_model = Mage::getModel('catalog/category')->load($id); //where $category_id is the id of the category

$collection = Mage::getResourceModel('catalog/product_collection');

$collection->addCategoryFilter($catagory_model); //category filter

$collection->addAttributeToFilter('status',1); //only enabled product

$collection->addAttributeToSelect(array('name','url','small_image')); //add product attribute to be fetched

//$collection->getSelect()->order('rand()'); //uncomment to get products in random order

$collection->addStoreFilter();

if(!empty($collection))

{

    foreach ($collection as $_product):


    ?>                      
                    <div class="pro-list">

  <h5><?php echo $_product->getname(); ?></h5>
 <!-- other product details -->
  </div>
 <?php 
 endforeach;

 }else

 {

    echo 'No products exists';

 }


 ?> 
</div>
</div>
<?php }
        }
        }
        ?> 

私が間違っていることは何ですか?コードは で書かれていtemplate/catalog/product/list.phtmlます。

4

1 に答える 1

0

私の理解から、私はこの解決策で結論付けました:

<?php $helper = $this->helper('catalog/category') ?>
<?php $categories = $this->getStoreCategories() ?>
    <div id="navigation_vert">
        <?php if (count($categories) > 0): ?>
            <ul>
                <?php foreach($categories as $category): ?>
                    <li>
                        <a class="link" href="<?php echo $helper->getCategoryUrl($category) ?>">
                        <?php echo $this->escapeHtml($category->getName()) ?>
                        </a>
                        <?php $subcategories = $category->getChildren() ?>
                        <?php if (count($subcategories) > 0): ?>
                            <?php foreach($subcategories as $subcategory): ?>
                                <a href="<?php echo $helper->getCategoryUrl($subcategory) ?>">
                                <?php echo $this->escapeHtml(trim($subcategory->getName(), '- ')) ?>
                                </a>
                                    <?php $subsubcategories = $subcategory->getChildren() ?>
                                    <?php if (count($subsubcategories) > 0): ?>
                                        <ul>
                                            <?php foreach($subsubcategories as $subsubcategory): ?>
                                                    <li>
                                                        <a href="<?php echo $helper->getCategoryUrl($subsubcategory) ?>"><?php echo $this->escapeHtml(trim($subsubcategory->getName(), '- ')) ?></a>
                                                    </li>
                                            <?php endforeach; ?>
                                        </ul>
                                    <?php endif; ?><!-- subsubcategories if e -->
                            <?php endforeach; ?><!-- subcategories for e -->
                        <?php endif; ?><!-- subcategories if e -->
                    </li>
                <?php endforeach; ?><!-- categories e -->
            </ul>
        <?php endif; ?><!-- count main categories if e -->
    </div><!-- id navigation_vert e -->


上記のコードでは、すべてのカテゴリ (そのサブカテゴリ---> およびそのサブサブカテゴリ (参照用)) を抽出しています。すべてのカテゴリはタグ
に関連付けられています。 をクリックすると、それぞれのカテゴリのすべての製品が (リスト/グリッド パターンで) 表示されます。カテゴリを管理する際の よくある間違い。 製品の管理については、このリンクをチェックしてください 製品を管理する方法 製品を表示 しない理由<a>







于 2012-10-26T06:00:47.923 に答える