【问题标题】:SimpleXML create feed - loop gives wrong outputSimpleXML 创建提要 - 循环给出错误的输出
【发布时间】:2014-10-10 19:16:44
【问题描述】:

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

<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 代码:

$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()));

}

希望任何人都可以帮助我解决这个问题。提前致谢!

【问题讨论】:

    标签: php magento simplexml


    【解决方案1】:

    实际上并没有答案,但是在将更多孩子添加到提要中后,问题自行解决了。

    工作代码:

    $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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 2012-02-06
      • 2022-01-13
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多