我正在使用Magento 2休息API列出所有类别。
{{生产链接}}/索引.php/剩余/V1/类别
它将返回所有类别,
{
"id": 2,
"parent_id": 1,
"name": "Default Category",
"is_active": true,
"position": 1,
"level": 1,
"product_count": 0,
"children_data": [{
"id": 3,
"parent_id": 2,
"name": "T-shirts",
"is_active": true,
"position": 1,
"level": 2,
"product_count": 8,
"children_data": []
}, {
"id": 4,
"parent_id": 2,
"name": "Phants",
"is_active": true,
"position": 2,
"level": 2,
"product_count": 0,
"children_data": []
}, {
"id": 5,
"parent_id": 2,
"name": "Chridar",
"is_active": true,
"position": 3,
"level": 2,
"product_count": 0,
"children_data": []
}]
}
但是我需要为结果中的每个类别定制属性。但是现在我必须调用下面的API来获取定制属性。
{{生产链接}}/索引.php/剩余/V1/类别/3
它会回来的,
{
"id": 3,
"parent_id": 2,
"name": "T-shirts",
"is_active": true,
"position": 1,
"level": 2,
"children": "",
"created_at": "2017-06-02 11:21:16",
"updated_at": "2017-06-02 11:21:16",
"path": "1/2/3",
"available_sort_by": [],
"include_in_menu": true,
"custom_attributes": [
{
"attribute_code": "description",
"value": "<p>retest</p>"
},
{
"attribute_code": "image",
"value": "Screen_Shot_2017-06-16_at_4.06.35_PM.png"
},
{
"attribute_code": "display_mode",
"value": "PRODUCTS"
},
{
"attribute_code": "is_anchor",
"value": "1"
},
{
"attribute_code": "path",
"value": "1/2/3"
},
{
"attribute_code": "children_count",
"value": "0"
},
{
"attribute_code": "custom_use_parent_settings",
"value": "0"
},
{
"attribute_code": "custom_apply_to_products",
"value": "0"
},
{
"attribute_code": "url_key",
"value": "redwine"
},
{
"attribute_code": "url_path",
"value": "redwine"
}
]
}
假设有**n
个类别,我需要调用n
**API来获取自定义属性,那么是否有一个API可以在一个API中获取所有类别的所有属性?
3条答案
按热度按时间ttp71kqs1#
Magento API CatalogTreeInterface没有扩展Magento\Framework\Api\ExtensibleDataInterface,这意味着自定义属性或扩展属性不能添加到树响应中。唯一的解决方法是创建自己的模块和一个新的API调用,扩展树接口以添加自定义属性。
ffx8fchx2#
我想鲁本是对的。我已经建立了Magento扩展添加到类别树的图像属性,请看看https://github.com/troublediehard/mma-customapi
1tu0hz3e3#
方法“\Magento\Catalog\Model\Category\Tree::getTree()”,其中对象树填充类别数据,它使用类别主模型“Magento\Catalog\Model\Category”的方法,实现接口“Magento\Catalog\API\Data\CategoryTreeInterface”。
例如,“$树-〉设置产品计数($节点-〉获取产品计数())"。
也就是说,Category模型实现的是CategoryTreeInterface,而不是它的父AbstractModel,所以不能使用setData()函数将属性添加到树数据中。
要实现此目标,需要执行几项操作:
就是这样。