Created
July 4, 2017 08:21
-
-
Save renepenner/cbc18a159fb492be22b3f2481647fdc9 to your computer and use it in GitHub Desktop.
This file contains 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 | |
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