1

皆さんこんにちは!私はまだMagentoに慣れていないので、これについての手がかりを教えていただければ幸いです。

配列で取得した製品のリストを表示しようとしています。で、製品オブジェクトをプッシュMage/Catalog/Block/Product/List.phpする新しい を作成しました( を使用)。Varien_Data_Collection()->addItem($product)

次に、カスタム コレクションを返すと、List.phpクラスはそれを処理して製品のリストを表示します。

ブラウザでページを呼び出すと、適切な数の製品が表示され、それをクリックして製品ページを表示すると、適切なページが表示されます。

ただし、すべてのデータ (製品名、価格など) は空です。これらのデータをキャッチするために List クラスで使用されるメソッドは、私のVarien_Data_Collectionオブジェクトでは失敗すると思います。

説明するために、ここに私のコードサンプルがあります:

// getting a particular product
$mainProduct = Mage::getModel('catalog/category')->load($currentCat->getId());
$mainProduct = $mainProduct->getProductCollection();
$mainProduct = $mainProduct->addAttributeToFilter('product_id', $_GET['cat_id']);

// creating a custom collection             
$myCollection = new Varien_Data_Collection();

foreach ($mainProduct as $product) {
    // getting my particular product's related products in an array
    $related = $product->getRelatedProductIds();                
    if ($this->array_contains($related, $_GET['cat_id'])) {
        // if it suits me, add it in my custom collection
        $myCollection->addItem($product);
    }
}
return $myCollection;

そして、これは私のリストページに表示されるものです:

ここに画像の説明を入力

すると、、、などのフィールドが参照されていないvar_dump($myCollection)ことがわかります。私が気にしない他の多くのフィールドのみ。['name']['price']['product_id']

私の究極の質問は、これらの製品データを含むコレクションを List クラスに返すにはどうすればよいですか? 説明が不十分であることは承知していますが、私の英語力は非常に限られているため、最善を尽くそうとしています :(

4

2 に答える 2

1

まず最初に $_GET 変数を使用Mage::app()->getRequest()->getParams(); しないでください。2 番目に、コレクションを最初から正しく構築してみませんか?

あなたのコードは次のとおりです。

$mainProduct = Mage::getModel('catalog/category')->load($currentCat->getId());
$mainProduct = $mainProduct->getProductCollection();
$mainProduct = $mainProduct->addAttributeToFilter('product_id', $_GET['cat_id']);

1 つの製品を取得します。つまり、カテゴリをロードしてから製品コレクションをロードし、製品 ID でフィルタリングします。

$mainProduct = Mage::getModel('catalog/product')->load($yourSearchedId);

また、カテゴリ ID のように見える $_GET['cat_id'] で製品をフィルタリングする理由もわかりません...

結論として、何を見つけようとしているのかを正確に説明すれば、より多くの助けを得ることができます。特定の製品に関連するすべての製品を検索しようとしているようです。そのため、その特定の製品に関連製品を正しく設定して、関連製品コレクションを取得してみませんか。

$_product->getRelatedProductCollection();

アップデート:

リクエストをクリアしたので、これを試してください:

$relatedIds = $product->getRelatedProductIds();
$myCollection = Mage::getModel('catalog/category')
    ->load($currentCat->getId())
    ->getProductCollection();
$myCollection->addAttributeToFilter('product_id', array("in",$relatedIds));

// addAttributeToSelect 名前などの必要なすべての属性 $myCollection->load(); //実際にはここでロードする必要はないかもしれません

頭のてっぺんから書かれたこのコードをテストしたわけではないことに注意してください。テストしてください。しかし、私はあなたがアイデアを得たことを願っています。

于 2013-04-18T09:30:34.857 に答える