4

アイテムの総数を取得するにはどうすればよいですか。それをカテゴリ view.phtml ファイルに表示したいと思います。通常、この値は Toolbar.phtml にあります。

私はこのようなことを試しましたが、私はかなり遠いと思います:

$this->helper('catalog/output')->$_productCollection->count()

マジェント バージョン 1.7.0.2

期待される結果は次のようになります。

このカテゴリのアイテム: 17 17 は総数です。可能であれば、サブカテゴリのアイテムを含める必要があります。

4

6 に答える 6

15

それをview.phtmlに表示したいと仮定すると、現在のカテゴリオブジェクトがすでにそこにあるので、使用できます$_category->getId()

 $products_count = Mage::getModel('catalog/category')->load($_category->getId())
 ->getProductCount();

echo($products_count);

list.phtml で使用したい場合は、使用できます

echo($_productCollection->count());
于 2013-07-04T21:52:31.010 に答える
7

これを試して、

<?php $_helper = $this->helper('catalog/output');?>
<?php $_category_detail = Mage::registry('current_category');?>
<?php $_category_detail->getName();?>
<?php $_category_detail->getId(); ?>

<?php $products_count = Mage::getModel('catalog/category')->load($_category_detail->getId())
        ->getProductCount();
echo($products_count);
?>
于 2013-07-05T09:14:14.390 に答える
6

基本的に、view.phtml でフィルター処理されたアイテムの合計量を表示することはできません。その理由は、総額を取得するロジックがview.phtmlの$thisコンテキストに存在しないためです。ただし、このロジックは Mage_Catalog_Block_Product_List の子ブロックであるMage_Catalog_Block_Product_List_Toolbarブロックで使用できます。

これは基本的に、ツールバーとリスト ブロックをインスタンス化することで、フィルター処理されたアイテムの合計量を実際に取得できることを意味します。その後、ツールバー ブロックのコレクションに、リスト ブロックのコレクションの値を設定する必要があります。

次のコードは、view.phtmlファイルで使用され、ツールバー ブロックからフィルター処理されたアイテムの合計数を取得します。

$toolbar = new Mage_Catalog_Block_Product_List_Toolbar();
$list = new Mage_Catalog_Block_Product_List();
$toolbar-> setCollection($list -> getLoadedProductCollection());
$products_count = $toolbar -> getTotalNum();
于 2015-06-08T09:48:18.947 に答える
1

Product コレクションを取得できるモデル インスタンスが既にあるため、ビュー内に追加のモデルを読み込むのは適切ではありません。

 $this->getCurrentCategory()->getProductCollection()->count();
于 2015-09-01T15:06:24.833 に答える
1

カテゴリの製品数を見つける方法は 2 つあります。

$collection = Mage::getModel('catalog/category')->getCollection()
             ->addAttributeToSelect('name')
             ->addAttributeToSelect('level')
             ->addAttributeToSelect('entity_id');

foreach($collection as $cat)
    $cat->getProductCount();

これにより、最も深いカテゴリのみの製品数が得られます。たとえば、次のカテゴリがあります。木のような構造を考えています。

衣類(6) ->綿(3) ->女性(2)

上記のコードから返された結果。洋服(3) コットン(1) 女性(2)

衣服のみに直接関連する 3 つの製品があり、1 つは綿のみ、2 つは女性のみです。したがって、サブカテゴリは単に無視されます。

もう 1 つの方法は、製品の観点から製品数を取得することです。

$current_category = Mage::getModel('catalog/category')->load($cat->getEntityId());

$productCount = Mage::getModel('catalog/product')->getCollection()
                ->addFieldToFilter('manufacturer',$this->manufacturer["id"])
                ->addFieldToFilter('visibility',4)
                ->addFieldToFilter('status',1)
                ->addCategoryFilter($current_category)->getSize();

これにより、製品属性をフィルタリングするという追加の利点が得られます。ただし、上記のシナリオでは、返されるカウントはわずかに異なります。

それ自体に 3 つの製品が関連付けられており、サブカテゴリにさらに 3 つの製品が関連付けられているため、Clothes (6) が返されます。同様にコットン(3) 女性(2)。

したがって、効率的な結果を得るには、両方を組み合わせて使用​​するとよいでしょう。

于 2014-08-19T02:12:57.630 に答える