2013-08-21 4 views
0

이벤트 제목과 시작 날짜를 가져 오기 위해 PHP 포함 (필수) 및 간단한 코드를 사용하고 있지만 모든 이벤트에 대해 내게 8 월 8 일을 계속 제공합니다. 나는 사건들을 잘 볼 수있다. 어떤 아이디어를 다른 사람이 '언제'태그를 잡아? 태그를 사용하면 오류가 발생합니다. 나는 PHP에서 프로가 아니라 내 재치가 끝났어!단순 이벤트를 사용하여 google 캘린더에 Google 이벤트를 연결할 수 없습니다.

 <?php 
    if ($_SERVER['QUERY_STRING']) { 
    parse_str($_SERVER['QUERY_STRING'], $arg); 
    } else { 
    $arg['feed'] = ''; 
    $arg['count'] = ''; 
    $arg['more'] = ''; 
    $arg['nodiv'] = ''; 
    } 

    if (!isset($arg['nodiv'])) $arg['nodiv']='false'; 

    if ($arg['nodiv'] != 'true') { 
?> 





<div id="news_list"> 
<?php 
    } 

    include('simplepie.inc'); 

// Let's create a new SimplePie object 
$feed = new SimplePie(); 

$feed = new SimplePie(); 
    $feed->set_file($file); 
    $feed->enable_cache(false); 

    $feed->init(); 
    $feed->handle_content_type(); 

// This is the feed we'll use 
$feed->set_feed_url('http://www.google.com/calendar/feeds/aufdccetl%40gmail.com/public/full?max-results=2'); 


// Let's turn this off because we're just going to re-sort anyways, and there's no reason to waste CPU doing it twice. 
$feed->enable_order_by_date(false); 

// Initialize the feed so that we can use it. 
$feed->init(); 

// Make sure the content is being served out to the browser properly. 
$feed->handle_content_type(); 

// We'll use this for re-sorting the items based on the new date. 
$temp = array(); 


foreach ($feed->get_items() as $item) { 


    // We want to grab the Google-namespaced <gd:when> tag. 
    $when = $item->get_item_tags('http://schemas.google.com/g/2005', 'when'); 



    // Once we grab the tag, let's grab the startTime attribute 
    $date = $when[0]['attribs']['']['startTime']; 

    // Let's convert it all to UNIX timestamp. This will be used for sorting. 
    $sortDate = SimplePie_Misc::parse_date($date); 

    // Let's format it with date(). This will be the date we display. 
    $gCalDate = date('l, F j, Y', $sortDate); 

    // This is how each item will be displayed. We're adding it to the array we created earlier, and indexing it by the $sortDate. 
    $temp[$sortDate] = '<p> <div class="event_title"><a href=' . $feed->get_permalink(). '>' . $item->get_title() . '</a></div> <div class="event_date"> ' . $gCalDate . '</div> <br/></p>'; 
} 

// Change this to krsort() to display with the furthest event first. 
ksort($temp); 

// Loop through the (now sorted) array, and display what we wanted. 
foreach (array_slice($temp, 0, 3) as $paragraph) { 

    echo $paragraph; 

} 
?> 

이 스크립트는 이벤트 제목과 날짜를 올바르게 가져오고, 이벤트의 공개 URL을 가져 오지 않습니다. 대신 빈 캘린더를 보여줍니다. url을 통해 공개 이벤트 정보를 얻는 방법에 대한 아이디어가 있습니까?

+0

? 브라우저에서 올바른 피드인지 확인할 수 있습니까? 그렇다면 기사 날짜는 무엇입니까? – Revent

+0

'$ arg [ 'feed']'가 서버에 유효한 파일 이름을 제공하고 있습니까? – Revent

+0

지금 스크립트가 작동 중입니다. 전체 목록 대신 3 개의 이벤트 만 표시하면됩니다. 이제 그 점을 파악하려고합니다. 또한 여기에 표시 할 수없는 pvt 피드입니다. – alice

답변

1

이벤트/기사 제한에 대한 질문에 답변하려면 set_item_limit() 기능을 사용하십시오. 예를 들어 :

$feed->set_item_limit(5); // limit each feed to the top 5 articles/events 
$feed->init(); 

이 표시 총 수를 제한하려면이 사용

당신이에서 당기는 피드의 URL 무엇
$max_items_total = 25; // limit the total number of articles displayed to 25 
foreach ($feed->get_items(0, $max_items_total) as $key=>$item) { 
    ... 
} 
+0

답장을 보내 주셔서 감사합니다.하지만이 부분이 효과가 있습니다. 각 이벤트의 개별 URL을 가져와야합니다. 따라서 사용자가 이벤트 제목을 클릭하면 이벤트 정보로 이동합니다. – alice

+0

당신을 진심으로 환영합니다. 피드 항목에 URL이 포함되었다고 가정하면 그 피드를 가져올 수 있습니다. 피드 URL이 있으면 얻을 수도 있습니다. – Revent