简体   繁体   English

在Magento中,扩展rest / products api的性能是什么,检索返回列表中产品的标签和属性?

[英]In Magento, what's the performance of extending the rest/products api, to retrieve the tags and attributes of the products in the returned list?

The only way I can think of doing it is to retrieve the products, and then in the script call the other APIs to retrieve the information I need, before finally returning the response. 我能想到的唯一方法是检索产品,然后在脚本中调用其他API来检索我需要的信息,最后返回响应。

I'm still somewhat new to Magento, and this seems to be quite heavy on performance. 我对Magento还是有点新鲜,而且这在性能上似乎相当沉重。 Is the above solution effective in performance, or is there a better way of retrieving the tags,etc.. from the rest/products api? 以上解决方案在性能方面是否有效,或者是否有更好的方法从其余/产品api中检索标签等。

Essentially, what I'm looking for is something along those lines: 从本质上讲,我正在寻找的东西是这样的:

The current API returns: 当前的API返回:

{
337: {
    entity_id: "337"
    type_id: "simple"
    sku: "ace000"
    color: "15"
    gender: "93"
    material: "130"
    jewelry_type: null
    description: "Gunmetal frame with crystal gradient polycarbonate lenses in grey. "
    meta_keyword: null
    short_description: "A timeless accessory staple, the unmistakable teardrop lenses of our Aviator sunglasses appeal to everyone from suits to rock stars to citizens of the world."
    name: "Aviator Sunglasses"
    meta_title: null
    meta_description: null
    regular_price_with_tax: 319.34
    regular_price_without_tax: 295
    final_price_with_tax: 319.34
    final_price_without_tax: 295
    is_saleable: true
    image_url: "http://magentogs.cloudapp.net/magento/media/catalog/product/cache/0/image/9df78eab33525d08d6e5fb8d27136e95/a/c/ace000a_1.jpg"
    }
}

I want to add the following (as an example), the ** include the things show the things I want to add. 我想添加以下内容(作为示例),**包括显示我想要添加的内容的东西。

{
337: {
    entity_id: "337"
    type_id: "simple"
    sku: "ace000"
    color: "15"
    gender: "93"
    material: "130"
    jewelry_type: null
    description: "Gunmetal frame with crystal gradient polycarbonate lenses in grey. "
    meta_keyword: null
    short_description: "A timeless accessory staple, the unmistakable teardrop lenses of our Aviator sunglasses appeal to everyone from suits to rock stars to citizens of the world."
    name: "Aviator Sunglasses"
    meta_title: null
    meta_description: null
    regular_price_with_tax: 319.34
    regular_price_without_tax: 295
    final_price_with_tax: 319.34
    final_price_without_tax: 295
    is_saleable: true
    image_url: "http://magentogs.cloudapp.net/magento/media/catalog/product/cache/0/image/9df78eab33525d08d6e5fb8d27136e95/a/c/ace000a_1.jpg"
    **tags: [tag1,tag2,tag3]**
    **categories: [category1,category2,category3]**
    }
}

You should extend the existing product REST api model and override the method _prepareProductForResponse to include tags and other data 您应该扩展现有产品REST api模型并覆盖方法_prepareProductForResponse以包含标记和其他数据

Check here overriding rest model http://web.archive.org/web/20130512072025/http://magepim.com/news/Extending-the-Magento-REST-API-part-1_13 点击这里覆盖其他模型http://web.archive.org/web/20130512072025/http://magepim.com/news/Extending-the-Magento-REST-API-part-1_13

Your model definition: 你的模型定义:

Namespace_yourmodule_Model_Catalog_Api2_Product_Rest extends Mage_Catalog_Model_Api2_Product_Rest {


protected function _prepareProductForResponse(Mage_Catalog_Model_Product $product)
{
 // keep the existing code as it is

 // now add new code to add tags

 $productData['tags'] = Mage::getModel('tag/tag')->getResourceCollection()
    ->addPopularity()
    ->addProductFilter($product->getId());


// in the end 
 $product->addData($productData);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM