オプションIDまたはストアビュー値がある場合、属性管理オプション値を取得します


7

何時間か試してみましたが、特定の属性の管理オプションの値を読み込めません。option_idやstore view valueなどの十分な情報がありますが、

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attributeOptions = $attribute ->getSource()->getAllOptions();

私の属性(名前:色)オプションテーブルは次のようになります

管理者デフォルトストアビュー
15白
20イエロー
22ブルー
45グリーン

以下は私にオプションIDのみを与えます:

$colorOfProduct = "white";
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attributeOptions = $attribute ->getSource()->getAllOptions();

foreach ($attributeOptions as $option) {
    if ($option['label'] == $colorOfProduct)
    echo $option['value'];
}

デフォルトのストアビュー値(つまり、白)があり、割り当てられた管理者値が必要です。残念ながら、私はそれを成し遂げることはできず、あらゆる助けに感謝します。

回答:


4

管理者のオプション値を取得するため

次に、以下のコードで取得できます。0は管理ストアIDです。

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
 $collection =Mage::getResourceModel('eav/entity_attribute_option_collection')
                ->setPositionOrder('asc')
                ->setAttributeFilter($attributeId)
                ->setStoreFilter(0)
                ->load();
                echo "<pre>";
                print_r($collection->toOptionArray());
                echo "</pre>";

あなただけの店を変更する必要があります

 view ids on place of 0;

あなたは私を正しい方向に向けました。手伝ってくれてどうもありがとう!私は完全な解決策を明日投稿します。
Stefan

2

ここで、特定の問題に対する私の完全な解決策を示します。多分誰かがそれを使うことができます。

    function getImgColor($productId, $colorOfProduct)
    {
    $optionId = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, 'color', 1);

    $attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
    $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')
        ->setPositionOrder('asc')
        ->setAttributeFilter($attributeId)
        ->setStoreFilter(0)
        ->load();

    $collection = $collection->toOptionArray();

    foreach ($collection as $option) {
        if ($option['value'] == $optionId) {
            $img = $option["label"];
            break;
        }
    }

    return file_exists(Mage::getBaseDir('media')."/colorall/_thumbs/color/".$img.".png") ? "<img src=\"".Mage::getBaseUrl('media')."colorall/_thumbs/color/".$img.".png\" title=\"".$colorOfProduct."\" />" : Mage::getBaseDir('media')."/colorall/_thumbs/color/".$img.".png";
}

0

これは、次のように1回の呼び出しでより簡単に行うことができます。

カスタム属性値を取得するための属性「gender」の例。マジックメソッドgetGender()を使用して、getData( 'gender')と同等の処理を行っています。

$gender = Mage::getModel('catalog/resource_eav_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'gender')->getSource()->getOptionText($product->getGender());
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.