public function getFilterFrontend(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter) { // init $script = $filterDefinition->getScriptPath() ?: $this->script; $rawValues = $productList->getGroupByValues('CategoryPath', true); $values = array(); // ... $availableRelations = array(); if ($filterDefinition->getAvailableCategories()) { foreach ($filterDefinition->getAvailableCategories() as $rel) { $availableRelations[$rel->getId()] = true; } } // prepare values foreach ($rawValues as $v) { $explode = explode(",", $v['value']); foreach ($explode as $e) { if (!empty($e) && (empty($availableRelations) || $availableRelations[$e] === true)) { if ($values[$e]) { $count = $values[$e]['count'] + $v['count']; } else { $count = $v['count']; } $values[$e] = array('value' => $e, "count" => $count); } } } // done return $this->view->partial($script, ['hideFilter' => $filterDefinition->getRequiredFilterField() && empty($currentFilter[$filterDefinition->getRequiredFilterField()]), 'label' => $filterDefinition->getLabel(), 'currentValue' => $currentFilter[$filterDefinition->getField()], 'values' => array_values($values), 'fieldname' => $filterDefinition->getField(), 'metaData' => $filterDefinition->getMetaData()]); }
public function getFilterFrontend(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter) { if ($filterDefinition->getScriptPath()) { $script = $filterDefinition->getScriptPath(); } else { $script = $this->script; } $rawValues = $productList->getGroupBySystemValues($filterDefinition->getField(), true); $values = array(); $availableRelations = array(); if ($filterDefinition->getAvailableCategories()) { foreach ($filterDefinition->getAvailableCategories() as $rel) { $availableRelations[$rel->getId()] = true; } } foreach ($rawValues as $v) { $values[$v['value']] = array('value' => $v['value'], "count" => $v['count']); } return $this->view->partial($script, array("hideFilter" => $filterDefinition->getRequiredFilterField() && empty($currentFilter[$filterDefinition->getRequiredFilterField()]), "label" => $filterDefinition->getLabel(), "currentValue" => $currentFilter[$filterDefinition->getField()], "values" => array_values($values), "fieldname" => $filterDefinition->getField())); }