Created
December 17, 2015 07:22
-
-
Save bendasvadim/cb82fdf35554f006722d to your computer and use it in GitHub Desktop.
YML export for miniShop2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$siteName = $modx->getOption('siteName', $scriptProperties, $modx->getOption('site_name')); // Имя сайта | |
$companyName = $modx->getOption('companyName', $scriptProperties, $modx->getOption('site_name')); // Компания | |
$bid = $modx->getOption('bid', $scriptProperties, 10); // Цена за клик | |
$siteUrl = $modx->makeUrl($modx->getOption('site_start'), '', '', 'full'); // Ссылка на главную страницу сайта | |
$descTpl = strip_tags($modx->getOption('descTpl', $scriptProperties, '[[+description]]')); // Шаблон для описания товара, без html | |
$paramCurrency = $modx->getOption('paramCurrency', $scriptProperties, 'RUR'); // Валюта | |
$paramDelivery = $modx->getOption('paramDelivery', $scriptProperties, true); // Доставка, по умолчанию - да. Можно указать имя параметра. | |
////////////////////////////////////////////////////////////////////////////// | |
// Заголовок выгрузки | |
$yml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; | |
$yml .= "<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n"; | |
$yml .= "<yml_catalog date=\"".date('Y-m-d H:i')."\">\n"; | |
$yml .= " <shop>\n"; | |
$yml .= " <name>$siteName</name>\n"; | |
$yml .= " <company>$companyName</company>\n"; | |
$yml .= " <url>$siteUrl</url>\n"; | |
// Курсы валют, приравнены к курсу ЦБРФ | |
$yml .= " <currencies>\n"; | |
$yml .= " <currency id=\"RUR\" rate=\"1\"/>\n"; | |
$yml .= " <currency id=\"USD\" rate=\"CBRF\"/>\n"; | |
$yml .= " <currency id=\"EUR\" rate=\"CBRF\"/>\n"; | |
$yml .= " </currencies>\n"; | |
// Секция категорий | |
$categories = array(); | |
$q = $modx->newQuery('msCategory', array('published' => 1, 'deleted' => 0, 'parent:!=' => 0, 'class_key' => 'msCategory')); | |
$q->select('id,parent,pagetitle'); | |
$q->sortby('id','asc'); | |
if ($q->prepare() && $q->stmt->execute()){ | |
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) { | |
$categories[$row['id']] = $row; | |
} | |
} | |
$yml .= " <categories>\n"; | |
foreach ($categories as $v) { | |
$name = htmlspecialchars($v['pagetitle'], ENT_QUOTES, 'UTF-8'); | |
if (isset($categories[$v['parent']])) { | |
$yml .= ' <category id="'.$v['id'].'" parentId="'.$v['parent'].'">'.$name.'</category>'."\n"; | |
} | |
else { | |
$yml .= ' <category id="'.$v['id'].'">'.$name.'</category>'."\n"; | |
} | |
} | |
$yml .= " </categories>\n"; | |
// Секция описания товаров | |
if (is_string($paramDelivery)) {$delivery = ",`Data`.`$paramDelivery` as `delivery`";} | |
$q = $modx->newQuery('msProduct', array('published' => 1, 'deleted' => 0, 'class_key' => 'msProduct')); | |
$q->innerJoin('msProductData', 'Data', '`msProduct`.`id` = `Data`.`id`'); | |
$q->select('`msProduct`.`id`,`parent`,`pagetitle`,`longtitle`,`description`,`introtext`'); | |
$q->select('`Data`.`price`, `Data`.`image`'.$delivery); | |
$q->sortby('pagetitle','asc'); | |
if ($q->prepare() && $q->stmt->execute()){ | |
$goods = $q->stmt->fetchAll(PDO::FETCH_ASSOC); | |
} | |
$yml .= " <offers>\n"; | |
foreach ($goods as $v) { | |
if (strpos($v['image'], '://') == false) { | |
if (strpos($v['image'], '/') === 0) {$v['image'] = substr($v['image'], 1);} | |
$image = $siteUrl.$v['image']; | |
} | |
else {$image = $v['image'];} | |
$image = strpos($v['image'], 'http') === 0 ? $v['image'] : $siteUrl.$v['image']; | |
$delivery = $paramDelivery == 'true' || $paramDelivery == 'false' ? $paramDelivery : $v['delivery']; | |
$pl = array('[[+pagetitle]]','[[+longtitle]]','[[+introtext]]'); | |
$vl = array($v['pagetitle'],$v['longtitle'],$v['introtext']); | |
$description = htmlspecialchars(str_replace($pl, $vl, $descTpl), ENT_QUOTES, 'UTF-8'); | |
$yml .= " <offer id=\"".$v['id']."\" available=\"true\" bid=\"$bid\">\n"; | |
$yml .= " <url>".$modx->makeUrl($v['id'],'','','full')."</url>\n"; | |
$yml .= " <price>".$v['price']."</price>\n"; | |
$yml .= " <currencyId>".$paramCurrency."</currencyId>\n"; | |
$yml .= " <categoryId>".$v['parent']."</categoryId>\n"; | |
$yml .= " <picture>".$image."</picture>\n"; | |
$yml .= " <delivery>".$delivery."</delivery> \n"; | |
$yml .= " <name>".htmlspecialchars($v['pagetitle'], ENT_QUOTES, 'UTF-8')."</name>\n"; | |
$yml .= " <description>".$description."</description>\n"; | |
$yml .= " </offer>\n"; | |
} | |
$yml .= " </offers>\n"; | |
$yml .= " </shop>\n"; | |
$yml .= "</yml_catalog>\n"; | |
return str_replace('&', '&', $yml); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment