0

PHP は初めてなので、この問題が単純に見えて申し訳ありません。

これを行うことで製品のカテゴリを取得できることを理解しています:

//load the product
$product = Mage::getModel('catalog/product')->load($productId);

//load the categories of this product 
$categoryCollection = $product->getCategoryCollection();

しかし、どうすればそのカテゴリの最初の製品だけを取得できますか?

4

2 に答える 2

0

getCategoryCollectionn 関数は、製品のすべてのカテゴリを含む Magento コレクションを返します。カテゴリ コレクション内のアイテムは Magento カテゴリ オブジェクトであり、カテゴリには、カテゴリgetProductsCollection内のすべての製品を含むコレクションを返すメソッド ( ) があります。Magento コレクションには、コレクションから特定のアイテムを取得するために使用できるかなり豊富な API がありますgetFirstItem()。それをすべてまとめるには:

$product = Mage::getModel('catalog/product')->load($productId);
$categoryCollection = $product->getCategoryCollection();
foreach ($categoryCollection as $category) {
    $products = $category->getProductsCollection();

    // Here we have the first product
    $firstProduct = $products->getFirstItem();
}

現在の製品の最初のカテゴリの最初の製品だけが必要な場合は、ループを回避して代わりにこれを行うことができます。

$product = Mage::getModel('catalog/product')->load($productId);
$categoryCollection = $product->getCategoryCollection();
$category = $categoryCollection()->getFirstItem();
$products = $category->getProductsCollection();

// Here we have the first product
$firstProduct = $products->getFirstItem();

注: これらのコード サンプルのどちらも特に効率的ですが、何をしようとしているのかを正確に把握していなければ、より効率的なソリューションを提案することはできません。

于 2013-11-15T00:47:00.047 に答える