Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/iblock.selector.landing/ |
Upload File : |
<?php use Bitrix\Main, Bitrix\Main\Loader, Bitrix\Main\Localization\Loc, Bitrix\Iblock, Bitrix\Catalog, Bitrix\Landing; if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); Loc::loadMessages(__FILE__); if (!Loader::includeModule('iblock')) { ShowError(Loc::getMessage('IBLOCK_SELECTOR_ELEMENT_ERR_IBLOCK_MODULE_NOT_INSTALLED')); return; } class IblockSelectorLanding extends Iblock\Component\Selector\Element { protected $landingIncluded = null; public function __construct($component = null) { parent::__construct($component); } /** * @param array $params * @return array */ public function onPrepareComponentParams($params) { $params['USE_MODE'] = parent::MODE_SLIDER; $params['RESULT_ACTION_TYPE'] = parent::RESULT_ACTION_TYPE_SLIDER; $params['RESULT_DATA_TYPE'] = parent::RESULT_DATA_TYPE_FILTER; return parent::onPrepareComponentParams($params); } /** * @return void */ protected function checkModules() { if ($this->landingIncluded === null) $this->landingIncluded = Loader::includeModule('landing'); } /** * @return array */ protected function prepareGridFilterCurrentPreset() { $preset = []; if ( $this->landingIncluded && $this->request->isPost() && !$this->request->isAjaxRequest() ) { $data = $this->request->getPost('filter'); if (!empty($data) && is_array($data)) { $sourceFilter = new Landing\Source\UiFilterPreset(); $sourceFilter->setFields($this->getGridFilterDefinition()); $preset = $sourceFilter->create($data); unset($sourceFilter); } unset($data); } return $preset; } /** * @return array */ protected function getProductFieldsFilterDefinition() { $result = parent::getProductFieldsFilterDefinition(); if (isset($this->arParams['SIMPLE_PRODUCTS']) && $this->arParams['SIMPLE_PRODUCTS'] === 'Y') { if (isset($result['TYPE'])) unset($result['TYPE']); } return $result; } /** * @return void */ protected function prepareResult() { parent::prepareResult(); $this->arResult['SETTINGS']['FILTER']['DEFAULT'] = [ [ 'name' => $this->getStorageItem(self::STORAGE_ENTITY_IBLOCK, 'FILTER_ALL'), 'key' => 'IBLOCK_ID', 'value' => $this->getStorageItem(self::STORAGE_ENTITY_IBLOCK, 'IBLOCK_ID') ] ]; if ( (isset($this->arParams['SIMPLE_PRODUCTS']) && $this->arParams['SIMPLE_PRODUCTS'] === 'Y') && $this->catalogIncluded && (int)$this->getStorageItem(self::STORAGE_ENTITY_IBLOCK, 'OFFERS_IBLOCK_ID') > 0 ) { $this->arResult['SETTINGS']['FILTER']['INTERNAL'] = [ [ 'name' => Loc::getMessage('IBLOCK_SELECTOR_ELEMENT_SLIDER_FILTER_SIMPLE_PRODUCTS'), 'key' => 'TYPE', 'value' => [ [ 'VALUE' => Catalog\ProductTable::TYPE_PRODUCT ], [ 'VALUE' => Catalog\ProductTable::TYPE_SET ] ] ] ]; } if ($this->getQuickSearchField() !== null) { $this->arResult['SETTINGS']['FILTER']['QUICK_SEARCH_FIELD'] = $this->getQuickSearchDescription(); } } /** * @return array */ protected function getClientExtensions() { return array_merge( parent::getClientExtensions(), ['landing.uifilterconverter'] ); } /** * @return array */ protected function getInternalFilter() { return $this->simpleProductFilter(parent::getInternalFilter()); } /** * @return array */ protected function getOfferPropertyFilterDefinition() { if (isset($this->arParams['SIMPLE_PRODUCTS']) && $this->arParams['SIMPLE_PRODUCTS'] === 'Y') return []; return parent::getOfferPropertyFilterDefinition(); } /** * Temporary method. * * @param array $filter * @return array */ private function simpleProductFilter(array $filter) { if ( (isset($this->arParams['SIMPLE_PRODUCTS']) && $this->arParams['SIMPLE_PRODUCTS'] === 'Y') && $this->catalogIncluded && (int)$this->getStorageItem(self::STORAGE_ENTITY_IBLOCK, 'OFFERS_IBLOCK_ID') > 0 ) { $filter['=TYPE'] = [Catalog\ProductTable::TYPE_PRODUCT, Catalog\ProductTable::TYPE_SET]; } return $filter; } }