SimpleXML创建feed - 循环提供错误的输出

时间:2014-08-17 21:24:33

标签: php magento simplexml

使用simpleXML创建数据源时遇到问题。目前使用循环将产品放入数据Feed中,但所有产品的数据都插入到第一个产品中。给我以下输出:

<products>
<product>
<product_id>36440</product_id>
<product_name>Snoerloze ramenwasser</product_name>
<brand/>
<description>
<h1>Droge schone ramen in een handomdraai... streeploos!</h1> <h3>Dankzij de nieuwe, inventieve draadloze ramenreiniger</h3> <ol> <li> Licht in gewicht, compact en extreem krachtig</li> <li>Bespaart u tijd</li> <li> Een snelle en effectieve manier om zowel binnen als buiten al uw ramen streeploos schoon en droog te maken.  </li> <li>Laat geen watersporen, strepen of druppels achter</li> </ol> <h3><br />Bent u die strepen op het raam ook zo beu? Dit is de nieuwe - tijdbesparende - leuke manier om uw ramen streeploos schoon te krijgen in een handomdraai.  Al het vuile water wordt opgezogen, zonder een druppel achter te laten. </h3> <p>Bestreepte, vuile ramen zijn verleden tijd, dankzij de snoerloze ramenwasser. Hij is gemakkelijk in gebruik, ideaal om condens druppels of kalkplekken tegen te gaan en om natte plekken snel en eenvoudig op te zuigen. Ideaal ook in de badkamer. Omdat de ramenwasser draadloos is kunt u hem zowel binnen als buiten gebruiken. Serres, badkamers, tafels, ramen en zelfs de caravan zijn in mum van tijd sprankelend schoon. Werkt op 4 AA alkaline batterijen, welke u van ons GRATIS meegeleverd krijgt!</p> <h3>Kinderlijk eenvoudig...</h3> <p>Spray het raamoppervlak in met uw favoriete glas reiniger, maak de oppervlakte schoon met een doek, en zuig met de ramenwasser het water weg. Zonder een druppel achter te laten, helemaal STREEPLOOS!... zo simpel is het!</p> <h3>Al het water wordt opgezogen in het interne waterreservoir. Voor een kristal helder STREEPLOOS resultaat zonder druppels.</h3>
</description>
<short_description>
Heeft u moeite om ruiten en spiegels streeploos te reinigen? Met deze ruitenreiniger wist en zuigt u in één handomdraai. Snoerloos, dus handzaam en licht van gewicht. Het water drupt niet op uw kozijnen of vensterbank, maar wordt door deze reiniger volledig opgezogen. Nawrijven is overbodig. Ideaal voor alle gladde oppervlakken.
</short_description>
<product_id>36287</product_id>
<product_name>Rekbare tuinslang 7,5m</product_name>
<brand/>
<description>
<h2>De meest ideale tuinslang ter wereld!</h2> <p>Sluit deze slang aan op de kraan en als het water erdoor stroomt verdubbelt de slang in lengte. Ideaal voor de tuin of het wassen van de buitenramen. Zodra u de watertoevoer sluit, krimpt de slang weer tot een klein handzaam pakketje. Inclusief aansluitstuk en instalbare spuitkop.</p>
</description>
<short_description>
</product>
<product/>
</products>

要使用以下php代码创建此Feed:

$xml = new SimpleXMLElement('<products></products>');

$products = _prepareCollection();

$obj = Mage::getModel('catalog/product'); 

foreach($products as $productid)
{   
    $_product = $obj->load($productid);

    $model = Mage::getModel('catalog/product');
    $_product = $model->load($productid);

    $_product->getFinalPrice();

    $product = $xml->addChild('product'); 
    $product->addChild('product_id',$_product->getSku());
    $product->addChild('product_name',$_product->getName());
    $product->addChild('brand',$_product->getAttributeText('manufacturer'));
    $product->addChild('description',html_entity_decode($_product->getDescription()));
    $product->addChild('short_description',html_entity_decode($_product->getShortDescription()));

}

希望有人可以帮我解决这个问题。提前谢谢!

1 个答案:

答案 0 :(得分:0)

实际上没有答案,但在向Feed中添加更多子项后,问题就解决了。

工作代码:

$xml = new SimpleXMLElement('<products></products>');

$products = _prepareCollection();

$obj = Mage::getModel('catalog/product'); 

foreach($products as $productid)
{   
    $_product = $obj->load($productid);

    $model = Mage::getModel('catalog/product');
    $_product = $model->load($productid);

    $_product->getFinalPrice();

    $product = $xml->addChild('product'); 
    $product->addChild('product_id',$_product->getSku());
    $product->addChild('product_name',$_product->getName());
    $product->addChild('brand',$_product->getAttributeText('manufacturer'));
    $product->addChild('description',html_entity_decode($_product->getDescription()));
    $product->addChild('short_description',html_entity_decode($_product->getShortDescription()));
    $product->addChild('promotion_details');
    $product->addChild('deeplink',$_product->getProductUrl());
    $product->addChild('delivery_period');
    $product->addChild('delivery_cost','6.99');
    $product->addChild('stock_level');
    $product->addChild('stock_level_date');
    $product->addChild('embargo');
    $product->addChild('expiry');
    $product->addChild('currency');
    $product->addChild('display_price',$_product->getFinalPrice());
    $product->addChild('price',$_product->getFinalPrice());
    $product->addChild('image_thumbnail',$_product->getThumbnailUrl());
    $product->addChild('image_url',$_product->getImageUrl());
    $product->addChild('image_large_url',$_product->getImageUrl());
    $product->addChild('language');

    $cats = $_product->getCategoryIds();

    $categories = $product->addChild('categories');

    foreach($cats as $category_id)
    {
        $_cat = Mage::getModel('catalog/category')->load($category_id) ;

        $category = $categories->addChild('category');
        $category->addChild('category_id', $category_id);
        $category->addChild('category_name',$_cat->getName());
    }
}