質問

ロード収集方法を教えてください属性値の文字だけではなく、オプション番号)が、ドロップダウンの属性。

例:

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color'); // color  is a dropdown attribute

このコードのオプションidは、表示する color など123,117。なのテキスト値のように:赤色、緑色など)

普段私たちは繰り返し処理を実行して各製品のテキスト属性のことですので使用される カタログ>製品の管理 ページに、ちょっとした用事がある場合の代替溶液とする。

役に立ちましたか?

解決

私はあなたが最初にMage_Catalog_Model_Resource_Product_Collectionを使用していると仮定し、あなたの質問に記載されているように単なるリソースではありません。

今、私はあなたがあなたのコレクションの結果をループしていると仮定しています。

foreach($collection as $product) {}
.

製品オブジェクトを開いたら、関数getAttributeTextを呼び出して属性コードを指定できます。これにより、製品に割り当てられている属性データに基づくオプションテキストを取得し、次にオプションテキストをロードします。

public function getAttributeText($attributeCode)
{
return $this->getResource()
    ->getAttribute($attributeCode)
        ->getSource()
            ->getOptionText($this->getData($attributeCode));
}
.

だからあなたがあなたのコレクションをループしているのであれば、あなたは単に呼び出す必要があります:

foreach ($collection as $product) {
    $color_value = $product->getAttributeText('color');
}
.

他のヒント

属性名の後に "_value"を追加してみてください。

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color_value'); // color  is a dropdown attribute
.

製品のフラットテーブルを使用している場合は、CATALOG_PRODUCT_FLAT_1データベーステーブルを調べて利用可能な属性を確認できます。

値で並べ替える必要がありますか?そうでない場合は、1つの(!)クエリを持つ$colorsハッシュとしてすべての属性オプションを選択してから、それらを$colors[$product->getColor()] として表示できます。

おそらくそれはループ内の各値を選択するか、追加の結合を行うよりも速いですが、コレクションの並べ替えのためには機能しません:(

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top