Задать вопрос
@VJC2016

Как узнать имя (код) поля инфоблока при использовании ядра D7?

Есть пользовательское поле DETAIL_PAGE_URL которое отлично выводится через CIBlockElement::GetList. Однако стоит задача выводить инфоблок через D7, то есть
$dbItems = \Bitrix\Iblock\Elements\ElementXXXTable::getList([
		 	'select' => [ 'ID', 'IBLOCK_ID', 'NAME', 'PREVIEW_PICTURE', 'DETAIL_PAGE_URL'],
		 	'filter' => ['IBLOCK_ID' => 33],
			'order' => ['ACTIVE_FROM' => 'DESC'],
	    ]);

Выводится ошибка Unknown field definition `DETAIL_PAGE_URL`.
Как узнать название поля, что бы получить его через через D7?
  • Вопрос задан
  • 125 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@VJC2016 Автор вопроса
Всем спасибо, в итоге вот что получилось)
$dbItems = \Bitrix\Iblock\Elements\XXXTable::getList([
		 	'select' => [ 
                'ID', 
                'IBLOCK_ID',
                'IBLOCK_SECTION_ID',
                'CODE',
                'NAME',
                'PREVIEW_PICTURE',
                'DETAIL_PICTURE',
                'DETAIL_PAGE_URL' => 'IBLOCK.DETAIL_PAGE_URL',
            ],
		 	'filter' => ['IBLOCK_ID' => 777777],
			'order' => ['ACTIVE_FROM' => 'DESC'],
	    ]);

        $this->arResult['RESULT_SOLUTION_ARR'] = [];

		 foreach ($dbItems as $element) {
            $element['DETAIL_PAGE_URL'] = CIBlock::ReplaceDetailUrl(
                $element['DETAIL_PAGE_URL'], 
                $element, 
                false, 
                'E'
            );
            $this->arResult['RESULT_SOLUTION_ARR'][] = $element;
		 }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ge1i0N
@Ge1i0N
На вопрос "Как узнать..." можно ответить - посмотреть в схеме базы данных, но вопрос как я понимаю, не совсем об этом.

DETAIL_PAGE_URL не возвращается в D7, так как такое поле отсутствует в базе данных.
Его нужно рассчитывать самостоятельно через метод CIBlock::ReplaceDetailUrl()передав первым аргументом шаблон ссылки, а вторым - массив всех нужные параметров для замены.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы