2010-11-30 2 views
7

Soy un principiante de Magento. Estoy tratando de extender las clases de API actuales en Magento para cumplir con mis requisitos y recuperar datos en formato JSON. Necesito:Extienda la API actual en Magento para obtener elementos en formato JSON

  1. que necesito para obtener todas las tiendas en un sitio web
  2. que necesito para obtener todas las categorías y subcategorías en una tienda específica
  3. que necesito para obtener todos los productos de una categoría específica.
  4. Todos los datos recuperados deben estar en formato JSON.

¿Algún blog/tema del foro? ¿Algún tipo de ayuda?

Gracias de antemano.

+0

Al "extender la API", ¿quiere decir que quiere usar los servicios web que proporciona Magento, o que solo quiere usar las clases de biblioteca existentes? –

+0

Necesito usar los servicios web. Necesito extender las clases actuales en Magento extendiéndolas. – Damodaran

Respuesta

10

Por favor, consulte esta página wiki de Magento http://www.magentocommerce.com/wiki/doc/webservices-api/custom-api#creating_custom_adapter_for_api.

Pasos:

  1. Es necesario crear un nuevo adaptador API de servidor que se debe aplicar Mage_Api_Model_Server_Adapter_Interface.

  2. crear un controlador que ejecutará el adaptador de servidor API

  3. Implementar Mage_Api_Model_Server_Adapter_Interface::run() método para el proceso de solicitud JSON y JSON en consecuencia devolver. Consulte Mage_Api_Model_Server_Handler_Abstract para conocer el flujo de trabajo de Magento API.

+0

Y aquí hay una implementación de JSON-RPC lista para usar: http://www.schmengler-se.de/en/2015/03/ein-json-rpc-adapter-fuer-die-magento-api/ –

2

nunca ha estado en esa situación, pero una idea vino a la mente es invocar un servicio SOAP o XML-RPC, luego convertir cualquier información necesaria a JSON.

Magento ofrece servicio web SOAP o XML-RPC para ser generado automáticamente con roles específicos para los usuarios, muy útil.

+0

Acordó que este sería el método * más simple *. Me pregunto acerca de las implicaciones de rendimiento, pero la sobrecarga de agregar la capa adicional podría funcionar para sus requisitos. – shaune

0

ve aquí https://github.com/app-z/magento-android-web-api
Hay incluso lista azar de los productos
¿Es lo que quieres?

// 
// Random Products Items 
// 
// http://localhost/magento/web-api.php?route=feed/web_api/random&limit=4&key=key1 
// 
function random_products($limit){ 
    $json = array('success' => true); 

    $products = Mage::getModel('catalog/product')->getCollection(); 
    $products->addAttributeToSelect(array('name', 'thumbnail', 'price')); //feel free to add any other attribues you need. 

    Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); 
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); 
    $products->getSelect()->order('RAND()')->limit($limit); 

    foreach($products as $product){ 
     $json['products'][] = array(
       'id'  => $product->getId(), 
       'name'  => $product->getName(), 
       'href'  => $product->getProductUrl(), 
       'thumb'  => (string)Mage::helper('catalog/image')->init($product, 'thumbnail'), 
       'pirce'  => Mage::helper('core')->currency($product->getPrice(), true, false) //." ".$currencyCode, 
      ); 
    } 
    return $json; 
} 
Cuestiones relacionadas