2017-03-08 5 views
0

ローカルニュースペーパーから最新のアイテムを取得するRSSフィードがあります。私はこの仕事の日に、仲間のイメージなしでニュース記事を投稿したため、致命的なエラーで始めました。私が望むのは、画像が囲まれていない場合に、デフォルトの画像を表示する条件タグを追加することです。rssフィードで画像が見つからない場合の代替画像

私のコードは次のようである:私はここで見つける条件付きコードの一部を使用してみましたが、私はまだ、このエラーが出る

<?php 
function read_rss($display=0,$url='') { 
$doc = new DOMDocument(); 
$doc->load($url); 
$itemArr = array(); 
foreach ($doc->getElementsByTagName('item') as $node) { 
    if ($display == 0) { 
     break; 
    } 
    $itemRSS = array (
     'title'  => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'description' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
     'link'  => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     'pubdate'  => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
     'artikkelbilde' => $node->getElementsByTagName('enclosure')->item(0)->getAttribute('url') 
    ); 
    array_push($itemArr, $itemRSS); 
    $display--; 
} 
return $itemArr; 
} 
?> 
<div class="prl-span-12 prl-panel clearfix"> 
<h5 class="prl-block-title default"><a href="http://h-a.no">Lokale nyheter</a></h5> 
<div class="prl-grid prl-grid-divider"> 
<?php 
$items = read_rss(3, 'http://www.h-a.no/rss/rssfeed.aspx?subject1=1'); 
foreach ($items as $item) { 
echo '<div class="prl-span-4"><article class="prl-article"><a class="prl-thumbnail" href="' . $item['link'] . '" title="'.$item['title'].'"><span class="prl-overlay"><img src="'. $item['artikkelbilde'] .'" alt="'.$item['title'].'"><span class="prl-overlay-area o-ha"></span></span></a><h6 class="prl-article-title"><a href="' . $item['link'] . '" title="'.$item['title'].'">'.$item['title'].'</a></h6></article> 
    </div>';  
} 

Fatal error: Call to a member function getAttribute() on null in /home/4/h/hamarradioen/www/wp-content/themes/presslayer-hr/inc/nyhetsfeed-hamar.php on line 18

+0

することができますあなたが試したこととなぜそれがうまくいかなかったのかを示します。 – Kaddath

+0

foreachループでこれを追加しようとしました。 'foreach($ items as $ item){ $ sakbilde = $ item ['artikkelbilde']; if($ sakbilde === null){ $ sakbilde = 'http://hamarradioen.no/wp-content/uploads/2017/03/hamararbebeblad900x600.jpg'; } ' そして、代わりに$ sakbilde – skoen

答えて

0

あなたがもし$node->getElementsByTagName('enclosure')->item(0)リターンをチェックする必要がありますあなたに何か。たとえば:

foreach ($doc->getElementsByTagName('item') as $node) { 
    if ($display == 0) { 
     break; 
    } 

    $itemRSS = array (
      'title'  => $node->getElementsByTagName('title')->item(0)->nodeValue, 
      'description' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
      'link'  => $node->getElementsByTagName('link')->item(0)->nodeValue, 
      'pubdate'  => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
      'artikkelbilde' => false, 
     ); 
    $enc_node = $node->getElementsByTagName('enclosure')->item(0); 
    if (!empty($enc_node)) { 
     $itemRSS['artikkelbilde'] = $enc_node->getAttribute('url'); 
    } 

    array_push($itemArr, $itemRSS); 
    $display--; 
} 

後で、空ではないartikkelbildeかどうかを確認し、必要なものを行うことができます。

if ($item['artikkelbilde']) { 
    echo 'One thing'; 
} else { 
    echo 'Another thing'; 
} 
+0

を言うことのimg SRCで変数を変更しかし、私はまだどこかに行くためのコード行が必要になります ' array_push($ itemArr、$ itemRSS)。 $ディスプレイ - ; }戻り値$ itemArr; ' – skoen

+0

更新を参照してください –

+0

それは働いた。完全な解決策については私の答えを見てください。ありがとうu_mulder – skoen

0

私は今これをしなかった、働いているようだ:

<?php function read_rss($display=0,$url='') { 
$doc = new DOMDocument(); 
$doc->load($url); 
$itemArr = array(); 
foreach ($doc->getElementsByTagName('item') as $node) { 
    if ($display == 0) { 
     break; 
    } 
    $itemRSS = array (
     'title'  => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'description' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
     'link'  => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     'pubdate'  => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
     'artikkelbilde' => false 
    ); 
$enc_node = $node->getElementsByTagName('enclosure')->item(0); 
if (!empty($enc_node)) { 
$itemRSS['artikkelbilde'] = $enc_node->getAttribute('url'); 
} 
    array_push($itemArr, $itemRSS); 
    $display--; 
} 
return $itemArr; 
} 
?> 
<div class="prl-span-12 prl-panel clearfix"> 
<h5 class="prl-block-title default"><a href="http://h-a.no">Lokale nyheter</a></h5> 
<div class="prl-grid prl-grid-divider"> 
<?php 
$items = read_rss(3, 'http://www.h-a.no/rss/rssfeed.aspx?subject1=1'); 
foreach ($items as $item) { 
$sakbilde = $item['artikkelbilde']; 
if ($item['artikkelbilde']) { 
$sakbilde = $item['artikkelbilde']; 
} 
else { 
$sakbilde = 'http://hamarradioen.no/wp-content/uploads/2017/03/hamararbeiderblad900x600.jpg'; } 

echo '<div class="prl-span-4"><article class="prl-article"><a class="prl-thumbnail" href="' . $item['link'] . '" title="'.$item['title'].'"> 
<span class="prl-overlay"><img src="'. $sakbilde .'" alt="'.$item['title'].'"><span class="prl-overlay-area o-ha"></span></span></a> <h6 class="prl-article-title"><a href="' . $item['link'] . '" title="'.$item['title'].'">'.$item['title'].'</a></h6></article> 
    </div>'; } 
関連する問題