我正在开展一个学校项目,从报纸上获取RSS,并按照Masonry布局进行设计。我可以使用Simplepie类来获取用hs转换的RSS订阅源,但我希望通过计数器为每篇文章提供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>
相反,我希望第一篇文章有课程&#34;发表第1篇&#34;,第2篇文章&#34;发表第2篇&#34;在五篇文章后,第六篇文章应该得到#col;&#34; col1&#34;再来等等..
这是我的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; ?>
提前多多感谢!让我的项目继续进行将意味着很多。
答案 0 :(得分:0)
尝试使用模数而不是创建计数器; $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;
}
}
应该工作。
答案 1 :(得分:0)
$teller = 1;
for ($i = 1; $i <= 10 ; $i++) {
if($i%6==0)
{
$teller=1;
echo " col1";
}else{
echo " col".$teller;
}
$teller++;
}
答案 2 :(得分:0)
您需要使用大量<?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>
希望它有所帮助:) (我想你也是荷兰人,哈哈)
答案 3 :(得分:0)
<?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; ?>
答案 4 :(得分:0)
我认为你几乎就在那里,但我认为问题是如果teller = 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++;
}
?>