0

我正在开展一个学校项目,以从报纸上获取 RSS 提要,并将它们设计成Masonry布局。我可以使用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; ?>

提前非常感谢!这将意味着很多,让我的项目继续下去。

4

5 回答 5

0

你使用了很多<?php?>标签,而你只需要一对。
您还使用endif, endforeachwhile}对我来说似乎更合乎逻辑。我重新格式化了你的代码:

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>

希望它有所帮助: )(我想你也是荷兰人,哈哈)

于 2012-05-17T15:24:02.130 回答
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; ?>
于 2012-05-17T15:25:16.007 回答
0
$teller = 1;
for ($i = 1; $i <= 10 ; $i++) {
   if($i%6==0)
    {
       $teller=1;
       echo " col1";
    }else{
      echo " col".$teller;
    }
    $teller++;
}
于 2012-05-17T15:21:45.377 回答
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;
    }
}

应该管用。

于 2012-05-17T15:17:43.107 回答
0

我想你快到了,但我认为问题是如果出纳员 = 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++;
}

?>
于 2012-05-17T15:44:30.383 回答