31 $selector =
$event->getParameter(
'SELECTOR');
35 $restrictions = $selector->getModuleRestrictions(
'iblock');
36 if (!empty($restrictions))
39 if (!empty($restrictions[
'IBLOCK_ID']) && is_array($restrictions[
'IBLOCK_ID']))
41 $catalogs = static::getCatalogs($restrictions[
'IBLOCK_ID']);
42 if (!empty($catalogs))
43 $catalogs = array_fill_keys($catalogs,
true);
45 $filter = [
'ID' => $restrictions[
'IBLOCK_ID']];
46 if (!empty($restrictions[
'SITE_ID']))
48 $filter[
'SITE_ID'] = $restrictions[
'SITE_ID'];
53 $row[
'ID'] = (int)$row[
'ID'];
54 if (!$getCatalogs && isset($catalogs[$row[
'ID']]))
60 'TITLE' => $row[
'NAME']
73 $elementFields = static::getElementFields();
79 $sourceId = self::SELECTOR_ENTITY.$iblock[
'ID'];
80 $path = $selector->getSourceFilterBaseUri(
'iblock', $sourceId);
81 $action = $selector->getResultAction();
92 $resultActionType =
'';
95 if ($resultActionType ===
'')
98 $actionList = $selector->getDefaultLinkActions();
100 if (isset($catalogs[
$iblock[
'ID']]))
103 $actionList = array_merge($actionList, static::getProductActionList());
106 $properties = static::getIblockProperties(
$iblock[
'ID']);
107 if (!empty($properties))
111 $fields = array_merge(
$fields, static::getLinkDefinition($actionList));
115 'ORDER' => static::getOrderFields(
$fields),
116 'FIELDS' => static::getShowedFields(
$fields)
120 'GRID_ID' =>
'iblock'.$sourceId.
'_selector',
121 'BASE_LINK' =>
$path->getUri(),
123 'MULTIPLE_SELECT' =>
'N',
125 'RESULT_ACTION_TYPE' => $resultActionType,
126 'RESULT_ACTION_NAME' =>
$action[
'NAME'],
128 'RESULT_DATA_SET_LIST' => [],
129 'PAGETITLE_FILTER' =>
'Y',
130 'SIMPLE_PRODUCTS' =>
'Y'
134 'SOURCE_ID' => $sourceId,
138 'COMPONENT_NAME' =>
'bitrix:iblock.selector.landing',
139 'COMPONENT_TEMPLATE_NAME' =>
'.default',
140 'COMPONENT_PARAMS' => $parameters,
142 'USE_PADDING' =>
false,
143 'PLAIN_VIEW' =>
false,
144 'USE_UI_TOOLBAR' =>
'N'
149 'ACTIVE_DATE' =>
'Y',
150 'CHECK_PERMISSIONS' =>
'Y',
151 'MIN_PERMISSION' =>
'R'
153 'DATA_SETTINGS' => $dataSettings,
154 'DATA_LOADER' =>
'\Bitrix\Iblock\LandingSource\DataLoader'
173 if (self::$catalogIncluded ===
null)
175 if (self::$catalogIncluded)
178 if (!empty($iblocks))
179 $filter[
'@IBLOCK_ID'] = $iblocks;
182 'select' => [
'IBLOCK_ID'],
186 $result[] = (int)$row[
'IBLOCK_ID'];
203 'ALLOWED' => self::FIELD_ALLOWED_ORDER
207 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_FIELD_NAME'),
209 'ALLOWED' => self::FIELD_ALLOWED_ALL
212 'ID' =>
'PREVIEW_TEXT',
213 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_FIELD_PREVIEW_TEXT'),
215 'ALLOWED' => self::FIELD_ALLOWED_SELECT
218 'ID' =>
'PREVIEW_PICTURE',
219 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_FIELD_PREVIEW_PICTURE'),
221 'ALLOWED' => self::FIELD_ALLOWED_SELECT
224 'ID' =>
'DETAIL_TEXT',
225 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_FIELD_DETAIL_TEXT'),
227 'ALLOWED' => self::FIELD_ALLOWED_SELECT
230 'ID' =>
'DETAIL_PICTURE',
231 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_FIELD_DETAIL_PICTURE'),
233 'ALLOWED' => self::FIELD_ALLOWED_SELECT
237 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_FIELD_SORT'),
239 'ALLOWED' => self::FIELD_ALLOWED_ORDER
254 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_PRODUCT_FIELD_AVAILABLE'),
256 'ALLOWED' => self::FIELD_ALLOWED_ALL
294 if (empty($listCodes) && empty($detailCodes))
297 $allCodes = array_unique(array_merge($listCodes, $detailCodes));
298 $listCodes = array_fill_keys($listCodes,
true);
299 $detailCodes = array_fill_keys($detailCodes,
true);
303 'ID',
'IBLOCK_ID',
'NAME',
'SORT',
'PROPERTY_TYPE',
304 'MULTIPLE',
'FILE_TYPE',
305 'USER_TYPE',
'USER_TYPE_SETTINGS_LIST'
312 'order' => [
'SORT' =>
'ASC',
'NAME' =>
'ASC']
316 $id = (int)$row[
'ID'];
317 $index =
'PROPERTY_'.$row[
'ID'];
318 $titleCode =
'IBLOCK_LANDING_SOURCE_ELEMENT_PROPERTY_TITLE';
319 if (!isset($listCodes[$id]) || !isset($detailCodes[$id]))
321 $titleCode = (isset($listCodes[$id])
322 ?
'IBLOCK_LANDING_SOURCE_ELEMENT_PROPERTY_LIST_TITLE'
323 :
'IBLOCK_LANDING_SOURCE_ELEMENT_PROPERTY_DETAIL_TITLE'
328 [
'#NAME#' => $row[
'NAME']]
331 switch ($row[
'PROPERTY_TYPE'])
334 if (self::checkImageProperty($row))
340 'ALLOWED' => self::FIELD_ALLOWED_SELECT
349 'ALLOWED' => ($row[
'MULTIPLE'] ==
'Y' ? self::FIELD_ALLOWED_SELECT : self::FIELD_ALLOWED_ALL)
366 'name' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_ACTION_TITLE_BUY')
369 'type' =>
'addToCart',
370 'name' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_ACTION_TITLE_ADD_TO_CART')
384 'NAME' => Loc::getMessage(
'IBLOCK_LANDING_SOURCE_ELEMENT_ACTIONS'),
386 'ACTIONS' => $actions,
387 'ALLOWED' => self::FIELD_ALLOWED_SELECT
402 if (($row[
'ALLOWED'] & self::FIELD_ALLOWED_ORDER) == 0)
406 'NAME' => $row[
'NAME']
424 if (($row[
'ALLOWED'] & self::FIELD_ALLOWED_SELECT) == 0)
427 unset($item[
'ALLOWED']);
441 if (empty($property[
'FILE_TYPE']))
443 $property[
'FILE_TYPE'] = mb_strtolower(str_replace(
' ',
'', trim($property[
'FILE_TYPE'])));
444 if (empty($property[
'FILE_TYPE']))
446 $rawFileTypes = explode(
',', $property[
'FILE_TYPE']);
447 if (empty($rawFileTypes))
449 $rawFileTypes = array_fill_keys($rawFileTypes,
true);
451 !isset($rawFileTypes[
'jpg'])
452 && !isset($rawFileTypes[
'gif'])
453 && !isset($rawFileTypes[
'png'])
454 && !isset($rawFileTypes[
'jpeg'])
static includeModule($moduleName)
static getList(array $parameters=array())