Skip to content

Instantly share code, notes, and snippets.

@renepenner
Created July 4, 2017 08:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save renepenner/cbc18a159fb492be22b3f2481647fdc9 to your computer and use it in GitHub Desktop.
Save renepenner/cbc18a159fb492be22b3f2481647fdc9 to your computer and use it in GitHub Desktop.
<?php
ini_set('memory_limit', '1024M');
#header('Content-Type: application/xml; charset=utf-8');
set_time_limit(0);
require '/var/www/html/htdocs/app/Mage.php';
umask(0);
$store_id = 1;
Mage::app($store_id)->getStore();
$_imgSize = 350;
$ean = 9134357654527; //random :)
$_base_url = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
$file = '/var/www/html/htdocs/export/google_de.xml';
unlink($file);
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'UTF-8');
$xmlWriter->startElement( 'rss' );
$xmlWriter->writeAttribute( 'version', '2.0' );
$xmlWriter->writeAttribute( 'xmlns:g', 'http://base.google.com/ns/1.0' );
$xmlWriter->startElement( 'channel' );
$xmlWriter->writeElement('title', 'Google-Shopping XML');
$xmlWriter->writeElement('link', $_base_url);
$_collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', array('eq' => 1))
->addAttributeToFilter('price', array('gt' => 0))
->addAttributeToFilter('visibility', array('eq' => 4))
->addAttributeToFilter('type_id', 'configurable')
#->addAttributeToFilter('entity_id', array('eq' => 1447))
->addUrlRewrite()
->setStoreId($store_id)
->addStoreFilter();
#$attributeDetails = Mage::getSingleton("eav/config")->getAttribute("catalog_product", 'delivery_time');
$i = 0;
foreach ($_collection as $key => $product) {
$_ean = trim($product->getData('ean'));
$_url = $product->getProductUrl();
#$_parentid = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
if (!is_numeric($product->getSku())) {
continue;
}
if ($product->getStatus() == 2) {
continue;
}
if ($product->getVisibility() != 4) {
continue;
}
$_descr = strip_tags($product->getDescription());
if (trim($_descr) == '') {
$_descr = $product->getName();
}
$size = '';
$condition = 'new';
$availability = 'in stock';
$brand = 'MatraMaxx';
$manufacturer = $brand;
if ($product->isSaleable()) {
$versandkosten = 0;
$delivery_period = '2-3 Werktage'; //$product->getAttributeText('delivery_time');
$xmlWriter->startElement('item');
$xmlWriter->writeElement('g:id', $product->getSku());
$xmlWriter->startElement('g:title');
$xmlWriter->writeCData($product->getName());
$xmlWriter->endElement();
$xmlWriter->startElement('g:description');
$xmlWriter->writeCData($_descr);
$xmlWriter->endElement();
$xmlWriter->writeElement('g:google_product_category',2696);
$xmlWriter->writeElement('g:product_type', 'Matratzen');
$xmlWriter->writeElement('g:link', $_url.'?utm_source=shopping&utm_medium=cpc&utm_campaign=shopping');
$xmlWriter->writeElement('g:image_link', Mage::helper('catalog/image')->init($product, 'image')->resize($_imgSize));
$xmlWriter->writeElement('g:condition', $condition);
$xmlWriter->writeElement('g:availability', $availability);
$xmlWriter->writeElement('g:price', $product->getFinalPrice());
$xmlWriter->writeElement('g:brand', $brand);
//$xmlWriter->writeElement('g:gtin', $_ean);
$xmlWriter->writeElement('g:gtin', $_ean);
$xmlWriter->writeElement('g:quantity', mt_rand(2,5));
$xmlWriter->writeElement('g:manufacturer', $manufacturer);
$xmlWriter->writeElement('g:expiration_date', date('Y-m-d', strtotime('+3 weeks')).'T00:00:00');
$xmlWriter->startElement('g:tax');
$xmlWriter->writeElement('g:rate', '19');
$xmlWriter->endElement();
$xmlWriter->startElement('g:shipping');
$xmlWriter->writeElement('g:price', $versandkosten);
$xmlWriter->endElement();
$xmlWriter->writeElement('g:shipping_weight', 4);
$xmlWriter->endElement();
$childProducts = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($product->getId());
if (!empty($childProducts[0])) {
//$_child_id = reset($childProducts[0]); //array_values($childProducts[0])[0];
#$childProducts[0] = array_slice($childProducts[0], 5);
foreach ($childProducts[0] as $_child_id) {
$_child = Mage::getModel('catalog/product')->load($_child_id);
if ($_child->isSaleable()) {
$size = '';
$xmlWriter->startElement('item');
$xmlWriter->writeElement('g:id', $_child->getSku());
$xmlWriter->startElement('g:title');
$xmlWriter->writeCData($product->getName());
$xmlWriter->endElement();
$xmlWriter->startElement('g:description');
$xmlWriter->writeCData($_descr);
$xmlWriter->endElement();
$xmlWriter->writeElement('g:item_group_id', $product->getSku());
if ($_child->getAttributeText('ebay_size_dropdown') != '') {
$xmlWriter->writeElement('g:size',$_child->getAttributeText('ebay_size_dropdown') );
}else{
$xmlWriter->writeElement('g:size', $_child->getAttributeText('width') .' x '.$_child->getAttributeText('length'));
}
$_variation =
$_child->getAttributeText('hardness').' + '.
$_child->getAttributeText('slipcover');
$xmlWriter->writeElement('g:material',$_variation );
$xmlWriter->writeElement('g:google_product_category',2696);
$xmlWriter->writeElement('g:product_type', 'Matratzen');
$xmlWriter->writeElement('g:link', $_url.'?utm_source=shopping&utm_medium=cpc&utm_campaign=shopping');
$xmlWriter->writeElement('g:image_link', Mage::helper('catalog/image')->init($product, 'image')->resize($_imgSize));
$xmlWriter->writeElement('g:condition', $condition);
$xmlWriter->writeElement('g:availability', $availability);
$xmlWriter->writeElement('g:price', $_child->getFinalPrice());
$xmlWriter->writeElement('g:brand', $brand);
//$xmlWriter->writeElement('g:gtin', $_ean);
$xmlWriter->writeElement('g:gtin', $_child->getData('ean'));
$xmlWriter->writeElement('g:quantity', mt_rand(2,5));
$xmlWriter->writeElement('g:manufacturer', $manufacturer);
$xmlWriter->writeElement('g:expiration_date', date('Y-m-d', strtotime('+3 weeks')).'T00:00:00');
$xmlWriter->startElement('g:tax');
$xmlWriter->writeElement('g:rate', '19');
$xmlWriter->endElement();
$xmlWriter->startElement('g:shipping');
$xmlWriter->writeElement('g:price', $versandkosten);
$xmlWriter->endElement();
$xmlWriter->writeElement('g:shipping_weight', 4);
$xmlWriter->endElement();
unset($_child);
}
}
}
}
if (0 == $i%500) {
file_put_contents($file, $xmlWriter->flush(true), FILE_APPEND);
}
}
$xmlWriter->endElement(); // </channel>
$xmlWriter->endElement(); // </rss>
$xmlWriter->endDocument();
file_put_contents($file, $xmlWriter->flush(true), FILE_APPEND);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment