创建产品时,我可以通过API使用以下内容:
$newProductData = array(
'name' => (string)$stockItem->STOCK_DESC,
'websites' => array(1,2), // array(1,2,3,...)
'short_description' => (string)$stockItem->STOCK_DESC,
'description' => (string)$stockItem->LONG_DESC,
'status' => 1,
'weight' => $stockItem->WEIGHT,
'tax_class_id' => 1,
'categories' => array(3108),
'price' => $stockItem->SELL_PRICE
);
$my_set_id = 9; // Use whatever set_id you want here
$type = 'simple';
$mc = new Mage_Catalog_Model_Product_Api();
$mc->create($type, $my_set_id, $stockItem->STOCK_CODE, $newProductData);
当我查看$mc->create
电话时,我发现它是这样做的:
foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
}
表示存在可以针对对象编辑的属性列表。
我如何找到这些?是否有特定的地方找到这些信息?
修改:我刚刚做了:
Mage::log($product->getTypeInstance(true)->getEditableAttributes($product));
并查看了结果。似乎所有可编辑的属性都可以在[attribute_code] =>
下找到,但我仍然想要一个更好的方法来知道在哪里查看这个列表。
答案 0 :(得分:2)
这完全取决于您尝试编辑的产品的属性集以及每个单独属性的配置。 UI中没有可以为您列出这些属性的地方。您最好的选择是为您的产品运行一些自定义代码
$product = Mage::getModel('catalog/product')->load($product_id);
foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $code=>$attribute)
{
var_dump($code);
}
以下是如何跟踪此信息。如果您跳转到getEditableAttributes
方法
#File: app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php
public function getEditableAttributes($product = null)
{
$cacheKey = '_cache_editable_attributes';
if (!$this->getProduct($product)->hasData($cacheKey)) {
$editableAttributes = array();
foreach ($this->getSetAttributes($product) as $attributeCode => $attribute) {
if (!is_array($attribute->getApplyTo())
|| count($attribute->getApplyTo())==0
|| in_array($this->getProduct($product)->getTypeId(), $attribute->getApplyTo())) {
$editableAttributes[$attributeCode] = $attribute;
}
}
$this->getProduct($product)->setData($cacheKey, $editableAttributes);
}
return $this->getProduct($product)->getData($cacheKey);
}
您可以看到此方法获取特定产品上设置的所有属性的列表(即,作为产品属性集成员的所有属性)。一旦有了这个列表,它就会遍历每个列表并检查它的apply_to
属性是否与当前产品的类型ID匹配。
“应用于”属性设置为
Catalog -> Attributes -> Manage Attributes -> [Pick Attribute]
此表单字段更新数据库表catalog_eav_attribute
。如果运行以下查询,则可以看到存储的值的示例
select attribute_id, apply_to from catalog_eav_attribute where apply_to is NOT NULL;
75 simple,configurable,virtual,bundle,downloadable
76 simple,configurable,virtual,bundle,downloadable
77 simple,configurable,virtual,bundle,downloadable
78 simple,configurable,virtual,bundle,downloadable
79 virtual,downloadable
因此,请设置您的产品属性。获取该集合中的属性列表。比较属性apply_to
字段的值与产品type_id
的值。这将允许您构建这些属性的列表。