Битрикс — кастомизируем CSV catalog export (csv_new) на примере добавления ссылки на товар

13.01.2018  15:36

На удивление в Битриксе в экспорте торгового каталога в CSV до сих пор нет, например ссылки на товар. Вот, мне это потребовалось реализовать.

Копируем /bitrix/modules/catalog/load/csv_new_run.php в /bitrix/php_interface/include/catalog_export/csv_new_run.php (если его там нет).

После блока с глобальными переменными (строка 107) добавляем так:
global
	$arCatalogAvailProdFields,
	$defCatalogAvailProdFields,
	$arCatalogAvailPriceFields,
	$defCatalogAvailPriceFields,
	$arCatalogAvailValueFields,
	$defCatalogAvailValueFields,
	$arCatalogAvailQuantityFields,
	$defCatalogAvailQuantityFields,
	$arCatalogAvailGroupFields,
	$defCatalogAvailGroupFields,
	$defCatalogAvailCurrencies;
	// added
$arCatalogAvailProdFields[] = Array(
	'value' => "IE_DETAIL_PAGE_URL",
	'field' => "DETAIL_PAGE_URL",
	'important' => "Y",
	'name' => "URL страницы детального просмотра (B_IBLOCK_ELEMENT.DETAIL_PAGE_URL)"
);
$defCatalogAvailProdFields .= ',DETAIL_PAGE_URL';
$field_needed[] = "Y";
// added END


Идём ниже и после строчки $arNeedFields = array_keys($arSortFields); (~530 строка) добавляем ещё строчку так:
		$arNeedFields = array_keys($arSortFields);
		$arNeedFields[] = "IE_DETAIL_PAGE_URL";


И Битрикс не был бы Битриксом без неведомой ебанины и пришлось чуть ниже перед $dbIBlockElement = CIBlockElement::GetList( добавить строчечку:
		$selectArray[] = "DETAIL_PAGE_URL";
		$dbIBlockElement = CIBlockElement::GetList


Идём в админку /bitrix/admin/cat_export_setup.php и проверяем результат.
Таким же кандебобером в файл экспорта CSV можно добавлять другие параметры товаров, если вдруг чего нет.


перейти в Блог | Блог (стр. 2)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 29  PHP 39  web-программирование 62  

комментарии:
20.03.2018 15:14
theblackpost
Спасибо за инструкцию! Может это можно применить к моей проблеме?

Пытаюсь сделать выгрузку CSV товаров с сайта на Bitrix. Использую стандартный компонент Контент->Инфоблоки->ЭкспортCSV .

Создаю новую выгрузку, отмечаю необходимое и обязательное Название (B_IBLOCK_ELEMENT.NAME).

Среди параметров также отмечаю поле, которое содержит тестовое имя "Фабрика", ну соответственно выгружаться должно название фабрики. Но выгружается ID этой фабрики.

Думаю, что копать надо в сторону /bitrix/modules/catalog/load/csv_new_run.php Но не совсем понимаю, что конкретно здесь надо изменить, чтобы в выводилось Имя вместо ID
 
04.04.2018 17:57
Андрей
Спасибо, отличное решение!
Как бы еще ссылки на детальную / превью картинку получать
 
04.04.2018 18:28
Андрей
Сам и отвечаю.
Чтобы вывести детальную картинку, делаем по аналогии:
$arCatalogAvailProdFields[] = Array(
'value' => "IE_DETAIL_PAGE_URL",
'field' => "DETAIL_PAGE_URL",
'important' => "Y",
'name' => "URL страницы детального просмотра (B_IBLOCK_ELEMENT.DETAIL_PAGE_URL)"
);
$arCatalogAvailProdFields[] = Array(
'value' => "IE_DETAIL_PICTURE",
'field' => "DETAIL_PICTURE",
'important' => "Y",
'name' => "URL детальной картинки (B_IBLOCK_ELEMENT.DETAIL_PICTURE)"
);

$defCatalogAvailProdFields .= ',DETAIL_PAGE_URL';
$defCatalogAvailProdFields .= ',DETAIL_PICTURE';

$field_needed[] = "Y";

во 2-м месте:

$arNeedFields[] = "IE_DETAIL_PAGE_URL";
$arNeedFields[] = "IE_DETAIL_PICTURE";

и в 3 месте:
$selectArray[] = "DETAIL_PAGE_URL";
$selectArray[] = "DETAIL_PICTURE";

работает!
 
06.05.2018 06:23
andrey
Андрей, да, вполне рабочий вариант. На моём примере в выгрузку можно добавить вообще всё что угодно, по аналогии.
 

Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)