0 レビュー
2 回答
php-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>';
}
ここにある条件コードのいくつかを使用しようとしましたが、それでもこのエラーが発生します:
致命的なエラー:18行目の/home/4/h/hamarradioen/www/wp-content/themes/presslayer-hr/inc/nyhetsfeed-hamar.phpのnullでメンバー関数getAttribute()を呼び出す
わからない
0
レビュー
答え :
解決策:
$node->getElementsByTagName('enclosure')->item(0)
が何かを返すかどうかを確認する必要があります。例:
foreach($ doc-> getElementsByTagName('item')as $ node){
if($ display == 0){
壊す;
}
$ itemRSS =配列(
'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']){
エコー'1つのこと';
} そうしないと {
エコー'別のもの';
}
わからない
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>'; }
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。