如果在RSS Feed中找不到图像,则返回图像

时间:2017-03-08 11:00:49

标签: php wordpress 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()

2 个答案:

答案 0 :(得分: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';
}

答案 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>'; }
相关问题