public function getFilterFrontend(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter) { if ($filterDefinition->getScriptPath()) { $script = $filterDefinition->getScriptPath(); } else { $script = $this->script; } $ranges = $filterDefinition->getRanges(); $agefields = array('upperlimit' => $filterDefinition->getField(), 'lowerlimit' => $filterDefinition->getSecondfield()); $groupByValues = $productList->getGroupByValues($agefields, true); $counts = array(); foreach ($ranges->getData() as $row) { $counts[$row['from'] . "_" . $row['to']] = 0; } foreach ($groupByValues as $groupByValue) { foreach ($ranges->getData() as $row) { if ($row['from'] <= $groupByValue['lowerlimit'] && $row['to'] >= $groupByValue['lowerlimit'] || $row['from'] <= $groupByValue['upperlimit'] && $row['to'] >= $groupByValue['upperlimit'] || $row['from'] >= $groupByValue['lowerlimit'] && $row['to'] <= $groupByValue['upperlimit']) { $counts[$row['from'] . "_" . $row['to']] += $groupByValue['count']; } } } $values = array(); foreach ($ranges->getData() as $row) { if ($counts[$row['from'] . "_" . $row['to']]) { $values[] = array("from" => $row['from'], "to" => $row['to'], "label" => $this->createLabel($row), "count" => $counts[$row['from'] . "_" . $row['to']], "unit" => $filterDefinition->getUnit()); } } $currentValue = ""; if ($currentFilter[$filterDefinition->getField()]['from'] || $currentFilter[$filterDefinition->getField()]['to']) { $currentValue = implode($currentFilter[$filterDefinition->getField()], "-"); } return $this->view->partial($script, array("hideFilter" => $filterDefinition->getRequiredFilterField() && empty($currentFilter[$filterDefinition->getRequiredFilterField()]), "label" => $filterDefinition->getLabel(), "currentValue" => $currentValue, "currentNiceValue" => $this->createLabel($currentFilter[$filterDefinition->getField()]), "unit" => $filterDefinition->getUnit(), "values" => $values, "definition" => $filterDefinition, "fieldname" => $filterDefinition->getField(), "secondfieldname" => $filterDefinition->getSecondfield())); }