基本上,我只想使用of语句过滤来自具有特定类别的各种提要的项目,并且只显示6个项目。我可以成功地做任何一件事,但不能同时做这两件事。我试图首先根据类别筛选项目,然后将这些项目的数量限制为六个,或者任何设置。代码如下(它的作用正好相反,我不明白如何用另一种方法)。希望有人帮忙。非常感谢!
<?php
require_once('simplepie131.inc');
$feed = new SimplePie();
$feed->set_feed_url(array(
'http://site1.com/rss',
'http://site2.com/rss',
'http://site3.com/rss',
));
$feed->enable_cache(true);
$feed->set_cache_location('cache');
$feed->set_cache_duration(1800);
$feed->init();
$feed->handle_content_type();
include('header.php');
?>
<h1>Title</h1>
<?php
foreach ($feed->get_items(0, 6) as $item):
?>
<?php
if( $item->get_category()->get_label() == 'category1'
or $item->get_category()->get_label() == 'category2'
or $item->get_category()->get_label() == 'category4'
):
?>
<div>
<h2><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title();?></a></h2>
<img src="<?php echo $item->get_description(); ?>" />
<img src="<?php echo $item->get_feed()->get_image_url(); ?>" />
<?php
echo $item->get_feed()->get_title();
echo $item->get_category()->get_label();
echo $item->get_date('d.m.Y | H:i');
?>
</div> <!-- end div -->
<?php endif;?>
<?php endforeach; ?>
您正在运行的问题是,您将结果限制在前6篇文章中,然后试图在6个项目的循环中完成您的条件。你需要做的是手动计算通过你的条件允许的文章数量,然后在达到6篇时退出。
<?php
$counter = 0;
foreach ($feed->get_items() as $item):
if( $item->get_category()->get_label() == 'category1'
or $item->get_category()->get_label() == 'category2'
or $item->get_category()->get_label() == 'category4'
):
$counter++; // increment your counter
?>
<div>
<h2><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title();?></a></h2>
<img src="<?php echo $item->get_description(); ?>" />
<img src="<?php echo $item->get_feed()->get_image_url(); ?>" />
<?php
echo $item->get_feed()->get_title();
echo $item->get_category()->get_label();
echo $item->get_date('d.m.Y | H:i');
?>
</div> <!-- end div -->
<?php endif;?>
<?php if ($counter >= 6) break; // break out of the foreach loop ?>
<?php endforeach; ?>