2013-12-16 4 views
2

기본적으로 of 문을 사용하여 특정 범주의 다양한 피드의 항목 만 필터링하고 6 개의 항목 만 표시하려고합니다. 나는 성공적으로 할 수 있지만 둘 다 동시에 할 수는 없다. 먼저 범주에 따라 항목을 필터링 한 다음 해당 항목의 수를 6 개로 제한하거나 설정되는 항목을 제한하려고합니다. 코드는 다음과 같습니다 (반대의 경우, 다른 방법을 수행하는 방법을 이해하지 못합니다). 누군가가 도움이되기를 바랍니다. 고마워요!SimplePie : 항목 값 및 항목 수로 필터링

<?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; ?> 

답변

1

실행중인 문제는 결과를 처음 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; ?>