7

製品属性セットに属性が存在するかどうかを確認する方法は?

製品に一連の属性の属性があるかどうかを知る必要があります。

次の属性を取得します。

$attrPricekg = Mage::getModel('catalog/product')->load($_product->getId())->getPricekg();

製品属性セットに属性が存在する場合、$attrPricekg は次のように表示されます: 製品の設定値または製品に値が設定されていない場合は 0。

商品属性セットに属性が存在しない場合、$attrPricekg は 0 を表示します。

ありがとう。

4

4 に答える 4

28

今、私は関係なく機能する答えを提供します!

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

$eavConfig = Mage::getModel('eav/config');
/* @var $eavConfig Mage_Eav_Model_Config */

$attributes = $eavConfig->getEntityAttributeCodes(
    Mage_Catalog_Model_Product::ENTITY,
    $product
);

if (in_array('pricekg',$attributes)) {
    // your logic
}
于 2013-01-19T17:11:15.633 に答える
-1

この方法があなたにとってより良いかもしれません:

$attribute = Mage::getModel('catalog/product')->load($productId)->getResource()->getAttribute($attributeCode);
if ($attribute && $attribute->getId()) { ... }

また、あなたは試すことができます

$attributes = $product->getAttributes();

ただし、属性コレクションですべてをチェックすることができます。

$entityTypeId = Mage::getModel('eav/entity')
            ->setType('catalog_product')
            ->getTypeId();
$attributeId = 5;
$attributeSetName   = 'Default';
$attributeSetId     = Mage::getModel('eav/entity_attribute')
                ->getCollection()
                ->addFieldToFilter('entity_type_id', $entityTypeId)
                ->addFieldToFilter('attribute_set_name', $attributeSetName)
                ->addFieldToFilter('attribute_id', $attributeId)
                ->getFirstItem();

ソースコードを修正する必要があるかもしれませんが、あなたはその考えを理解していると思います。

ここでさらにいくつかの例を参照してください-http://www.blog.magepsycho.com/playing-with-attribute-set-in-magento/

于 2013-01-19T12:21:06.430 に答える
-3

編集:これは正しい答えではありません。

$product->offsetExists('pricekg');

Varien_Object::offsetExists()(リンク)を参照してください。

于 2013-01-19T13:43:04.317 に答える