Воспользовался хаком, который
формирует прайс в excel'евском формате. За основу брал
http://joomlaforum.ru/index.php/topic,14209.msg988753.html#msg988753Модифицировал как нужно... получилось вот это:
<?php
defined( '_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );
header("Pragma: public");
header("Expires: 0");
header("Accept-Ranges: bytes");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"Price.xls\"");
header("Content-Transfer-Encoding: binary");
$db = new ps_DB;
$q = "SELECT * FROM #__{vm}_product AS a, #__{vm}_product_price AS b, #__{vm}_product_category_xref AS c, #__{vm}_category AS d, #__{vm}_category_xref AS e WHERE a.product_id = b.product_price_id AND a.product_id = c.product_id AND d.category_id = c.category_id AND d.category_id = e.category_child_id AND a.product_publish='Y' AND a.product_in_stock > 0";
$db->query( $q );
/* Типы заголовков для файла */
$fd = fopen("Price.xls", "w");
?>
<html xmlns:o='urn:schemas-microsoft-com:office:office'
xmlns:w='urn:schemas-microsoft-com:office:excel'
xmlns='http://www.w3.org/TR/REC-html40'>
<head>
<meta http-equiv=Content-Type content='text/html; charset=utf-8'>
<meta name=ProgId content=Excel.Document>
<meta name=Generator content='Microsoft Excel 11'>
<meta name=Originator content='Microsoft Excel 11'>
</head>
<body>
<table width="100%" border="1px" cellspacing="5" cellpadding="0">
<tr>
<td align="left" valign="top" style="color:#ff0; word-wrap: normal; background-color:#aaa;"><h3>Прайс лист "Компьютер Сервис"</h3></td>
</tr>
<tr>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">№</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Артикул</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Наименование</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Категория</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Описание</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Атрибуты</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Наличие</td>
<td align="left" valign="top" style="color:#ff0; background-color:#aaa;">Цена</td>
</tr>
<?php
$i = 0;
$kol = 1;
while( $db->next_record()) {
echo '<tr><td align="left" valign="top" >'.$kol.'</td><td align="left" valign="top" >'.$db->f("product_sku").'</td><td align="left" valign="top" ><a href="http://magazin.kz/index.php?page=shop.product_details&product_id='.$db->f('product_id'). '&option=com_virtuemart&Itemid=2">'.$db->f("product_name").'</a></td><td align="left" valign="top" >'.$db->f("category_name").'</td><td align="left" valign="top" >'; // СТРОКА ФОРМИРОВАНИЯ ССЫЛКИ
$product_desc = $db->f("product_s_desc");
if (empty($product_desc)) {
echo "Нет описания";
} else {
echo $db->f("product_s_desc");
}
echo '</td><td align="left" valign="top" >';
if ($db->f("attribute")!=="") {
echo "Есть";
} else {
echo "Нет";
}
echo '</td><td align="left" valign="top" >';
if ($db->f("product_in_stock")>0) {
echo '<font style=\"font-style:italic;\">'.$db->f("product_in_stock").' '.$db->f("product_unit").'</font>';
} else {
echo "Нет";
}
echo '</td><td align="left" valign="top" >';
echo $db->f("product_price");
echo '</td></tr>';
$i++;
$kol++;
}
echo '</table>
</body>
</html>';
fputs($fd, $db);
fclose($fd);
?>
Как пользовать хак:1. в файле shop.exel.php изменить адес сайта и id компонента VirtueMart в строке формирования ссылки на товар
2. поместить файл shop.excel.php в директорию: /administrator/components/com_virtuemart/html
3. cоздать ссылку вида
http://WWW.ИМЯ_САЙТА/index2.php?page=shop.exel&option=com_virtuemart&Itemid=ID (ваш id компонента магазина) в любом месте на сайте.
Казалось бы, всё должно работать как часы... Но вот глюк в том что при открытии в Oper'e файл сохраняется не в xls, а в htm-формате.
Что за глюк? У кого-нить есть соображения? Подскажите... Как говорится одна голова хорошо, а тысячи - это китайцы...