/** * Display search result * * @return void */ public function execute() { $this->layerResolver->create(Resolver::CATALOG_LAYER_SEARCH); /* @var $query \Magento\Search\Model\Query */ $query = $this->_queryFactory->get(); $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 { if ($query->getId()) { $query->setPopularity($query->getPopularity() + 1); } else { $query->setPopularity(1); } if ($query->getRedirect()) { $query->save(); $this->getResponse()->setRedirect($query->getRedirect()); return; } else { $query->prepare(); } } $this->_objectManager->get('Magento\\CatalogSearch\\Helper\\Data')->checkNotes(); $this->_view->loadLayout(); $this->_view->renderLayout(); if (!$this->_objectManager->get('Magento\\CatalogSearch\\Helper\\Data')->isMinQueryLength()) { $query->save(); } } else { $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl()); } }
/** * @param Context $context * @param LayerResolver $layerResolver * @param Data $catalogSearchData * @param QueryFactory $queryFactory * @param array $data */ public function __construct(Context $context, LayerResolver $layerResolver, Data $catalogSearchData, QueryFactory $queryFactory, array $data = []) { $this->catalogLayer = $layerResolver->get(); $this->catalogSearchData = $catalogSearchData; $this->queryFactory = $queryFactory; parent::__construct($context, $data); }
/** * @param Context $context * @param Advanced $catalogSearchAdvanced * @param LayerResolver $layerResolver * @param UrlFactory $urlFactory * @param array $data */ public function __construct(Context $context, Advanced $catalogSearchAdvanced, LayerResolver $layerResolver, UrlFactory $urlFactory, array $data = []) { $this->_catalogSearchAdvanced = $catalogSearchAdvanced; $this->_catalogLayer = $layerResolver->get(); $this->_urlFactory = $urlFactory; parent::__construct($context, $data); }
/** * @param Template\Context $context * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Catalog\Model\Layer\FilterList $filterList * @param \Magento\Catalog\Model\Layer\AvailabilityFlagInterface $visibilityFlag * @param array $data */ public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Catalog\Model\Layer\FilterList $filterList, \Magento\Catalog\Model\Layer\AvailabilityFlagInterface $visibilityFlag, array $data = []) { $this->_catalogLayer = $layerResolver->get(); $this->filterList = $filterList; $this->visibilityFlag = $visibilityFlag; parent::__construct($context, $data); }
/** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Framework\Registry $registry * @param \Magento\Catalog\Helper\Category $categoryHelper * @param array $data */ public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Framework\Registry $registry, \Magento\Catalog\Helper\Category $categoryHelper, array $data = []) { $this->_categoryHelper = $categoryHelper; $this->_catalogLayer = $layerResolver->get(); $this->_coreRegistry = $registry; parent::__construct($context, $data); }
/** * Constructor. * * @param Resolver $layerResolver Layer. * @param Data $catalogSearchData Catalog search helper. * @param QueryFactory $queryFactory Search query factory. * @param QueryResource $queryResource Search query resource. */ public function __construct(Resolver $layerResolver, Data $catalogSearchData, QueryFactory $queryFactory, QueryResource $queryResource) { $this->layer = $layerResolver->get(); $this->catalogSearchData = $catalogSearchData; $this->queryFactory = $queryFactory; $this->queryResource = $queryResource; }
/** * @param Algorithm $algorithm * @param Resolver $layerResolver * @param ScopeConfigInterface $scopeConfig * @param Render $render * @param IntervalFactory $intervalFactory */ public function __construct(Algorithm $algorithm, Resolver $layerResolver, ScopeConfigInterface $scopeConfig, Render $render, IntervalFactory $intervalFactory) { $this->algorithm = $algorithm; $this->layer = $layerResolver->get(); $this->scopeConfig = $scopeConfig; $this->render = $render; $this->intervalFactory = $intervalFactory; }
/** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Framework\Registry $registry * @param \Ves\Brand\Helper\Data $brandHelper * @param \Ves\Brand\Model\Group $groupModel * @param array $data */ public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Framework\Registry $registry, \Ves\Brand\Helper\Data $brandHelper, \Ves\Brand\Model\Group $groupModel, array $data = []) { $this->_brandHelper = $brandHelper; $this->_catalogLayer = $layerResolver->get(); $this->_coreRegistry = $registry; $this->_groupModel = $groupModel; parent::__construct($context, $data); }
/** * @param \Magento\Framework\Model\ResourceModel\Db\Context $context * @param \Magento\Framework\Event\ManagerInterface $eventManager * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Customer\Model\Session $session * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param string $connectionName */ public function __construct(\Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Customer\Model\Session $session, \Magento\Store\Model\StoreManagerInterface $storeManager, $connectionName = null) { $this->layer = $layerResolver->get(); $this->session = $session; $this->storeManager = $storeManager; $this->_eventManager = $eventManager; parent::__construct($context, $connectionName); }
/** * @param Context $context * @param \Magento\Framework\Data\Helper\PostHelper $postDataHelper * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param CategoryRepositoryInterface $categoryRepository * @param \Magento\Framework\Url\Helper\Data $urlHelper * @param array $data */ public function __construct(\Magento\Catalog\Block\Product\Context $context, \Magento\Framework\Data\Helper\PostHelper $postDataHelper, \Magento\Catalog\Model\Layer\Resolver $layerResolver, CategoryRepositoryInterface $categoryRepository, \Magento\Framework\Url\Helper\Data $urlHelper, array $data = []) { $this->_catalogLayer = $layerResolver->get(); $this->_postDataHelper = $postDataHelper; $this->categoryRepository = $categoryRepository; $this->urlHelper = $urlHelper; parent::__construct($context, $data); }
/** * Facets constructor. * @param \Magento\Framework\View\Element\Template\Context $context * @param \Boxalino\Intelligence\Helper\P13n\Adapter $p13nHelper * @param \Boxalino\Intelligence\Helper\Data $bxHelperData * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param array $data */ public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Boxalino\Intelligence\Helper\P13n\Adapter $p13nHelper, \Boxalino\Intelligence\Helper\Data $bxHelperData, \Magento\Framework\ObjectManagerInterface $objectManager, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Psr\Log\LoggerInterface $logger, array $data = []) { parent::__construct($context, $data); $this->_logger = $logger; $this->p13nHelper = $p13nHelper; $this->layer = $layerResolver->get(); $this->objectManager = $objectManager; $this->bxHelperData = $bxHelperData; }
/** * @param Algorithm $algorithm * @param Resolver $layerResolver * @param ScopeConfigInterface $scopeConfig * @param Render $render * @param Registry $coreRegistry * @param Price $resource * @param Range $range */ public function __construct(Algorithm $algorithm, Resolver $layerResolver, ScopeConfigInterface $scopeConfig, Render $render, Registry $coreRegistry, Price $resource, Range $range) { $this->algorithm = $algorithm; $this->layer = $layerResolver->get(); $this->scopeConfig = $scopeConfig; $this->render = $render; $this->coreRegistry = $coreRegistry; $this->range = $range; $this->resource = $resource; }
/** * State constructor. * @param \Boxalino\Intelligence\Helper\P13n\Adapter $p13nHelper * @param \Boxalino\Intelligence\Helper\Data $bxHelperData * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Framework\Registry $registry * @param \Magento\Catalog\Block\Category\View $categoryViewBlock * @param array $data */ public function __construct(\Boxalino\Intelligence\Helper\P13n\Adapter $p13nHelper, \Boxalino\Intelligence\Helper\Data $bxHelperData, \Magento\Framework\ObjectManagerInterface $objectManager, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Framework\Registry $registry, \Magento\Catalog\Block\Category\View $categoryViewBlock, \Psr\Log\LoggerInterface $logger, array $data = []) { $this->_logger = $logger; $this->_categoryViewBlock = $categoryViewBlock; $this->_layer = $layerResolver->get(); $this->bxHelperData = $bxHelperData; $this->_data = $data; $this->p13nHelper = $p13nHelper; $this->objectManager = $objectManager; parent::__construct($data); }
/** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Catalog\Model\CategoryFactory $categoryFactory * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Framework\App\Http\Context $httpContext * @param \Magento\Catalog\Helper\Category $catalogCategory * @param \Magento\Framework\Registry $registry * @param \Magento\Catalog\Model\Indexer\Category\Flat\State $flatState * @param array $data */ public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\CategoryFactory $categoryFactory, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Framework\App\Http\Context $httpContext, \Magento\Catalog\Helper\Category $catalogCategory, \Magento\Framework\Registry $registry, \Magento\Catalog\Model\Indexer\Category\Flat\State $flatState, array $data = []) { $this->_productCollectionFactory = $productCollectionFactory; $this->_catalogLayer = $layerResolver->get(); $this->httpContext = $httpContext; $this->_catalogCategory = $catalogCategory; $this->_registry = $registry; $this->flatState = $flatState; $this->_categoryInstance = $categoryFactory->create(); parent::__construct($context, $data); }
/** * @param \Magento\Framework\Registry $registry * @param Resource\Category $categoryResource * @param Resource\Product $catalogProduct * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param Layer\Resolver $layerResolver * @param \Magento\Catalog\Helper\Category $catalogCategory * @param \Magento\Catalog\Helper\Data $catalogData * @param Indexer\Category\Flat\State $categoryFlatState * @param Resource\ProductFactory $productResourceFactory */ public function __construct(\Magento\Framework\Registry $registry, \Magento\Catalog\Model\Resource\Category $categoryResource, \Magento\Catalog\Model\Resource\Product $catalogProduct, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Catalog\Helper\Category $catalogCategory, \Magento\Catalog\Helper\Data $catalogData, \Magento\Catalog\Model\Indexer\Category\Flat\State $categoryFlatState, \Magento\Catalog\Model\Resource\ProductFactory $productResourceFactory) { $this->_registry = $registry; $this->_categoryResource = $categoryResource; $this->_catalogProduct = $catalogProduct; $this->_storeManager = $storeManager; $this->_catalogLayer = $layerResolver->get(); $this->_catalogCategory = $catalogCategory; $this->_catalogData = $catalogData; $this->categoryFlatConfig = $categoryFlatState; $this->_productResourceFactory = $productResourceFactory; }
/** * @return void */ public function execute() { try { $this->layerResolver->create('advanced'); $this->_catalogSearchAdvanced->addFilters($this->getRequest()->getQueryValue()); $this->_view->loadLayout(); $this->_view->renderLayout(); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addError($e->getMessage()); $defaultUrl = $this->_urlFactory->create()->addQueryParams($this->getRequest()->getQueryValue())->getUrl('*/*/'); $this->getResponse()->setRedirect($this->_redirect->error($defaultUrl)); } }
public function __construct(\Magento\Catalog\Block\Product\Context $context, \Magento\Framework\Data\Helper\PostHelper $postDataHelper, \Magento\Catalog\Model\Layer\Resolver $layerResolver, CategoryRepositoryInterface $categoryRepository, \Magento\Framework\Url\Helper\Data $urlHelper, ProductRepositoryInterface $productRepository, SearchCriteriaInterface $searchCriteria, FilterGroup $searchCriteriaGroup, array $data = []) { $this->_catalogLayer = $layerResolver->get(); $this->_postDataHelper = $postDataHelper; $this->categoryRepository = $categoryRepository; $this->urlHelper = $urlHelper; $this->_productRepository = $productRepository; // new injection $this->_searchCriteria = $searchCriteria; // new injection $this->_searchCriteriaGroup = $searchCriteriaGroup; // new injection parent::__construct($context, $data); }
/** * Get catalog layer * @return \Magento\Catalog\Model\Layer */ private function getCatalogLayer() { if ($this->_catalogLayer === null) { $this->_catalogLayer = $this->layerResolver->get(); } return $this->_catalogLayer; }
/** * Get current Category from catalog layer * * @return \Magento\Catalog\Model\Category */ private function getCurrentCategory() { $catalogLayer = $this->layerResolver->get(); if (!$catalogLayer) { return null; } return $catalogLayer->getCurrentCategory(); }
/** * {@inheritdoc} * @param Observer $observer * @return bool */ public function execute(Observer $observer) { /** @var \Magento\Framework\App\Request\Http $request */ $request = $observer->getEvent()->getData('request'); // search page && feature enabled && not misspelled if ($request->getControllerModule() == 'Magento_CatalogSearch' && $this->config->isRedirectOnSingleResult() && !$request->getParam('o')) { // if one result and this is product if ($this->query->getNumResults() == 1 && $this->layerResolver->get()->getProductCollection()->getSize() == 1) { /** @var \Magento\Catalog\Model\Product $product */ $product = $this->layerResolver->get()->getProductCollection()->getFirstItem(); /** @var \Magento\Framework\App\Response\Http\Interceptor $response */ $response = $observer->getEvent()->getData('response'); $response->setRedirect($product->getProductUrl())->setStatusCode(301)->sendResponse(); } } return true; }
/** * Process redirect to the product page if this is the only search result. * * @param Observer $observer The observer * @event controller_action_postdispatch_catalogsearch_result_index * * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { if ($this->scopeConfig->isSetFlag(self::REDIRECT_SETTINGS_CONFIG_XML_FLAG)) { $layer = $this->layerResolver->get(); $layerState = $layer->getState(); if (count($layerState->getFilters()) === 0) { $productCollection = $layer->getProductCollection(); if ($productCollection->getCurPage() === 1 && $productCollection->getSize() === 1) { /** @var \Magento\Catalog\Api\Data\ProductInterface $product */ $product = $productCollection->getFirstItem(); if ($product->getId()) { $this->addRedirectMessage($product); $observer->getControllerAction()->getResponse()->setRedirect($product->getProductUrl()); } } } } }
/** * 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(); } }
/** * @return void */ public function init() { if (!self::$isLayerCreated) { try { $this->layerResolver->create(LayerResolver::CATALOG_LAYER_SEARCH); } catch (\Exception $e) { } finally { self::$isLayerCreated = true; } } }
/** * Returns array of items loaded through ajax. * * @return array */ private function getItems() { $items = []; $layer = $this->layerResolver->get(); $filterList = $this->getFilterList(); foreach ($filterList->getFilters($layer) as $filter) { if ($filter->getRequestVar() == $this->getFilterName()) { foreach ($filter->getItems() as $item) { $item->setBaseUrl($this->_redirect->getRedirectUrl()); $items[] = $item->toArray(['url', 'count', 'is_selected', 'label']); } } } return $items; }
/** * Category view action * * @return \Magento\Framework\Controller\ResultInterface * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function execute() { if ($this->_request->getParam(\Magento\Framework\App\ActionInterface::PARAM_NAME_URL_ENCODED)) { return $this->resultRedirectFactory->create()->setUrl($this->_redirect->getRedirectUrl()); } $category = $this->_initCategory(); if ($category) { $this->layerResolver->create(Resolver::CATALOG_LAYER_CATEGORY); $settings = $this->_catalogDesign->getDesignSettings($category); // apply custom design if ($settings->getCustomDesign()) { $this->_catalogDesign->applyCustomDesign($settings->getCustomDesign()); } $this->_catalogSession->setLastViewedCategoryId($category->getId()); $page = $this->resultPageFactory->create(); // apply custom layout (page) template once the blocks are generated if ($settings->getPageLayout()) { $page->getConfig()->setPageLayout($settings->getPageLayout()); } $hasChildren = $category->hasChildren(); if ($category->getIsAnchor()) { $type = $hasChildren ? 'layered' : 'layered_without_children'; } else { $type = $hasChildren ? 'default' : 'default_without_children'; } if (!$hasChildren) { // Two levels removed from parent. Need to add default page type. $parentType = strtok($type, '_'); $page->addPageLayoutHandles(['type' => $parentType]); } $page->addPageLayoutHandles(['type' => $type, 'id' => $category->getId()]); // apply custom layout update once layout is loaded $layoutUpdates = $settings->getLayoutUpdates(); if ($layoutUpdates && is_array($layoutUpdates)) { foreach ($layoutUpdates as $layoutUpdate) { $page->addUpdate($layoutUpdate); $page->addPageLayoutHandles(['layout_update' => md5($layoutUpdate)]); } } $page->getConfig()->addBodyClass('page-products')->addBodyClass('categorypath-' . $this->categoryUrlPathGenerator->getUrlPath($category))->addBodyClass('category-' . $category->getUrlKey()); return $page; } elseif (!$this->getResponse()->isRedirect()) { return $this->resultForwardFactory->create()->forward('noroute'); } }
/** * {@inheritdoc} */ protected function buildSearchCollection() { /** @var \Magento\Catalog\Model\Layer\Search $layer */ $layer = $this->layerResolver->get(); if ($this->config->isMultiStoreModeEnabled()) { $originalCategory = $layer->getData('current_category'); // set random category for multi-store mode // this mode can be not compatible with some layered navigation $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $category = $objectManager->create('Magento\\Catalog\\Model\\Category'); $category->setId(rand(100000, 900000)); $layer->setData('current_category', $category); } $collection = $layer->getProductCollection(); if ($this->config->isMultiStoreModeEnabled()) { $layer->setData('current_category', $originalCategory); } return $collection; }
/** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param array $data */ public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Layer\Resolver $layerResolver, array $data = []) { $this->_catalogLayer = $layerResolver->get(); parent::__construct($context, $data); }
/** * @param Resource $resource * @param ScopeResolverInterface $scopeResolver * @param Resolver $layerResolver */ public function __construct(Resource $resource, ScopeResolverInterface $scopeResolver, Resolver $layerResolver) { $this->resource = $resource; $this->scopeResolver = $scopeResolver; $this->layer = $layerResolver->get(); }
/** * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory * @param \Magento\Catalog\Model\Product\Visibility $visibility */ public function __construct(\Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory, \Magento\Catalog\Model\Product\Visibility $visibility) { $this->catalogLayer = $layerResolver->get(); $this->collectionFactory = $collectionFactory; $this->visibility = $visibility; }
/** * FilterableAttributeList constructor * * @param \Magento\Catalog\Model\Resource\Product\Attribute\CollectionFactory $collectionFactory * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver */ public function __construct(\Magento\Catalog\Model\Resource\Product\Attribute\CollectionFactory $collectionFactory, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\Layer\Resolver $layerResolver) { $this->collectionFactory = $collectionFactory; $this->storeManager = $storeManager; $this->layer = $layerResolver->get(); }