Есть ли простой способ связать события с событиями в моем календаре Google?

Я переношу веб-сайт моей библиотеки с веб-календаря на календарь Google. Сайт написан на PHP и HTML4.01 (переход от переходного к строгому). Есть ли программный способ, которым я могу генерировать ссылки на дни/записи календаря? С webcal ссылка на дневной просмотр была:

www.mylibrary.com/calendar/day.php?YYYYMMDD

И поэтому было легко программно сгенерировать ссылку на конкретный день. Я пытался найти способ сделать подобные вещи с календарем Google, и мне не повезло. Я бы очень хотел иметь возможность сделать что-то вроде

<p>The summer reading program kicks off <a href="
<?php echo "http://www.google.com/calendar/event?cid=".$mycalenderid."&eventdate=".$year.$month.$day; ?>
">May 5th</a></p>

Возможно ли это хотя бы отдаленно?


person aslum    schedule 29.01.2010    source источник


Ответы (3)


Возможно, это не то «простое» решение, на которое вы надеялись, но в Zend Framework есть компонент gdata, который может делать то, что вам нужно.

person Eric Butera    schedule 29.01.2010
comment
Просто добавить к этому, если вы еще не знали. Вам не нужно использовать Zend Framework, чтобы использовать один из его компонентов. - person Dean Rather; 29.01.2010
comment
Будет ли это что-то, что мне нужно будет установить на стороне сервера? Я не возражаю против небольшого затруднения, если оно может упростить задачу в долгосрочной перспективе. - person aslum; 29.01.2010
comment
Вот документация по отображению информации о событии: code.google.com/ API/календарь/данные/1.0/ - person emmychan; 29.01.2010

Самый простой способ добавить календарь на свой сайт — использовать встраиваемый календарь, предоставленный Google: http://code.google.com/apis/calendar/publish/. Положительным моментом является то, что все, что вам нужно сделать, это добавить код iframe на страницу и дать ссылку на него. Минус в том, что, насколько я могу судить, нет механизма привязки к конкретному дню или событию.

Чтобы сделать что-то похожее на то, что вы просите, вам нужно будет использовать компонент zend Gdata и запрограммировать его самостоятельно. Итак, для days.php вы можете сделать что-то похожее на:


<?php
/**
 * Adapted from google API doc example
 */
$day = $_GET['day'];
$nextDay = date('Y-m-d', strtotime($day) + 86400);

$client = new Zend_Gdata_Calendar(); //Not authenticated for public calendar

$query = $gdataCal->newEventQuery($client);
$query->setUser('[email protected]');
$query->setVisibility('public');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin($day); //Inclusive
$query->setStartMax($nextDay); //Exclusive
$eventFeed = $gdataCal->getCalendarEventFeed($query);

?>
<h1>
  <?php print $day; ?>
</h1>
<ul id="days-events">
  <?php foreach ($eventFeed as $event): ?>
    <li class="event">
      <?php print $event->title->text ?>
    </li>
  <?php endforeach; ?>
</ul>

Документация Google: http://code.google.com/apis/calendar/data/1.0/developers_guide_php.html

Документация Zend: http://framework.zend.com/manual/en/zend.gdata.calendar.html

person emmychan    schedule 29.01.2010

Гораздо более простое решение:

if($_REQUEST['showday']!='') {$datetoshow=$_REQUEST['showday'];
$datetoshow = $datetoshow."/".$datetoshow;}

Бла-бла-контент страницы

if ($datetoshow==""){?>
<iframe srtc=""> .... // regular embed text goes here.
<?} else {?>
<iframe src=""> // Add &amp;mode=DAY&amp;dates=<?echo $datetoshow;?> to the SRC code
<?}

Тогда это так же просто, как вызвать страницу с day.php?showday=20100205 или в любой другой день, который я хочу. Спасибо за все предложения!

person aslum    schedule 01.02.2010