I am developing a mobile app using magento 1.9 SOAP API, I have integrated all the API endpoints and the functionality is almost complete. The issue I am facing is to implement layered navigation as it is displayed on magento website but there is no API endpoint to achieve this.
Can anyone please suggest me how we can handle this? as I am an android developer and trying to figure this out.
Thanks Shani
Update This is what I have achieved so far
$categoryid = (int)$this->getRequest()->getParam('cid');
$designid = $this->getRequest()->getParam('manufacturer');
$sizeid = $this->getRequest()->getParam('size');
$colorid = $this->getRequest()->getParam('color');
$pricerange = $this->getRequest()->getParam('price');
$layer = Mage::getSingleton("catalog/layer");
$_category = Mage::getSingleton("catalog/category")->load($categoryid);
$layer->setCurrentCategory($_category);
$attributes = $layer->getFilterableAttributes();
$attrs["design"]['label'] = __("Brands");
$attributeCode = Mage::getStoreConfig('shopbybrand/general/attribute_code', $storeId);
$attrCode = $attributeCode ? $attributeCode : 'manufacturer';
$attrs["design"]['code'] = $attrCode;
$attrs["design"]['sort'] = 1;
$attrs["color"]['label'] = __("Color");
$attrs["color"]['code'] = __("color");
$attrs["color"]['sort'] = 2;
$attrs["size"]['label'] = __("Size");
$attrs["size"]['code'] = __("size");
$attrs["size"]['sort'] = 3;
$attrs["price"]['label'] = __("Price");
$attrs["price"]['code'] = __("price");
$attrs["price"]['sort'] = 4;
// print_r($attributes->getData());exit();
$attributeCollection =array();
$i=0;
$attributeCollection = array();
foreach ($attributes as $attribute) {
if($attribute->getAttributeCode() == 'price') {
$filterBlockName = 'catalog/layer_filter_price';
}elseif($attribute->getBackendType() == 'decimal'){
$filterBlockName = 'catalog/layer_filter_decimal';
}else{
$filterBlockName = 'catalog/layer_filter_attribute';
}
$result = Mage::app()->getLayout()->createBlock($filterBlockName)->setLayer($layer)->setAttributeModel($attribute)->init();
$attributeCollection[$i]['Code'] = $attribute->getAttributeCode();
$attributeCollection[$i]['Label'] = $attribute->getStoreLabel();
$j=0;
$attributeOptionCollection =array();
foreach($result->getItems() as $option) {
$val = $option->getValue();
if($attribute->getAttributeCode()=='price'){
$attrs["price"]['options'][$j]['label'] = strip_tags($option->getLabel());
if(trim($val) == ""){
$val = $pricerange;
}
$val_arr = explode(',',$val);
$pricerange_arr = explode(',',$pricerange);
if(strstr($pricerange,',') || strstr($val,',')){
$val = array_merge(array_diff($val_arr, $pricerange_arr), array_diff($pricerange_arr, $val_arr));
$val = $val[0];
}
$attrs["price"]['options'][$j]['value'] = $val;
}elseif($attribute->getAttributeCode()=='color'){
$attrs["color"]['options'][$j]['label'] = $option->getLabel();
if(trim($val) == ""){
$val = $colorid;
}
$val_arr = explode(',',$val);
$colorid_arr = explode(',',$colorid);
if(strstr($colorid,',') || strstr($val,',')){
$val = array_merge(array_diff($val_arr, $colorid_arr), array_diff($colorid_arr, $val_arr));
$val = $val[0];
}
$attrs["color"]['options'][$j]['value'] = $val;
}elseif($attribute->getAttributeCode()=='size'){
$attrs["size"]['options'][$j]['label'] = $option->getLabel();
if(trim($val) == ""){
$val = $sizeid;
}
$val_arr = explode(',',$val);
$sizeid_arr = explode(',',$sizeid);
if(strstr($sizeid,',') || strstr($val,',')){
$val = array_merge(array_diff($val_arr, $sizeid_arr), array_diff($sizeid_arr, $val_arr));
$val = $val[0];
}
$attrs["size"]['options'][$j]['value'] = $val;
}elseif($attribute->getAttributeCode()=='manufacturer'){
$attrs["design"]['options'][$j]['label'] = $option->getLabel();
if(trim($val) == ""){
$val = $designid;
}
$val_arr = explode(',',$val);
$designid_arr = explode(',',$designid);
if(strstr($designid,',') || strstr($val,',')){
$val = array_merge(array_diff($val_arr, $designid_arr), array_diff($designid_arr, $val_arr));
$val = $val[0];
}
$attrs["design"]['options'][$j]['value'] = $val;
}
$j++;
}
//$attributeCollection[$i]['Options'] = $attributeOptionCollection;
$i++;
}
header("Content-Type: application/json");
print_r(json_encode($attrs));
die;