Формирование (псевдо)XLS в списке товаров
Запись от 19.06.2014
Речь о компоненте catalog.section.
Вот что в итоге должно быть:
Итак, в result_modifier.php добавляем следующий код, формирующий основное содержимое XLS в формате HTML:
Сам файл формируется функцией setXLS, которую прописываю в init.php:
В целом всё просто - для каждой страницы со списком товаров создается свой XLS файл и обновляется вместе с кешем шаблона компонента - именно тогда и исполняется result_modifier.php.
Почему я использовал псевдо XLS - это просто, быстро, не нужны доп. библиотеки и файл открывается как обычный XLS.
Вот что в итоге должно быть:
Итак, в result_modifier.php добавляем следующий код, формирующий основное содержимое XLS в формате HTML:
$fileContent = '';
foreach($arResult["ITEMS"] as $key => $arElement) {
$fileContent .= '<tr>';
$fileContent .= '<td>'.$arElement["NAME"].'</td>';
foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty) {
$fileContent .= '<td>'.$arProperty["DISPLAY_VALUE"].'</td>';
}
$fileContent .= '</tr>';
}
$fileXLSpath = setXLS(
$APPLICATION->GetCurDir()."price-".$arResult["CODE"].".xls",
$fileContent
);
if($fileXLSpath) {
$arResult["XLS"] = $fileXLSpath;
}
Сам файл формируется функцией setXLS, которую прописываю в init.php:
function setXLS($fileName, $content) {
$fileStart = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title></title>
<meta name="generator" content="">
<style type="text/css"><!--
body,div,table,thead,tbody,tfoot,tr,th,td,p { font-family:"Calibri"; font-size:x-small }
-->
</style>
</head>
<body text="#000000">
<table cellspacing="0" border="0">';
$fileEnd = '</table></body></html>';
if($content) {
file_put_contents(
$_SERVER['DOCUMENT_ROOT'].$fileName,
$fileStart.$content.$fileEnd
);
return $fileName;
} else {
return false;
}
}
В целом всё просто - для каждой страницы со списком товаров создается свой XLS файл и обновляется вместе с кешем шаблона компонента - именно тогда и исполняется result_modifier.php.
Почему я использовал псевдо XLS - это просто, быстро, не нужны доп. библиотеки и файл открывается как обычный XLS.