Does anyone know how to create new magento rest api to get category listing.
I already saw this link magento rest api but this not fetch category listings.
If any one knows then please solve this..
Does anyone know how to create new magento rest api to get category listing.
I already saw this link magento rest api but this not fetch category listings.
If any one knows then please solve this..
First create basic module using http://www.silksoftware.com/magento-module-creator/ this and then you have to create following file and add this file in given path.
Module path = app/code/local/Restapi/Categories
1) app/code/local/Restapi/Categories/etc/api2.xml
<?xml version="1.0"?>
<config>
<api2>
<resource_groups>
<catalog translate="title" module="api2">
<title>Catalog</title>
<sort_order>10</sort_order>
</catalog>
</resource_groups>
<resources>
<categories translate="title" module="api2">
<group>catalog</group>
<model>categories/api2_category</model>
<title>Categories</title>
<sort_order>10</sort_order>
<privileges>
<admin>
<retrieve>1</retrieve>
<!-- <create>1</create>
<update>1</update>
<delete>1</delete> -->
</admin>
<customer>
<retrieve>1</retrieve>
<!-- <create>1</create>
<update>1</update>
<delete>1</delete> -->
</customer>
<guest>
<retrieve>1</retrieve>
<!-- <create>1</create>
<update>1</update>
<delete>1</delete> -->
</guest>
</privileges>
<attributes>
<category_id>Category ID</category_id>
<name>Name</name>
<parent_id>Category Parent ID</parent_id>
<child_id>Category Child List</child_id>
<active>Active</active>
<level>Level</level>
<position>Position</position>
</attributes>
<routes>
<route>
<route>/categories/:cat_id</route>
<action_type>collection</action_type>
</route>
</routes>
<versions>1</versions>
</categories>
</resources>
</api2>
</config>
Here cat_id is category id which we pass to fetch child category.
2) app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Customer/V1.php
<?php
class Restapi_Categories_Model_Api2_Category_Rest_Customer_V1 extends Restapi_Categories_Model_Api2_Category
{
/**
* Retrieve list of category list.
*
* @return array
*/
protected function _retrieveCollection()
{
$ruleId = $this->getRequest()->getParam('cat_id');
// $cat_mod = Mage::getModel('catalog/category')->load($ruleId)->toArray();
$cats = Mage::getModel('catalog/category')->load($ruleId);
$subcats = Mage::getModel('catalog/category')->load($ruleId)->getChildren();
$cur_category = array();
$node['category_id'] = $ruleId;
$node['name'] = $cats->getName();
$node['parent_id'] = $cats->getParentId();
$node['child_id'] = $subcats;
if($cats->getIsActive()){
$node['active'] = 1;
}else{
$node['active'] = 0;
}
$node['level'] = $cats->getLevel();
$node['position'] = $cats->getPosition();
$cur_category[] = $node;
// $subcats = Mage::getModel('catalog/category')->load($ruleId)->getAllChildren();
// $subcats = Mage::getModel('catalog/category')->load($ruleId)->getChildren();
if($subcats != '')
{
foreach(explode(',',$subcats) as $subCatid)
{
$_category = Mage::getModel('catalog/category')->load($subCatid);
$childcats = Mage::getModel('catalog/category')->load($subCatid)->getChildren();
$node['category_id'] = $subCatid;
$node['name'] = $_category->getName();
$node['parent_id'] = $_category->getParentId();
$node['child_id'] = $childcats;
if($_category->getIsActive()){
$node['active'] = 1;
}else{
$node['active'] = 0;
}
$node['level'] = $_category->getLevel();
$node['position'] = $_category->getPosition();
$cur_category[] = $node;
}
}
return $cur_category;
}
you also add this same V1.php file in this path if you have other user like admin and guest.
app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Admin/V1.php
app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Guest/V1.php
Just you want to change the class path in V1.php file like Customer = Admin.