質問

私が誰かのためにブログを作成するプロセスにいますよ。彼らは大量のデータをプルし、デザインにかなりしっかりとそれを統合したいので、標準のウィジェットである無無ありません。それは今まで罰金をされています。

彼らは、その上に様々なイベントとパブリックアクセスGoogleカレンダーを持っていると私は(「今」以降から)次の5つのイベントを取得し、イベントのインスタンスは、その場所とリンクを開始したときにイベントのタイトルを、表示したいですGCAL項目にます。

私が見ることができるものから、GCALをつかむための3つのオプションがありますフィード:XML、iCalのか、HTML(一部は実際にJSONを打つ含みます)。 XMLは、論理的な選択のように思える、右?

さてXMLフィードはfaffy HTMLの実際には多くの(Atomフィードの説明の後)です。パースこれが可能であるが、(カレンダー上のいくつかあるうち)イベントを定期的にのみ次のインスタンスがあるときに、そのイベントの最初のインスタンスと、(明らかに)いない情報を表示するので、それは背後にある巨大な痛みです。

は、だから私は少しだけ密集しているのですか?私はXML APIを介してハッキング欲しいものを表示する方法はありますか?

または私はiCalのを通じて、より良い運を持っているでしょうか?あなたが持っているので、もし私がPHPで任意のiCalのをやったことがない、あなた自身のために物事を簡単にするために使用したすべてのlibsを提案してくださいます。

編集の答えのおかげで、私は(Zend Frameworkのの残りの部分とは別の、ありがたいことに、の)のZend Gdataのパックをダウンロードしました。

:私は必要なものを行うと、このように簡単でした
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_HttpClient');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
$service = new Zend_Gdata_Calendar();
$query = $service->newEventQuery();

$query->setUser('your_user@googlemail.com');

$query->setVisibility('public');
$query->setProjection('full');
$query->setStartMin(date('Y-n-j'));
$query->setStartMax(date('Y-n-j', time() + (60*60 *24*8)));
$query->setOrderby('starttime');

try { $eventFeed = $service->getCalendarEventFeed($query); }
catch (Zend_Gdata_App_Exception $e) { return; }

foreach ($eventFeed as $event) 
    echo $event; // do something real here

それはあなたのイベントの週間分を取得する必要があります(はいsetStartMaxがとても必要とされ、将来的に8日間、それを設定し、排他的である)。

が、これは将来的に他の誰かを助けることを望みます。

役に立ちましたか?

解決

別のオプションは、Zendのフレームワークの別の部分である、ZendのGoogleカレンダーライブラリを使用することで、あなたが全体のZendのフレームワークを必要としないので、

http://framework.zend.com/manual/en /zend.gdata.calendar.htmlする

あなたは例を見てみたら、

それは難しいことではありません。

他のヒント

の場合、それは他の誰を助け、私は、デフォルト以外のカレンダーを取得する方法を考え出しました。あなたのGoogleカレンダーにアクセスし、カレンダー設定を見ると、一番下に本当に長いメールアドレスのようにフォーマットされたカレンダーIDがある。(例:adg5jcq8gk7lsp6rrbmrm8c@group.calendar.google.com)を使用して$ query-こと> SETUSER()は、特定のカレンダーを使用します。

のコードを使用して誰にもヘッドアップとして、echo $event;は私のために何も表示されませんでしたので、私は、クエリが失敗したと思っています。

ここで何かを印刷する必要がありスニペットはあります:

foreach ($eventFeed as $event) {
  echo $event->title->text . '<br />';
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top