Magento Coding Solutions

listing filterable options in product listing page in magento programmatically

<?php /*Create filter dependencies*/
$_filters = Mage::getSingleton('Mage_Catalog_Block_Layer_State')->getActiveFilters();
foreach ($_filters as $_filter){
echo '<div class="filters">'.$this->stripTags($_filter->getLabel()).'  <a href="'.$_filter->getRemoveUrl().'" title="Remove This Item"> X </a> </div>';
} ?>
<?php
/* *Get catalog Max price nad min price*/
        if (!($currentCategory = Mage::registry('current_category'))) {
            $currentCategory = Mage::getModel('catalog/category')->load(Mage::app()->getStore()->getRootCategoryId());
        }
$max_price=Mage::getSingleton('catalog/layer')->setCurrentCategory($currentCategory)->getProductCollection()->getMaxPrice();
   $minPrice=Mage::getSingleton('catalog/layer')->setCurrentCategory($currentCategory)->getProductCollection()->getMinPrice();

/** show catalog filtering Customize */
$_category = $currentCategory;
$category_id= $_category->getId();

$layer = Mage::getModel("catalog/layer");
$category = Mage::getModel("catalog/category")->load($category_id);
$layer->setCurrentCategory($category);
$attributes = $layer->getFilterableAttributes();


$filter='';
$filterList='';
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();

$count = count($result->getItems());
if($count > 0){
if($attribute->getAttributeCode() == 'price'){

$filterList.='<div class="col-sm-4 col-md-4">
<div class="accordian_menu">
<a href="javascript:void(0)" class="heading">'.$attribute->getFrontendLabel().'<strong class="arrow"></strong>
</a>
<div class="submenu">
<div class="cheqbutton">
<div class="checkbox_btn">
<div class="range_slider padding_15">          
<input id="range_02" />
<script>
jQuery(document).ready(function () {
jQuery("#range_02").ionRangeSlider({
type: "double",                                          
min: '.$minPrice.',
max: '.$max_price.',
from: 0,
to: '.$max_price.',
postfix: "€"
});
});
</script>                          
 </div>
</div>
</div>

</div>
</div>
</div>';

}elseif($attribute->getAttributeCode() == 'shoes_color'){

$filterList.='<div class="col-sm-4 col-md-4">
<div class="accordian_menu">
<a href="javascript:void(0)" class="heading">Couleur<strong class="arrow"></strong>
</a>
<div class="submenu">
<div class="cheqbutton">
<div class="checkbox_btn">
<div class="color_style padding_15">
<ul>';
foreach($result->getItems() as $option) {
$filterList.=' <li class="color_box"><a href="'.$this->urlEscape($option->getUrl()).'" style="background:url('.Mage::helper('attributeoptionimage')->getAttributeOptionImage($option->getValue()).')"></a></li>';
}
$filterList.='</ul>
 </div>
</div>
</div>
</div>
</div>
</div>';

}elseif($attribute->getAttributeCode() == 'color'){
$filterList.='<div class="col-sm-4 col-md-4">
<div class="accordian_menu">
<a href="javascript:void(0)" class="heading">Couleur<strong class="arrow"></strong>
</a>
<div class="submenu">
<div class="cheqbutton">
<div class="checkbox_btn">
<div class="color_style padding_15">
<ul>';
foreach($result->getItems() as $option) {
$filterList.=' <li class="color_box"><a href="'.$this->urlEscape($option->getUrl()).'" style="background:url('.Mage::helper('attributeoptionimage')->getAttributeOptionImage($option->getValue()).')"></a></li>';
}
$filterList.='</ul>
 </div>
</div>
</div>

</div>
</div>
</div>';


}elseif($attribute->getAttributeCode() == 'shoes_size'){

$filterList.='<div class="col-sm-4 col-md-4">
<div class="accordian_menu">
<a href="javascript:void(0)" class="heading">'.$attribute->getFrontendLabel().'
<strong class="arrow"></strong>
</a>
<div class="submenu">
<div class="cheqbutton">
<div class="checkbox_btn">
<div class="size_list padding_15">
<ul>';
foreach($result->getItems() as $option) {
$filterList.='<li><a class="sizes" href="'.$this->urlEscape($option->getUrl()).'">'.$option->getLabel().'</a></li>';
}
$filterList.='</ul>
</div>
</div>
</div>

</div>
</div>
</div>';

}elseif($attribute->getAttributeCode() == 'size'){


$filterList.='<div class="col-sm-4 col-md-4">
<div class="accordian_menu">
<a href="javascript:void(0)" class="heading">'.$attribute->getFrontendLabel().'
<strong class="arrow"></strong>
</a>
<div class="submenu">
<div class="cheqbutton">
<div class="checkbox_btn">
<div class="size_list padding_15">
<ul>';
foreach($result->getItems() as $option) {
$filterList.='<li><a class="sizes" href="'.$this->urlEscape($option->getUrl()).'">'.$option->getLabel().'</a></li>';
}
$filterList.='</ul>
</div>
</div>
</div>

</div>
</div>
</div>';


}elseif($attribute->getAttributeCode() == 'marque'){


$filterList.='<div class="col-sm-4 col-md-4">
<div class="accordian_menu">
<a href="javascript:void(0)" class="heading">Marques
<strong class="arrow"></strong>
</a>
<div class="submenu">
<div class="cheqbutton">
<div class="checkbox_btn">';

$l=0;
$k=0;
foreach($result->getItems() as $option) {
//print_r($option->getData());
$_itemUrl = "'".$this->urlEscape($option->getMSelected() ? $option->getRemoveUrl() : $option->getUrl())."'";
if($l<2){
$filterList.='<div>
<input id="checkbox'.$l.'" type="checkbox" name="checkbox" value="1" ><label for="checkbox'.$l.'" onClick="serchFilter('.$_itemUrl.')"><span></span>'.$option->getLabel().'</label>
</div>';
}else{
if($k==0){
$filterList.='<a href="javascript:void(0)" class="drop">+ de Marques
<strong class="arrow"></strong>
</a>
<ul class="submenu">'; }

$filterList.='<li><div>
<input id="checkbox'.$l.'" type="checkbox" name="checkbox" value="1" ><label for="checkbox'.$l.'" onClick="serchFilter('.$_itemUrl.')"><span></span>'.$option->getLabel().'</label>
</div></li>';

$k++;
}
$l++;
}

$filterList.='</ul></div>

</div>

</div>
</div>
</div>';


}else{


}
}



}
echo $filterList;
?>

No comments:

Post a Comment