В Яндекс Справочнике есть возможность загрузить прайс-лист с товарами и услугами в формате XLS или XLSX, далее эти предложения будут выводится при поиске на карте.
Шаблон прайса:
Сгенерировать XLS-файл, который примет Яндекс можно в PHPExcel.
<?php
require_once __DIR__ . '/PHPExcel/Classes/PHPExcel.php';
require_once __DIR__ . '/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php';
$xls = new PHPExcel();
$xls->setActiveSheetIndex(0);
$xls->getActiveSheet()->SetCellValue('A1', 'Категория');
$xls->getActiveSheet()->SetCellValue('B1', 'Название');
$xls->getActiveSheet()->SetCellValue('C1', 'Описание');
$xls->getActiveSheet()->SetCellValue('D1', 'Цена');
$xls->getActiveSheet()->SetCellValue('E1', 'Фото');
$xls->getActiveSheet()->SetCellValue('F1', 'Популярный товар');
$xls->getActiveSheet()->SetCellValue('G1', 'В наличии');
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prods` WHERE `price` > 0");
$sth->execute();
$array = $sth->fetchAll(PDO::FETCH_ASSOC);
$i = 1;
foreach ($array as $row) {
$sth = $dbh->prepare("SELECT * FROM `category` WHERE `id` = ?");
$sth->execute(array($row['category']));
$category = $sth->fetch(PDO::FETCH_ASSOC);
$i++;
$xls->getActiveSheet()->SetCellValue('A' . $i, $category['name']);
$xls->getActiveSheet()->SetCellValue('B' . $i, $row['name']);
$xls->getActiveSheet()->SetCellValue('C' . $i, strip_tags($row['text']));
$xls->getActiveSheet()->SetCellValue('D' . $i, $row['price']);
$xls->getActiveSheet()->SetCellValue('E' . $i, 'http://example.com/prod/' . $row['img']);
$xls->getActiveSheet()->SetCellValue('F' . $i, 'Нет');
$xls->getActiveSheet()->SetCellValue('G' . $i, 'Да');
}
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=pricelist.xls");
$objWriter = new PHPExcel_Writer_Excel5($xls);
$objWriter->save('php://output');
В итоге получается файл:
После загрузки файла в справочник:
Чтобы удалить все товары, нужно загрузить файл без товарных предложений.