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