From ff67990753a90d96f6d5b38539d8b37311c0e965 Mon Sep 17 00:00:00 2001 From: Tommy Quissens Date: Tue, 17 Mar 2020 16:02:23 +0100 Subject: [PATCH 1/3] Made suggestions more in line with search results --- Model/Autocomplete/Page/DataProvider.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Model/Autocomplete/Page/DataProvider.php b/Model/Autocomplete/Page/DataProvider.php index 8f51d97..a762c21 100644 --- a/Model/Autocomplete/Page/DataProvider.php +++ b/Model/Autocomplete/Page/DataProvider.php @@ -159,17 +159,12 @@ function (\Magento\Search\Model\Autocomplete\Item $termItem) { */ private function getCmsPageCollection() { - $pageCollection = null; - $suggestedTerms = $this->getSuggestedTerms(); - $terms = [$this->queryFactory->get()->getQueryText()]; - - if (!empty($suggestedTerms)) { - $terms = array_merge($terms, $suggestedTerms); - } - $pageCollection = $this->cmsCollectionFactory->create(); - $pageCollection->addSearchFilter($terms); + $pageCollection->setPageSize($this->getResultsPageSize()); + + $queryText = $this->queryFactory->get()->getQueryText(); + $pageCollection->addSearchFilter($queryText); return $pageCollection; } From 53839b5ef00a3e0ff2f4fc7f7d275dcfb52f2857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20LESCALLIER?= Date: Wed, 29 Apr 2020 13:23:35 +0200 Subject: [PATCH 2/3] Add event dispatch for customize autocomplete item --- Model/Autocomplete/Page/DataProvider.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Model/Autocomplete/Page/DataProvider.php b/Model/Autocomplete/Page/DataProvider.php index 8f51d97..3d72a62 100644 --- a/Model/Autocomplete/Page/DataProvider.php +++ b/Model/Autocomplete/Page/DataProvider.php @@ -20,6 +20,7 @@ use Smile\ElasticsuiteCore\Helper\Autocomplete as ConfigurationHelper; use Smile\ElasticsuiteCms\Model\ResourceModel\Page\Fulltext\CollectionFactory as CmsCollectionFactory; use Smile\ElasticsuiteCore\Model\Autocomplete\Terms\DataProvider as TermDataProvider; +use Magento\Framework\Event\ManagerInterface as EventManager; /** * Catalog product autocomplete data provider. @@ -71,6 +72,11 @@ class DataProvider implements DataProviderInterface */ protected $storeManager; + /** + * @var EventManager + */ + protected $eventManager; + /** * @var string Autocomplete result type */ @@ -85,6 +91,7 @@ class DataProvider implements DataProviderInterface * @param CmsCollectionFactory $cmsCollectionFactory Cms collection factory. * @param ConfigurationHelper $configurationHelper Autocomplete configuration helper. * @param StoreManagerInterface $storeManager Store manager. + * @param EventManager $eventManager Event dispatcher * @param string $type Autocomplete provider type. */ public function __construct( @@ -94,6 +101,7 @@ public function __construct( CmsCollectionFactory $cmsCollectionFactory, ConfigurationHelper $configurationHelper, StoreManagerInterface $storeManager, + EventManager $eventManager, $type = self::AUTOCOMPLETE_TYPE ) { $this->itemFactory = $itemFactory; @@ -101,6 +109,7 @@ public function __construct( $this->termDataProvider = $termDataProvider; $this->cmsCollectionFactory = $cmsCollectionFactory; $this->configurationHelper = $configurationHelper; + $this->eventManager = $eventManager; $this->type = $type; $this->storeManager = $storeManager; } @@ -121,13 +130,20 @@ public function getItems() $pageCollection = $this->getCmsPageCollection(); if ($pageCollection) { foreach ($pageCollection as $page) { - $result[] = $this->itemFactory->create( + $item = $this->itemFactory->create( [ 'title' => $page->getTitle(), 'url' => $this->storeManager->getStore()->getBaseUrl(). $page->getIdentifier(), 'type' => $this->getType(), ] ); + + $this->eventManager->dispatch( + 'smile_elasticsuite_cms_search_autocomplete_page_item', + ['page' => $page, 'item' => $item] + ); + + $result[] = $item; } } From 502dab2ae571b1089905377bd744c7bb8a3b68fb Mon Sep 17 00:00:00 2001 From: Stephan Bauer Date: Thu, 28 May 2020 09:44:49 +0200 Subject: [PATCH 3/3] Allow to disable the autocomplete results --- Model/Autocomplete/Page/DataProvider.php | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Model/Autocomplete/Page/DataProvider.php b/Model/Autocomplete/Page/DataProvider.php index 8f51d97..0c296c2 100644 --- a/Model/Autocomplete/Page/DataProvider.php +++ b/Model/Autocomplete/Page/DataProvider.php @@ -118,16 +118,18 @@ public function getType() public function getItems() { $result = []; - $pageCollection = $this->getCmsPageCollection(); - if ($pageCollection) { - foreach ($pageCollection as $page) { - $result[] = $this->itemFactory->create( - [ - 'title' => $page->getTitle(), - 'url' => $this->storeManager->getStore()->getBaseUrl(). $page->getIdentifier(), - 'type' => $this->getType(), - ] - ); + if ($this->configurationHelper->isEnabled($this->getType())) { + $pageCollection = $this->getCmsPageCollection(); + if ($pageCollection) { + foreach ($pageCollection as $page) { + $result[] = $this->itemFactory->create( + [ + 'title' => $page->getTitle(), + 'url' => $this->storeManager->getStore()->getBaseUrl(). $page->getIdentifier(), + 'type' => $this->getType(), + ] + ); + } } }