Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Magento: экспорт товаров из магазина в формате XML

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Сб Dec 16, 2017 6:56 am    Заголовок сообщения: Magento: экспорт товаров из магазина в формате XML
Ответить с цитатой

<?php

// Подключаем Mage API
require_once '../app/Mage.php';
Mage::app();

$path = '';
$filename = '******.xml';
try {

$path = Mage::getBaseDir('var').DS.'import'.DS.$filename;

$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('type_id', array('eq' => 'simple'));

$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*');

$doc = new DOMDocument("1.0", "utf8");

$doc->formatOutput = true;

$productsX = $doc->createElement("yml_catalog");
$doc_attr = $doc->createAttribute('date');
$doc_attr->value = date('Y-m-d h:i:s', time());
$productsX->appendChild($doc_attr);
//$doc->setAttribute("generationDate", date('Y-m-d h:i:s', time()));
$doc->appendChild($productsX);

$shop = $doc->createElement("shop");
$doc->appendChild($shop);

$shopinfo = $doc->createElement( "name", '123' );
$shop->appendChild( $shopinfo );

$shopinfo = $doc->createElement( "company", 124' );
$shop->appendChild( $shopinfo );

$shopinfo = $doc->createElement( "url", 'http://1.ua/' );
$shop->appendChild( $shopinfo );

$cur = $doc->createElement("currencies");
$curUAH = $doc->createElement( "currency" );
$domAttribute = $doc->createAttribute('id');
$domAttribute->value = 'UAH';
$curUAH->appendChild( $domAttribute );
$domAttribute = $doc->createAttribute('rate');
$domAttribute->value = '1';
$curUAH->appendChild( $domAttribute );
$cur->appendChild( $curUAH );

$shop->appendChild( $cur );

$xmlcats = $doc->createElement("categories");
foreach($categories as $_category){

$category = $doc->createElement( "category" );
$domAttribute = $doc->createAttribute('id');
$domAttribute->value = $_category->getId();
$category->appendChild($domAttribute);

$domAttribute = $doc->createAttribute('parentId');
$domAttribute->value = $_category->getParentId();
$category->appendChild($domAttribute);

$category->appendChild(
$doc->createTextNode( $_category->getName() )
);
$xmlcats->appendChild( $category );

}

$shop->appendChild( $xmlcats );


$productOffers = $doc->createElement("offers");

foreach($products as $_product){

$product = $doc->createElement( "offer" );
// Атрибуты offer
$domAttribute = $doc->createAttribute('available');
$domAttribute->value = 'true';
$product->appendChild($domAttribute);
$domAttribute2 = $doc->createAttribute('id');
$domAttribute2->value = $_product->getSku();
$product->appendChild($domAttribute2);


$_categories = $_product->getCategoryIds();

$_category = Mage::getModel('catalog/category')->load($_categories[0]);
$uri = Mage::getUrl($_category->getUrlPath()).basename($_product->getProductUrl());

$url = $doc->createElement( "url" );
$url->appendChild(
//$doc->createTextNode($_product->getSku())
$doc->createTextNode($uri)
);
$product->appendChild( $url );


$price = $doc->createElement( "price" );
$price->appendChild(
$doc->createTextNode( trim($_product->getPrice()) )
);
$product->appendChild( $price );

$currency = $doc->createElement( "currencyId" );
$currency->appendChild(
$doc->createTextNode( "UAH" )
);
$product->appendChild( $currency );

$catID = $doc->createElement( "categoryId" );
$catID->appendChild(
$doc->createTextNode( $_categories[0] )
);
$product->appendChild( $catID );

$w = $doc->createElement( "param" );
$w->appendChild(
$doc->createTextNode( $_product->getWeight() )
);
$domAttribute = $doc->createAttribute('name');
$domAttribute->value = 'Вес';
$w->appendChild($domAttribute);
$product->appendChild( $w );

$proba = Mage::getModel('catalog/product')->load($_product->getId())->getAttributeText('proof');

$proof = $doc->createElement( "param" );
$proof->appendChild(
$doc->createTextNode( $proba )
);
$domAttribute = $doc->createAttribute('name');
$domAttribute->value = 'Проба';
$proof->appendChild($domAttribute);
$product->appendChild( $proof );

$v = $doc->createElement( "vendor" );
$v->appendChild(

$doc->createTextNode('111')
);
$product->appendChild( $v );

$pic = $doc->createElement( "picture" );
$pic->appendChild(
//$doc->createTextNode($_product->getSku())
$doc->createTextNode($_product->getImageUrl())
);
$product->appendChild( $pic );


$qty = $doc->createElement( "name" );
$qty->appendChild(
$doc->createTextNode( trim($_product->getName()))
);
$product->appendChild( $qty );


$qty = $doc->createElement( "description" );
$qty->appendChild(

$doc->createTextNode( '<![CDATA[' . nl2br($_product->getShortDescription()) . ']]>')

);
$product->appendChild( $qty );


$productOffers->appendChild($product);
}


$shop->appendChild($productOffers);

file_put_contents($path, $doc->saveXML());

//Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('giftcerts')->__('Products where succesfully exported '));
}
//Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('giftcerts')->__('Products where succesfully exported '));

catch (Mage_Core_Exception $e) {
//Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
catch (Exception $e) {
//Mage::getSingleton('adminhtml/session')->addError(Mage::helper('giftcerts')->__($e->getMessage().'An error occurred while exporting products.'));
}

?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Сб Dec 16, 2017 11:07 am    Заголовок сообщения:
Ответить с цитатой

Это был жесткий черновик, но он работает и формирует XML, подобный тому, который требует Розетка для импорта товаров. Структура этого файла будет такой

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2011-07-20 14:58">
<shop>
<name>Игровые приставки</name>
<company>Игровые приставки</company>
<url>http://www.pristavki.ua/</url>
<currencies>
<currency id="UAH" rate="1"/>
<currency id="USD" rate="8.05"/>
<currency id="EUR" rate="NBU"/>
<currency id="RUR" rate="CBRF"/>
</currencies>
<categories>
<category id="6" parentId="46">Приставки PS2</category>
<category id="110" parentId="7">Action</category>
<category id="111" parentId="7">Adventure</category>
<category id="112" parentId="7">Fighting</category>
<category id="115" parentId="7">Racing</category>
<category id="116" parentId="7">RPG</category>
<category id="118" parentId="7">Sport</category>
<category id="119" parentId="7">Strategy</category>
<category id="120" parentId="7">Puzzle</category>
<category id="130" parentId="10">Action</category>
<category id="131" parentId="10">Adventure</category>
<category id="132" parentId="10">Fighting</category>
<category id="133" parentId="10">Puzzle</category>
<category id="134" parentId="10">Racing</category>
<category id="135" parentId="10">RPG</category>
<category id="136" parentId="10">Sport</category>
<category id="137" parentId="10">Strategy</category>
<category id="138" parentId="31">Action</category>
<category id="139" parentId="31">Adventure</category>
<category id="140" parentId="31">Fighting</category>
<category id="141" parentId="31">Puzzle</category>
<category id="142" parentId="31">Racing</category>
<category id="143" parentId="31">RPG</category>
<category id="145" parentId="31">Sport</category>
<category id="146" parentId="31">Strategy</category>
<category id="159" parentId="32">Gameboy Micro</category>
<category id="160" parentId="32">Gameboy SP</category>
<category id="165" parentId="59">Модифицированные игры Xbox 360</category>
<category id="175" parentId="35">Карты памяти</category>
<category id="182" parentId="11">Карты памяти</category>
<category id="183" parentId="11">Джойстики</category>
<category id="184" parentId="11">Рули</category>
<category id="186" parentId="11">Прочее...</category>
<category id="187" parentId="11">Кабеля и переходники</category>
<category id="188" parentId="32">Прочее..</category>
<category id="236" parentId="86">Игры PS3 (Русские версии)</category>
<category id="237" parentId="8">Nintendo DSi XL</category>
<category id="244" parentId="33">PSPgo</category>
<category id="245" parentId="8">Nintendo 3DS</category>
<category id="246" parentId="47">Игры Nintendo 3DS</category>
<category id="247">Роботы</category>
<category id="248">Телевизоры</category>
<category id="249">WI-FI роутеры</category>
<category id="250" parentId="193">Nintendo 3DS</category>
<category id="8" parentId="47">Приставки Nintendo DS</category>
<category id="10" parentId="47">Игры Nintendo DS</category>
<category id="11" parentId="46">Аксессуары PS2</category>
<category id="32" parentId="51">Аксессуары Game Boy</category>
<category id="33" parentId="52">Приставки PSP</category>
<category id="35" parentId="52">Аксессуары PSP</category>
<category id="86">PlayStation 3</category>
<category id="47">Nintendo DS</category>
<category id="46">PlayStation 2</category>
<category id="51">Game Boy</category>
<category id="52">PSP</category>
<category id="59">Xbox 360</category>
<category id="108">Nintendo Wii</category>
</categories>
<offers>
<offer available="true" id="1997">
<url>http://www.pristavki.ua/index.php?productID=1997&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox360_cof3_x94.jpg</picture>
<name>Call of Duty 3 (Xbox360)</name>
<vendor>Activision</vendor>
<description>По заявлению разработчика, анимация персонажей была значительно переработана, трава теперь будет прогибаться под шагами, гранаты будут видоизменять ландшафт, поверхности (дерево, сталь, листва, вода и проч.) будут по-разному реагировать на выстрелы.</description>
</offer>
<offer available="true" id="1999">
<url>http://www.pristavki.ua/index.php?productID=1999&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox360_gearsOW_x94.jpg</picture>
<name>Gears of War (Xbox360)</name>
<vendor>Microsoft Game Studios</vendor>
<description>События Gears of War развиваются на умирающей планете, все ресурсы которой были давно исчерпаны. Над оставшимися в живых людьми нависла новая угроза в лице расы чужих Locust Horde, которые, как обычно, ни с кем не дружны и хотят поработить всех и каждого или, на худой конец, - уничтожить. В составе команды бывших уголовников, вести к победе которых будет Маркус Феникс, вы должны будете «уладить вопрос» с врагом, проложив себе дорогу через несколько уровней высококлассного атмосферного экшена.</description>
</offer>
<offer available="true" id="2241">
<url>http://www.pristavki.ua/index.php?productID=2241&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/x36-defjam3_94.jpg</picture>
<name>Def Jam 3: Icon (Xbox 360)</name>
<vendor>EA Games</vendor>
<description>DEF JAM: ICON расскажет историю крутого хип-хоппера, решившего создать собственную звукозаписывающую компанию. Он готов открывать новые таланты, завоевывать все больший авторитет и популярность, чтобы в конце концов стать самой настоящей легендой хип-хоп сцены.</description>
</offer>
<offer available="true" id="2382">
<url>http://www.pristavki.ua/index.php?productID=2382&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox_360_dirt_x94.jpg</picture>
<name>Dirt (Xbox 360)</name>
<vendor>Codemasters</vendor>
<description>Вас ждет наисовременнейший графический движок, полностью переработанная физическая модель, множество автомобилей и трасс, созданных на основе реальных дорог и местностей по всему миру.</description>
</offer>
<offer available="true" id="2480">
<url>http://www.pristavki.ua/index.php?productID=2480&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox_360_flatout_UC_x94.jpg</picture>
<name>FlatOut: Ultimate Carnage (Xbox 360)</name>
<vendor>Empire Interactive</vendor>
<description>FlatOut: Ultimate Carnage является тотальным ремейком FlatOut 2, который создается с учетом всех особенностей консоли Xbox 360. Среди отличительных особенностей стоит выделить: 12 машин в гонке против 8 во FlatOut 2, 5 новых одиночных и 2 многопользовательских режима в Xbox Live, более 8 тыс. </description>
</offer>
<offer available="true" id="2507">
<url>http://www.pristavki.ua/index.php?productID=2507&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox_360_halo3_x160.jpg</picture>
<name>Halo 3 (Xbox 360)</name>
<vendor>Microsoft</vendor>
<description>В новой игре Master Chief, наконец-то должен спасти Землю и все Вселенную от расы инопланетных захватчиков Covenant.</description>
</offer>
<offer available="true" id="2526">
<url>http://www.pristavki.ua/index.php?productID=2526&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox_360_conan_x94.jpg</picture>
<name>Conan (Xbox360)</name>
<vendor>THQ</vendor>
<description>Игра &quot;Conan&quot; основана на романах о бесстрашном воине, что наложило отпечаток и на внешность главного героя, и на сюжет. &quot;Conan&quot; - это экшен с видом от третьего лица и элементами RPG. Игра отличается глубокой проработкой игрового мира. Мечи говорят громче слов. Почувствуйте силу и ярость Конана в эпических битвах на землях Гибории.</description>
</offer>
<offer available="true" id="2531">
<url>http://www.pristavki.ua/index.php?productID=2531&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>62</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox_360_pgr4_x94.jpg</picture>
<name>Project Gotham Racing 4 (Xbox360)</name>
<vendor>Microsoft</vendor>
<description>Project Gotham Racing 4 будет отличаться мощной системой динамической смены погоды, которая влияет на поведение автомобиля на треке. Система искусственного интеллекта позволит противникам выполнять рискованные маневры. Разработчик также совершенствует систему Kudos, которая будет решать, сколько очков вы будете получать за выполнение тех или иных маневров. Но, все это - проза, поклонники, считающие дни до выхода игры, знают перечень особенностей игры наизусть. Более интересным вопросом, который до недавнего времени тревожил умы фанатов Project Gotham Racing, являлось вероятное появление в игре мотоциклов.</description>
</offer>
<offer available="true" id="2822">
<url>http://www.pristavki.ua/index.php?productID=2822&amp;from=ya</url>
<price>25.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/5+1disk_for_xbox360.jpg</picture>
<name>Спец-предложение (5 дисков Xbox 360 + диск в подарок)</name>
<vendor>Xbox</vendor>
<description>Спец-предложение! Приобретая 5 дисков Xbox 360 одновременно Вы получаете диск в подарок!</description>
</offer>
<offer available="true" id="2906">
<url>http://www.pristavki.ua/index.php?productID=2906&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/xbox360_gta4_x94.jpg</picture>
<name>Grand Theft Auto IV (Xbox 360)</name>
<vendor>Rockstar Games</vendor>
<description>Где можно угонять десятки машин в день, избивать прохожих, стрелять в проституток и зарабатывать деньги на продаже наркотиков? В какой игре вы безнаказанно расстреляете отряд полиции из гранатомета, а минуту спустя спокойно поужинаете в ближайшей пиццерии?</description>
</offer>
<offer available="false" id="3044">
<url>http://www.pristavki.ua/index.php?productID=3044&amp;from=ya</url>
<price>0.00</price>
<currencyId>UAH</currencyId>
<categoryId>165</categoryId>
<picture>http://www.pristavki.ua/products_pictures/Guitar%20Hero%20Aerosmith%20Xbox360%20g%20160.jpg</picture>
<name>Guitar Hero Aerosmith (Xbox 360)</name>
<vendor>Activision</vendor>
<description>Посмотрим, сможете ли вы исполнить ударную партию, как Joey Kramer, сыграть на гитаре, как Joe Perry или Brad Whitford, поддерживать темп на басс-гитаре, как Tom Hamilton, и конечно же, спеть как Steven Tyler, - гласит реклама Guitar Hero: Aerosmith. - В отличие от участников настоящей рок-группы, вам не нужно тратить большую часть своей жизни на совершенствование тех или иных навыков - просто возьмите любимый инструмент и вступайте в музыкальное состязание!</description>
</offer>
</offers>
</shop>
</yml_catalog>

Разница в некоторых моментах - я использую UTF-8 и добавляю некоторые параметры продукта.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис