7

無効なステータスで magento 製品コレクションをフィルタリングする必要があります。Magento は、コレクションをロードするときにデフォルトで無効な製品を無視するようです。

したがって、私の質問には2つの部分があります。

1 - 無効な製品のみを含むコレクションを magento にロードするにはどうすればよいですか? 2 - そもそも、magento が無効な製品をコレクションにロードしないのはなぜですか?

コレクションをロードするために標準コードを使用しています。

$collction = Mage::getModel('catalog/product')->getCollection()

これにより、無効な製品がロードされることはありません。

4

5 に答える 5

8

プロダクト フラット構造を使用すると、

$col = Mage::getModel('catalog/product')->getCollection();

はフラット テーブル (例: catalog_product_flat_1) を使用し、disabled製品はそのテーブルの一部ではありません。

構成を「NO」に変更するUse Flat Catalog Productと、コレクションにすべての製品が含まれます。 カタログフラット

この方法ですべての製品をロードします。

于 2013-02-26T17:32:50.283 に答える
6

バック オフィスで構成を変更したくない場合 (良好なパフォーマンスを維持するため)、特定の機能に対してのみ無効な製品が必要なため、リクエストが処理されている間だけ値を変更するこのソリューションを見つけました。

Mage::app()->getStore()->setConfig('catalog/frontend/flat_catalog_product', 0);

初めて呼び出す前に、これを設定する必要があります。

Mage::getModel('catalog/product')->getCollection()

おそらく、コレクション モデル ストアがこのフラグをメモリに保持しているため、同じリクエスト中に 1 に戻すことはできないことに気付きました。

このようにして、データベースの構成は変更されませんでした。

于 2015-06-10T08:17:11.297 に答える
0

フラット製品が有効になっている場合は、使用することをお勧めします

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

無効化された製品と有効化された製品を取得できます。

より良い説明については、この回答を参照してください: https://magento.stackexchange.com/a/40001/32179

于 2016-10-20T15:13:25.070 に答える
-5

これにより、無効な製品でフィルタリングされたコレクションが読み込まれます。

    $products = Mage::getModel('catalog/product')->getCollection()
        ->setStoreId(Mage::app()->getStore()->getId())
        ->addAttributeToFilter('status', '0');
于 2013-02-26T20:24:56.723 に答える