|
10 | 10 | use Shopware\Core\Content\Category\SalesChannel\AbstractCategoryRoute; |
11 | 11 | use Shopware\Storefront\Page\Navigation\NavigationPageLoadedEvent; |
12 | 12 | use Symfony\Component\EventDispatcher\EventSubscriberInterface; |
| 13 | +use function Omikron\FactFinder\Shopware6\Internal\Utils\safeGetByName; |
13 | 14 |
|
14 | 15 | class CategoryView implements EventSubscriberInterface |
15 | 16 | { |
@@ -40,15 +41,16 @@ public static function getSubscribedEvents() |
40 | 41 |
|
41 | 42 | public function onPageLoaded(NavigationPageLoadedEvent $event): void |
42 | 43 | { |
43 | | - $navigationId = $event->getRequest()->get('navigationId', $event->getSalesChannelContext()->getSalesChannel()->getNavigationCategoryId()); |
44 | | - $category = $this->cmsPageRoute->load($navigationId, $event->getRequest(), $event->getSalesChannelContext())->getCategory(); |
45 | | - $path = $this->getPath($category); |
46 | | - $safeGetByName = fn (?array $collection) => fn (string $name) => is_array($collection) && isset($collection[$name]) && $collection[$name]; |
| 44 | + $navigationId = $event->getRequest()->get('navigationId', $event->getSalesChannelContext()->getSalesChannel()->getNavigationCategoryId()); |
| 45 | + $category = $this->cmsPageRoute->load($navigationId, $event->getRequest(), $event->getSalesChannelContext())->getCategory(); |
| 46 | + $path = $this->getPath($category); |
| 47 | + $disableImmediate = safeGetByName($category->getCustomFields())(OmikronFactFinder::DISABLE_SEARCH_IMMEDIATE_CUSTOM_FIELD_NAME); |
| 48 | + $isHome = $event->getRequest()->get('_route') === 'frontend.home.page'; |
47 | 49 |
|
48 | 50 | $event->getPage()->getExtension('factfinder')->assign( |
49 | 51 | [ |
50 | 52 | 'communication' => [ |
51 | | - 'search-immediate' => $safeGetByName($category->getCustomFields())(OmikronFactFinder::DISABLE_SEARCH_IMMEDIATE_CUSTOM_FIELD_NAME) ? 'false' : 'true', |
| 53 | + 'search-immediate' => $isHome && $disableImmediate ? 'false' : 'true', |
52 | 54 | 'add-params' => $path ? implode(',', $this->initial + [sprintf('filter=%s', urlencode($this->fieldName . ':' . $path))]) : '', |
53 | 55 | ], |
54 | 56 | ]); |
|
0 commit comments