Битрикс. Надо отредактировать этот код, чтобы выводить в виде массива
Надо отредактировать этот код (и код который в шаблоне компонента) так, чтобы вот это свойство принималось и выводилось в виде массива
Сам код который нужно редактировать
$this->imagePropertyCode = $this->getOptionAsArray('IMAGE_PROPERTY_CODE');
Сам код который нужно редактировать
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); use Bitrix\Main\Loader; use Bitrix\Main\Config\Option; class AvagencyVideoProductComponent extends CBitrixComponent { private $videoPropertyCode; private $imagePropertyCode; public function __construct($component = null) { parent::__construct($component); // Получаем коды свойств из настроек модуля и преобразуем в массив $this->videoPropertyCode = $this->getOptionAsArray('VIDEO_PROPERTY_CODE'); $this->imagePropertyCode = $this->getOptionAsArray('IMAGE_PROPERTY_CODE'); } private function getOptionAsArray($optionName) { $optionValue = Option::get('avagency.videoproduct', $optionName); // Пробуем декодировать как JSON, если не получилось - используем explode $array = json_decode($optionValue, true); if (json_last_error() === JSON_ERROR_NONE && is_array($array)) { return $array; } // Если это обычная строка с запятыми, то используем explode return explode(',', $optionValue); } public function executeComponent() { if (!Loader::includeModule('iblock')) { echo 'Модуль iblock не подключен'; return; } $productId = $this->arParams['PRODUCT_ID']; if (!$productId) { echo 'PRODUCT_ID не передан'; return; } foreach ($this->videoPropertyCode as $code) { $this->arResult['DISPLAY_PROPERTIES'][$code] = $this->getProductVideo($productId, $code); } foreach ($this->imagePropertyCode as $code) { $this->arResult['DISPLAY_PROPERTIES'][$code] = $this->getProductImages($productId, $code); } $this->includeComponentTemplate(); } private function getProductVideo($productId, $videoPropertyCode) { $res = CIBlockElement::GetList( [], ['ID' => $productId], false, false, ['ID', 'IBLOCK_ID', 'PROPERTY_' . $videoPropertyCode] ); if ($element = $res->GetNext()) { $videoFileIds = $element['PROPERTY_' . $videoPropertyCode . '_VALUE']; if ($videoFileIds) { return CFile::GetPath($videoFileIds); } } return null; } private function getProductImages($productId, $imagePropertyCode) { $res = CIBlockElement::GetList( [], ['ID' => $productId], false, false, ['ID', 'IBLOCK_ID', 'PROPERTY_' . $imagePropertyCode] ); $images = []; if ($element = $res->GetNext()) { $imagesFileIds = $element['PROPERTY_' . $imagePropertyCode . '_VALUE']; if (is_array($imagesFileIds)) { foreach ($imagesFileIds as $fileId) { $images[] = CFile::GetPath($fileId); } } elseif ($imagesFileIds) { $images[] = CFile::GetPath($imagesFileIds); } } return $images; } } ?>