2012-02-08 11 views
-1

初からPHPの属性値に基づいて、XML要素を取得し、私は複数の外部のXMLフィードから複数の製品(現時点で24種類の飼料)、飼料につき1つの製品でフロントページを持っています。別の例では、私が提示複数xmlfeedsすべての

<products> 
<product> 
<productID>1344</productID> 
<name>Displex screen</name> 
<price currency="EUR">6.95</price> 
<productURL>http://www.voorbeeld.nl</productURL> 
<imageURL>http://www.voorbeeld.nl/images/1543.jpg</imageURL> 
<description><![CDATA[Touchscreen voor je smartphone?]]></description> 
<categories> 
</categories> 
<additional> 
<field name="price_from">14.95</field> 
<field name="price_shipping">Gratis!</field> 
<field name="soldout">0</field> 
<field name="startdate">2012-02-07 12:00:00</field> 
<field name="enddate">2012-02-08 12:00:00</field> 
</additional> 
</product> 
</products> 

異なる飼料(製品)フィード

一例

<products> 
<product> 
<productID>4943</productID> 
<name>Inbouwspot</name> 
<price currency="EUR">199.00</price> 
<productURL>http://www.example.com</productURL> 
<imageURL>http://static.example.com/45928-1.jpg</imageURL> 
<description><![CDATA[Incl. BTW!! Verkrijgbaar in een voordeelset.]]></description> 
<categories> 
<category path="Aanbiedingen">Aanbiedingen</category> 
<category path="Projectverlichting">Projectverlichting</category> 
</categories> 
<additional> 
<field name="fromPrice">395.00</field> 
<field name="discount">196.00</field> 
<field name="deliveryCosts"></field> 
<field name="deliveryTime">3-5 dagen</field> 
</additional> 
</product> 

を養う:一部の属性は、例えば、同じもののために別の名前を持っています

<?php 
    // get xml file contents 
    $xmlurl = get_post_meta(get_the_ID(), 'plus_xmlfeed', true); 
    if (!empty($xmlurl)){ 
    $xml = simplexml_load_file($xmlurl); 
    } 
    $xml->product->name = substr($xml->product->name, 0, 30).'...'; 
    $desc = substr($xml->product->name, 0, 50).''; 
?> 

    <li class="span3"> 
     <div class="thumbnail"> 
     <a href="<?php echo $xml->product->productURL ;?>"> 
      <center><img src="<?php echo get_template_directory_uri(); ?>/img/logos/<?php echo get_post_meta(get_the_ID(), 'plus_logos', true); ?>.gif"/></center> 
      <center><img class="mainimg" alt="" src="<?php echo $xml->product->imageURL ;?>"/></center> 
     </a> 
     <div class="caption"> 
      <h5><a href="<?php echo $xml->product->productURL ;?>"><?php echo $xml->product->name; ?></a></h5> 
      <div class="maindesc half clearfix"><div class="prijs">&euro; <?php echo $xml->product->price ;?></div><strike style="color: rgb(248, 148, 6);"> 
      <?php 
      foreach ($xml->product->additional->field as $field) { 
           switch((string) $field['name']) { 
            case 'price_advice': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'fromPrice': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'oldPrice': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'from_price': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'adviesprijs': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'advice_price': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'Fromprice': 
             echo '&euro; ' .$field. ''; 
             break; 
            case 'recommendedPrice': 
             echo '&euro; ' .$field. ''; 
             break; 
            } 
           } 
      ?> 
      </strike> 
      <p style="color: rgb(153, 153, 153);"><?php echo $desc; ?></p></div> 
      <div class="btn-group bot"><div class="pull-right"> </div><a class="btn btn-primary" href="<?php echo $xml->product->productURL ;?>">Kopen</a> <a class="btn" href="#<?php echo 'modal_'.get_the_ID();?>">Info</a></div> 
     </div> 
     </div> 

    </li> 
<?php /*end loop*/ ?> 
:このようなループ内

私はポストにフィードを入力して、変数($ XMLURL)として、それを表示するには、ワードプレスを使用しています。私はそれがループトラフにそのフィードのための正しいものを見つけるために、すべてのオプションがありませんので、aswellポスト内の特定の属性(fromPriceまたはfrom_priceなど)を入力したいと思います。私が知っている上記

がたくさんより速く、より効率的にすることができ、私は誰かがそれで私を助けることができると思います。私は、XPathについて何かを読んで、私はそれを試してみましたが、大成功なし。

答えて

0

私の独自のソリューション:

は、私は解決策を見つけた自分

  <?php 
       $FromPrices= get_post_meta(get_the_ID(), 'plus_fromprices', true); 
       if (!empty($FromPrices)){ 
       foreach ($xml->xpath('//field[@name="'.$FromPrices.'"]') as $fromprice) { 
        echo '&euro; '.$fromprice; 
        } 
       } 
      ?> 
関連する問題