*/
public static function createXMLFeed($productsInfo)
{
- $xml = new \SimpleXMLElement('<yml_catalog/>');
+ $xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><yml_catalog/>');
$xml->addAttribute('date', date('Y-m-d\TH:i:sP'));
$shop = $xml->addChild('shop');
- $shop->addChild('name', htmlspecialchars('База Цветов 24', ENT_XML1 | ENT_COMPAT, 'UTF-8'));
- $shop->addChild('company', htmlspecialchars('База Цветов 24', ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+ self::sxml_cdata($shop->addChild('name'), 'База Цветов 24');
+ self::sxml_cdata($shop->addChild('company'), 'База Цветов 24');
$shop->addChild('url', 'https://bazacvetov24.ru');
// Добавление валюты
// Добавление категорий
$categories = $shop->addChild('categories');
- $category = $categories->addChild('category', htmlspecialchars('Букеты', ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+ $category = $categories->addChild('category');
$category->addAttribute('id', '1');
+ self::sxml_cdata($category, 'Букеты');
// Добавление информации о доставке
$deliveryOptions = $shop->addChild('delivery-options');
$offer = $offers->addChild('offer');
$offer->addAttribute('id', $product['id']);
$offer->addAttribute('available', $product['available'] ? 'true' : 'false');
- $offer->addChild('name', htmlspecialchars($product['name'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+ self::sxml_cdata($offer->addChild('name'), $product['name']);
$offer->addChild('url', 'https://bazacvetov24.ru/flowers/' . $product['id']);
$offer->addChild('price', $product['price']);
$offer->addChild('currencyId', 'RUR');
$offerDeliveryOption->addAttribute('days', '1');
$offerDeliveryOption->addAttribute('order-before', '18');
- $offer->addChild('description', htmlspecialchars($product['description'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+ self::sxml_cdata($offer->addChild('description'), $product['description']);
$offer->addChild('weight', $product['weight']);
$offer->addChild('qty', $product['qty']);
$offer->addChild('minorder', $product['minorder']);
foreach ($product['composition'] as $component) {
$consist = $offer->addChild('consist', $component['quantity']);
- $consist->addAttribute('name', htmlspecialchars($component['name'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
- $consist->addAttribute('unit', htmlspecialchars($component['unit'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+ $consist->addAttribute('name', $component['name']);
+ $consist->addAttribute('unit', $component['unit']);
}
foreach ($product['pictures'] as $picture) {
return $xml->asXML();
}
-
+ private static function sxml_cdata($element, $content) {
+ $dom = dom_import_simplexml($element);
+ $cdata = $dom->ownerDocument->createCDATASection($content);
+ $dom->appendChild($cdata);
+ }
private static function getProductPictureUrl($productId) {
return ['https://bazacvetov24.ru/products/5339/51-roza-premium_3326_md.jpg'];