/** * @inheritdoc */ public function handleRequest(Request $request, Criteria $criteria, ShopContextInterface $context) { if ($request->has('esd')) { $criteria->addCondition(new EsdCondition()); } if ($request->get('sSort') == 'random') { $criteria->addSorting(new RandomSorting()); } $criteria->addFacet(new EsdFacet()); }
/** * @inheritdoc */ public function handleRequest(Request $request, Criteria $criteria, ShopContextInterface $context) { /* * Checks if the filter is active */ if ($request->has('productAttributesForm')) { $params = $request->getParams(); $searchParams = explode('|', $params['productAttributesForm']); $criteria->addCondition(new ProductAttributeCondition('attr1', ProductAttributeCondition::OPERATOR_IN, $searchParams)); } /** * adds the attributes facet */ $criteria->addFacet(new ProductAttributeFacet('attr1', ProductAttributeFacet::MODE_VALUE_LIST_RESULT, 'productAttributesForm', 'attributes')); }
/** * @param Request $request * @param Criteria $criteria */ private function addManufacturerCondition(Request $request, Criteria $criteria) { if (!$request->has('sSupplier')) { return; } $manufacturers = explode('|', $request->getParam('sSupplier')); if (!empty($manufacturers)) { $criteria->addCondition(new ManufacturerCondition($manufacturers)); } }
private function getSearchLinks(Request $request, Criteria $criteria) { $filters = array('sSort', 'sPerPage', 'sFilter_supplier', 'sFilter_category', 'sFilter_price', 'sFilter_propertygroup'); $activeFilters = array(); foreach ($filters as $filter) { if (!$request->has($filter) || !$request->getParam($filter)) { continue; } $activeFilters[$filter] = $request->getParam($filter); } $activeFilters['sSearch'] = $criteria->getCondition('search')->getTerm(); /**@var $searchTerm SearchTermCondition*/ $searchTerm = $criteria->getCondition('search'); $baseLink = $this->container->get('config')->get('baseFile') . '?sViewport=search&sSearch=' . urlencode($searchTerm->getTerm()); $withoutSort = $activeFilters; $withoutPerPage = $activeFilters; $withoutCategory = $activeFilters; $withoutSupplier = $activeFilters; $withoutPrice = $activeFilters; $withoutProperty = $activeFilters; unset($withoutSort['sSort']); unset($withoutPerPage['sPerPage']); unset($withoutCategory['sFilter_category']); unset($withoutSupplier['sFilter_supplier']); unset($withoutPrice['sFilter_price']); unset($withoutProperty['sFilter_propertygroup']); $links = array('sLink' => $baseLink, 'sSearch' => $this->container->get('router')->assemble(array('sViewport' => 'search')), 'sPage' => $baseLink . '&' . http_build_query($activeFilters, "", "&"), 'sSort' => $baseLink . '&' . http_build_query($withoutSort, "", "&"), 'sPerPage' => $baseLink . '&' . http_build_query($withoutPerPage, "", "&"), 'sFilter' => array('category' => $baseLink . '&' . http_build_query($withoutCategory, "", "&"), 'supplier' => $baseLink . '&' . http_build_query($withoutSupplier, "", "&"), 'price' => $baseLink . '&' . http_build_query($withoutPrice, "", "&"), 'property' => $baseLink . '&' . http_build_query($withoutProperty, "", "&"))); return $links; }