@@ -249,14 +249,7 @@ public function getPageUrl($page, $scope, $storeId)
249249 case 'trustpilot_trustbox_homepage ' :
250250 return $ this ->_storeManager ->getStore ($ storeId )->getBaseUrl ().'?___store= ' .$ storeCode ;
251251 case 'trustpilot_trustbox_category ' :
252- $ collection = $ this ->_categoryCollectionFactory ->create ();
253- $ collection ->addAttributeToSelect ('* ' );
254- $ collection ->setStore ($ storeId );
255- $ collection ->addAttributeToFilter ('is_active ' , 1 );
256- $ collection ->addAttributeToFilter ('children_count ' , 0 );
257- $ collection ->addUrlRewriteToResult ();
258- $ collection ->setPageSize (1 );
259- $ category = $ collection ->getFirstItem ();
252+ $ category = $ this ->getFirstCategory ($ storeId );
260253 $ productUrl = strtok ($ category ->getUrl (),'? ' ).'?___store= ' .$ storeCode ;
261254 return $ productUrl ;
262255 case 'trustpilot_trustbox_product ' :
@@ -281,6 +274,17 @@ public function getPageUrl($page, $scope, $storeId)
281274 }
282275 }
283276
277+ public function getFirstCategory ($ storeId ) {
278+ $ collection = $ this ->_categoryCollectionFactory ->create ();
279+ $ collection ->addAttributeToSelect ('* ' );
280+ $ collection ->setStore ($ storeId );
281+ $ collection ->addAttributeToFilter ('is_active ' , 1 );
282+ $ collection ->addAttributeToFilter ('children_count ' , 0 );
283+ $ collection ->addUrlRewriteToResult ();
284+ $ collection ->setPageSize (1 );
285+ return $ collection ->getFirstItem ();
286+ }
287+
284288 public function getProductIdentificationOptions ()
285289 {
286290 $ fields = array ('none ' , 'sku ' , 'id ' );
@@ -411,38 +415,73 @@ public function getBusinessInformation($scope, $scopeId) {
411415 );
412416 }
413417
414- public function loadCategoryProductInfo ($ settings ) {
415- $ skuSelector = $ settings ->skuSelector ;
416- $ productList = $ variationSkus = $ variationIds = array ();
417-
418- $ params = $ this ->_request ->getParams ();
419- $ category = $ params ['id ' ];
420- $ limit = array_key_exists ('limit ' , $ params ) ? $ params ['limit ' ] : $ this ->scopeConfig ->getValue ('catalog/frontend/grid_per_page ' );
421- $ page = array_key_exists ('limit ' , $ params ) ? $ params ['p ' ] : 1 ;
422-
423- $ objectManager = \Magento \Framework \App \ObjectManager::getInstance ();
424- $ layerResolver = $ objectManager ->getInstance ()->get (\Magento \Catalog \Model \Layer \Resolver::class);
425- $ layer = $ layerResolver ->get ();
426- $ layer ->setCurrentCategory ($ category );
427-
428- $ products = $ layer ->getProductCollection ()->setPage ($ page , $ limit );
429- foreach ($ products ->getItems () as $ product ) {
430- if ($ product ->getTypeId () == 'configurable ' ) {
431- $ childProducts = $ this ->_linkManagement ->getChildren ($ product ->getSku ());
432- $ variationSkus = $ skuSelector != 'id ' ? $ this ->loadSelector ($ product , $ skuSelector , $ childProducts ) : array ();
433- $ variationIds = $ this ->loadSelector ($ product , 'id ' , $ childProducts );
418+ public function loadCategoryProductInfo ($ products , $ scope , $ scopeId ) {
419+ try {
420+ $ settings = json_decode (self ::getConfig ('master_settings_field ' , $ scopeId , $ scope ));
421+ $ skuSelector = empty ($ settings ->skuSelector ) || $ settings ->skuSelector == 'none ' ? 'sku ' : $ settings ->skuSelector ;
422+ $ productList = $ variationSkus = $ variationIds = array ();
423+
424+ foreach ($ products ->getItems () as $ product ) {
425+ if ($ product ->getTypeId () == 'configurable ' ) {
426+ $ childProducts = $ this ->_linkManagement ->getChildren ($ product ->getSku ());
427+ $ variationSkus = $ skuSelector != 'id ' ? $ this ->loadSelector ($ product , $ skuSelector , $ childProducts ) : array ();
428+ $ variationIds = $ this ->loadSelector ($ product , 'id ' , $ childProducts );
429+ }
430+ $ sku = $ skuSelector != 'id ' ? $ this ->loadSelector ($ product , $ skuSelector ) : '' ;
431+ $ id = $ this ->loadSelector ($ product , 'id ' );
432+ array_push ($ productList , array (
433+ "sku " => $ sku ,
434+ "id " => $ id ,
435+ "variationIds " => $ variationIds ,
436+ "variationSkus " => $ variationSkus ,
437+ "productUrl " => $ product ->getProductUrl () ?: '' ,
438+ "name " => $ product ->getName (),
439+ ));
434440 }
435- $ sku = $ skuSelector != 'id ' ? $ this ->loadSelector ($ product , $ skuSelector ) : '' ;
436- $ id = $ this ->loadSelector ($ product , 'id ' );
437- array_push ($ productList , array (
438- "sku " => $ sku ,
439- "id " => $ id ,
440- "variationIds " => $ variationIds ,
441- "variationSkus " => $ variationSkus ,
442- "productUrl " => $ product ->getProductUrl () ?: '' ,
443- "name " => $ product ->getName (),
441+ return $ productList ;
442+ } catch (\Throwable $ e ) {
443+ $ description = 'Unable to load category product info ' ;
444+ $ this ->_trustpilotLog ->error ($ e , $ description , array (
445+ 'scope ' => $ scope ,
446+ 'scopeId ' => $ scopeId
447+ ));
448+ return array ();
449+ } catch (\Exception $ e ) {
450+ $ description = 'Unable to load category product info ' ;
451+ $ this ->_trustpilotLog ->error ($ e , $ description , array (
452+ 'scope ' => $ scope ,
453+ 'scopeId ' => $ scopeId
454+ ));
455+ return array ();
456+ }
457+ }
458+
459+ public function loadDefaultCategoryProductInfo ($ scope , $ scopeId ) {
460+ try {
461+ $ category = $ this ->getFirstCategory ($ scopeId );
462+ $ limit = $ this ->scopeConfig ->getValue ('catalog/frontend/grid_per_page ' );
463+ $ page = 1 ;
464+
465+ $ objectManager = \Magento \Framework \App \ObjectManager::getInstance ();
466+ $ layerResolver = $ objectManager ->get (\Magento \Catalog \Model \Layer \Resolver::class);
467+ $ layer = $ layerResolver ->get ();
468+ $ layer ->setCurrentCategory ($ category );
469+ $ products = $ layer ->getProductCollection ()->setPage ($ page , $ limit );
470+ return $ this ->loadCategoryProductInfo ($ products , $ scope , $ scopeId );
471+ } catch (\Throwable $ e ) {
472+ $ description = 'Unable to load category product info ' ;
473+ $ this ->_trustpilotLog ->error ($ e , $ description , array (
474+ 'scope ' => $ scope ,
475+ 'scopeId ' => $ scopeId
476+ ));
477+ return array ();
478+ } catch (\Exception $ e ) {
479+ $ description = 'Unable to load category product info ' ;
480+ $ this ->_trustpilotLog ->error ($ e , $ description , array (
481+ 'scope ' => $ scope ,
482+ 'scopeId ' => $ scopeId
444483 ));
484+ return array ();
445485 }
446- return $ productList ;
447486 }
448487}
0 commit comments