我正在做一个学校项目,从报纸上获取rss提要,并将它们放在砌体布局中。我可以使用 Simplepie 类让 rss 提要转换为 html,但我想用计数器为每篇文章提供从 1 到 5 的列大小。
这是我在 html 中得到的:
<div class="post col1 col2 col3 col4 col5 col1 col2 col3 col4 col5"> <!-- begin post -->
<h3 class="title"><a href="http://feedproxy.google.com/~r/dso-nieuws-sport/~3/zfFYeKYGagk/detail.aspx">Bergen naar halve finales play-offs basket</a></h3>
相反,我希望第一篇文章有类"post col1",第二篇文章有"post col2",在五篇文章之后,第六篇文章应该再次得到"col1",依此类推。
这是我的PHP代码:
<?php if ($sportfeed->data): ?>
<?php $sportitems = $sportfeed->get_items(); ?>
<?php foreach($sportitems as $sportitem): ?>
<?php $enclosure = $sportitem->get_enclosure(0); ?>
<?php if ($enclosure):?>
<div class="post
<?php $teller = 1;
for ($i = 1; $i <= 10 /* aantal artikels in feed */; $i++) {
if ($teller == 1) {
echo " col1";
++$teller;
} else if ($teller ==2)
{
echo " col2";
++$teller;
} else if ($teller ==3)
{
echo " col3";
++$teller;
} else if ($teller ==4)
{
echo " col4";
++$teller;
} else
{ echo " col5";
$teller =1;
}
}?>"> <!-- begin post -->
<h3 class="title"><a href="<?php echo $sportitem->get_permalink(); ?>"><?php echo $sportitem->get_title(); ?></a></h3>
<img src ="<?php echo $enclosure->get_link(); ?> "class="img_artikel"/>
</div> <!-- einde post -->
<?php endif; ?>
<?php endforeach; ?>
提前非常感谢!让我的项目继续下去意味着很多。
尝试使用模数而不是创建计数器; $teller = $i % 5
将返回余数,因此它会给你一个从 0 到 4 的数字。
for ($i = 1; $i <= 10 /* aantal artikels in feed */; $i++) {
$teller = $i % 5;
if ($teller == 0) {
echo " col5";
} else {
echo " col" . $teller;
}
}
应该工作。
$teller = 1;
for ($i = 1; $i <= 10 ; $i++) {
if($i%6==0)
{
$teller=1;
echo " col1";
}else{
echo " col".$teller;
}
$teller++;
}
您使用了很多<?php
和?>
标签,而您只需要一对。
你也使用endif
,endforeach
而}
对我来说似乎更合乎逻辑。我重新格式化了您的代码:
if ($sportfeed->data)
{
$sportitems = $sportfeed->get_items();
$teller = 1;
foreach($sportitems as $sportitem)
{
$enclosure = $sportitem->get_enclosure(0);
if ($enclosure)
{
echo '<div class="post col' . $teller;
$teller = $teller == 5 ? 1 : $teller + 1;
echo '"> <!-- begin post --><h3 class="title"><a href="' . $sportitem- >get_permalink(); . '">' . $sportitem->get_title(); . '</a></h3>';
echo '<img src="' . $enclosure->get_link(); . '"class="img_artikel"/></div> <!-- einde post -->';
}
}
}
整个for
循环是不必要的,如果我确实了解你想要实现的目标。上面的代码应该打印一个输出,如下所示:
<div class="post col1"> .... </div>
<div class="post col2"> .... </div>
<div class="post col3"> .... </div>
<div class="post col4"> .... </div>
<div class="post col5"> .... </div>
<div class="post col1"> .... </div>
<div class="post col2"> .... </div>
希望它对:)有所帮助(顺便说一句,我想你也是荷兰人,哈哈)
<?php
if ($sportfeed->data):
$sportitems = $sportfeed->get_items();
$i = 1;
foreach($sportitems as $sportitem):
$enclosure = $sportitem->get_enclosure(0);
if ($enclosure):
echo '<div class="post';
if ($i % 5 == 0) {
echo " col5";
} else {
echo " col" . ($i % 5);
}
echo '"> <!-- begin post -->';
?>
<h3 class="title"><a href="<?php echo $sportitem->get_permalink(); ?>"><?php echo $sportitem->get_title(); ?></a></h3>
<img src ="<?php echo $enclosure->get_link(); ?> "class="img_artikel"/>
</div> <!-- einde post -->
<?php endif; ?>
<?php $i++; ?>
<?php endforeach; ?>
<?php endif; ?>
我认为你快到了,但我认为问题是如果出纳员 = 1,那么你把它放进去,所以它等于 2 执行第二个块等等,只是尝试把它全部放在循环中并在最后递增一次......
我认为这样的事情会起作用:
<?php $teller = 1;
for ($i = 1; $i <= 10; $i++)
{
if ($teller == 1)
{
echo " col1";
}
else if ($teller ==2)
{
echo " col2";
}
else if ($teller ==3)
{
echo " col3";
}
else if ($teller ==4)
{
echo " col4";
}
else
{
echo " col5";
$teller =1;
}
echo " '>";
echo"<h3 class='title'> <a href='#'></a></h3>";
echo"<img src ='#' class='img_artikel'/>";
echo"</div>";
$teller++;
}
?>