public function getFilters(Layer $layer) { if (!$this->helper->isActiveEngine()) { return parent::getFilters($layer); } if (!count($this->filters)) { $this->filters = []; // $response = $this->_getResponse($layer); $response = $this->searchHelper->getCustomResults(); $questions = $response->QwiserSearchResults->Questions; $aaa = ''; foreach ($questions->children() as $question) { $this->filters[] = $this->createQuestionFilter($question, $layer); $this->appliedFilters[] = $question->getAttribute('Text'); } } $remFilters = array_diff($this->searchHelper->getFilterRequestVars(), $this->appliedFilters); foreach ($this->request->getParams() as $var => $value) { if (in_array($var, $remFilters)) { $question = $this->searchHelper->getQuestionByField($var, 'Text'); if ($question) { $this->createQuestionFilter($question, $layer)->apply($this->request); $this->appliedFilters[] = $var; } } } return $this->filters; }
protected function _getResponse() { if (is_null($this->response)) { $params = $this->searchHelper->getSearchParams(); $this->response = $this->searchHelper->getCustomResults($params); } return $this->response; }
public function isSelected() { $previous_search = $this->searchHelper->getFilterValue($this->getFilter()->getRequestVar()); if ($previous_search && in_array($this->getValue(), explode(',', $previous_search))) { return true; } return false; }
protected function _construct() { parent::_construct(); if ($this->helper->isActiveEngine()) { $blockData = $this->searchHelper->getToolbarData(); foreach ($blockData->getData() as $key => $param) { $this->setData($key, $param); } } }
protected function generateQuickSearchRequest() { $response = $this->searchHelper->getAllQuestions(); $request = []; if (!empty($response->Questions)) { foreach ($response->Questions->children() as $question) { $name = $question->getAttribute('Text'); $queryName = $name . '_query'; $request['queries']['quick_search_container']['queryReference'][] = ['clause' => 'should', 'ref' => $queryName]; $filterName = $name . self::FILTER_SUFFIX; $request['queries'][$queryName] = ['name' => $queryName, 'type' => QueryInterface::TYPE_FILTER, 'filterReference' => [['ref' => $filterName]]]; $bucketName = $name . self::BUCKET_SUFFIX; $request['filters'][$filterName] = ['type' => FilterInterface::TYPE_TERM, 'name' => $filterName, 'field' => $name, 'value' => '$' . $name . '$']; $request['aggregations'][$bucketName] = ['type' => BucketInterface::TYPE_TERM, 'name' => $bucketName, 'field' => $name, 'metric' => [["type" => "count"]]]; } } return $request; }
public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Session $catalogSession, \Magento\Catalog\Model\Config $catalogConfig, ToolbarModel $toolbarModel, \Magento\Framework\Url\EncoderInterface $urlEncoder, \Magento\Catalog\Helper\Product\ProductList $productListHelper, \Magento\Framework\Data\Helper\PostHelper $postDataHelper, \Magento\Framework\Registry $registry, \Celebros\ConversionPro\Helper\Data $helper, \Celebros\ConversionPro\Helper\Search $searchHelper, array $data = []) { $this->registry = $registry; $this->helper = $helper; $this->searchHelper = $searchHelper; parent::__construct($context, $catalogSession, $catalogConfig, $toolbarModel, $urlEncoder, $productListHelper, $postDataHelper, $data); if ($this->helper->isActiveEngine() && $this->helper->isPermittedHandle()) { // set block module name required to use same template as original $this->setModuleName('Magento_Catalog'); // set current page, limit, order to search helper instead of collection $this->searchHelper->setCurrentPage($this->getCurrentPage()); $this->searchHelper->setPageSize($this->getLimit()); $this->setDefaultDirection('asc'); if (!$this->_getData('_current_grid_order') && !$this->_toolbarModel->getOrder() || in_array($this->getCurrentOrder(), ['relevance', 'position'])) { $this->setDefaultDirection('desc'); } $this->searchHelper->setOrder($this->getCurrentOrder(), $this->getCurrentDirection()); $blockData = $this->searchHelper->getToolbarData(); foreach ($blockData->getData() as $key => $param) { $this->setData($key, $param); } } }