Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DataProvider.php
Go to the documentation of this file.
1 <?php
7 
12 
14 {
19  const CONFIG_IS_ENABLED = 'catalog/search/search_recommendations_enabled';
20 
25  const CONFIG_RESULTS_COUNT_ENABLED = 'catalog/search/search_recommendations_count_results_enabled';
26 
31  const CONFIG_RESULTS_COUNT = 'catalog/search/search_recommendations_count';
32 
36  private $queryResultFactory;
37 
41  protected $searchLayer;
42 
46  private $scopeConfig;
47 
51  private $recommendationsFactory;
52 
59  public function __construct(
60  ScopeConfigInterface $scopeConfig,
61  \Magento\Catalog\Model\Layer\Resolver $layerResolver,
62  \Magento\AdvancedSearch\Model\ResourceModel\RecommendationsFactory $recommendationsFactory,
63  \Magento\Search\Model\QueryResultFactory $queryResultFactory
64  ) {
65  $this->scopeConfig = $scopeConfig;
66  $this->searchLayer = $layerResolver->get();
67  $this->recommendationsFactory = $recommendationsFactory;
68  $this->queryResultFactory = $queryResultFactory;
69  }
70 
74  public function isResultsCountEnabled()
75  {
76  return (bool)$this->scopeConfig->getValue(
77  self::CONFIG_RESULTS_COUNT_ENABLED,
79  );
80  }
81 
85  public function getItems(QueryInterface $query)
86  {
87  $recommendations = [];
88 
89  if (!$this->isSearchRecommendationsEnabled()) {
90  return [];
91  }
92 
93  foreach ($this->getSearchRecommendations($query) as $recommendation) {
94  $recommendations[] = $this->queryResultFactory->create(
95  [
96  'queryText' => $recommendation['query_text'],
97  'resultsCount' => $recommendation['num_results'],
98  ]
99  );
100  }
101  return $recommendations;
102  }
103 
108  private function getSearchRecommendations(\Magento\Search\Model\QueryInterface $query)
109  {
110  $recommendations = [];
111 
112  if ($this->isSearchRecommendationsEnabled()) {
113  $productCollection = $this->searchLayer->getProductCollection();
114  $params = ['store_id' => $productCollection->getStoreId()];
115 
117  $recommendationsResource = $this->recommendationsFactory->create();
118  $recommendations = $recommendationsResource->getRecommendationsByQuery(
119  $query->getQueryText(),
120  $params,
121  $this->getSearchRecommendationsCount()
122  );
123  }
124 
125  return $recommendations;
126  }
127 
131  private function isSearchRecommendationsEnabled()
132  {
133  return (bool)$this->scopeConfig->getValue(
134  self::CONFIG_IS_ENABLED,
136  );
137  }
138 
142  private function getSearchRecommendationsCount()
143  {
144  return (int)$this->scopeConfig->getValue(
145  self::CONFIG_RESULTS_COUNT,
147  );
148  }
149 }
__construct(ScopeConfigInterface $scopeConfig, \Magento\Catalog\Model\Layer\Resolver $layerResolver, \Magento\AdvancedSearch\Model\ResourceModel\RecommendationsFactory $recommendationsFactory, \Magento\Search\Model\QueryResultFactory $queryResultFactory)
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18