/** * @return AbstractCollection|mixed */ public function _getProductCollection() { try { $layer = $this->getLayer(); if ($this->bxHelperData->isFilterLayoutEnabled($layer)) { if (count($this->_productCollection) && !$this->p13nHelper->areThereSubPhrases()) { return $this->_productCollection; } if ($layer instanceof \Magento\Catalog\Model\Layer\Category) { if ($this->categoryViewBlock->isContentMode()) { return parent::_getProductCollection(); } } if ($this->p13nHelper->areThereSubPhrases()) { $this->queries = $this->p13nHelper->getSubPhrasesQueries(); $entity_ids = $this->p13nHelper->getSubPhraseEntitiesIds($this->queries[self::$number]); $entity_ids = array_slice($entity_ids, 0, $this->bxHelperData->getSubPhrasesLimit()); } else { $entity_ids = $this->p13nHelper->getEntitiesIds(); } if (count($entity_ids) == 0) { $entity_ids = array(0); } $this->_setupCollection($entity_ids); return $this->_productCollection; } else { return parent::_getProductCollection(); } } catch (\Exception $e) { $this->bxHelperData->setFallback(true); $this->_logger->critical($e); return parent::_getProductCollection(); } }
/** * Result constructor. * @param Context $context * @param LayerResolver $layerResolver * @param Data $catalogSearchData * @param QueryFactory $queryFactory * @param \Boxalino\Intelligence\Helper\P13n\Adapter $p13nHelper * @param BxHelperData $bxHelperData * @param array $data */ public function __construct(Context $context, LayerResolver $layerResolver, Data $catalogSearchData, QueryFactory $queryFactory, \Boxalino\Intelligence\Helper\P13n\Adapter $p13nHelper, \Boxalino\Intelligence\Helper\Data $bxHelperData, \Psr\Log\LoggerInterface $logger, array $data = []) { $this->_logger = $logger; $this->p13nHelper = $p13nHelper; $this->bxHelperData = $bxHelperData; try { if ($this->bxHelperData->isSearchEnabled()) { if ($this->hasSubPhrases()) { $this->queries = $this->p13nHelper->getSubPhrasesQueries(); } } else { $this->fallback = true; } } catch (\Exception $e) { $this->fallback = true; $this->_logger->critical($e); } parent::__construct($context, $layerResolver, $catalogSearchData, $queryFactory, $data); }
/** * Display search result * * @return void */ public function execute() { if ($this->bxHelperData->isSearchEnabled()) { $this->layerResolver->create(Resolver::CATALOG_LAYER_SEARCH); /* @var $query \Magento\Search\Model\Query */ $query = $this->_queryFactory->get(); try { if ($this->p13Helper->areThereSubPhrases()) { $queries = $this->p13Helper->getSubPhrasesQueries(); if (count($queries) == 1) { $this->_redirect('*/*/*', array('_current' => true, '_query' => array('q' => $queries[0]))); } } if ($this->p13Helper->areResultsCorrected()) { $correctedQuery = $this->p13Helper->getCorrectedQuery(); $query->setQueryText($correctedQuery); } } catch (\Exception $e) { $this->bxHelperData->setFallback(true); $this->_logger->critical($e); } $query->setStoreId($this->_storeManager->getStore()->getId()); if ($query->getQueryText() != '') { if ($this->_objectManager->get('Magento\\CatalogSearch\\Helper\\Data')->isMinQueryLength()) { $query->setId(0)->setIsActive(1)->setIsProcessed(1); } else { $query->saveIncrementalPopularity(); if ($query->getRedirect()) { $this->getResponse()->setRedirect($query->getRedirect()); return; } } $this->_objectManager->get('Magento\\CatalogSearch\\Helper\\Data')->checkNotes(); $this->_view->loadLayout(); $this->_view->renderLayout(); } else { $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl()); } } else { parent::execute(); } }