iGoogleのガジェットはXMLで書く
この辺りは、googleで検索してもらった方が速いので
http://www.google.co.jp/search?q=igoogle+%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88+%E4%BD%9C%E6%88%90&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_ja___JP231&aq=t
こんなリンクを貼っておくことにします。
Googleにもxmlファイルの記載方法などの解説サイトがありました…が、あんまり読んでません。
とりあえず、今回はlastRSS(http://lastrss.oslab.net/)というRSS取得のためのライブラリを使ってRSSに含まれている画像へのURLを抜き出してimgタグで表示することにしました。
関数名と一部しか名残りはありませんが、lastRSSのサンプルソースの一部を改造して使っています。
見たいblogに載っている画像の大きさは大体一緒だったので、width/heightパラメータにサイズ1/6したものを設定して表示させています。それから、imgタグが記載されている場所を決め打ちして処理しているので、他の用途は考えてないため、柔軟性はないです。
<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="タイトル" scrolling="true" /> <Content type="url" href="phpスクリプトを設置した場所のURL" /> </Module>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php function getIMGURL ( $str ) { if ( ereg ( "<img ", $str ) ) { $img = split ( "<img ", $str ); $img = split ( "/>", $img[1] ); $img = split ( " ", $img[0] ); $imgblock = Array(); foreach ( $img as $line ) { if ( ereg ( "alt", $line ) ) { $keys = split("=", $line ); // alt $imgblock['alt'] = preg_replace ( "/\"/","",$keys[1]); } else if ( ereg ( "src", $line ) ) { $keys = split("=", $line ); // alt $imgblock['src'] = preg_replace ( "/\"/","",$keys[1]); } else if ( ereg ( "width", $line ) ) { $keys = split("=", $line ); // alt $imgblock['width'] = preg_replace ( "/\"/","",$keys[1]); } else if ( ereg ( "height", $line ) ) { $keys = split("=", $line ); // alt $imgblock['height'] = preg_replace ( "/\"/","",$keys[1]); } } } else return NULL; return $imgblock; } function checkLinkItem ( $str ) { $checkStr = Array ( 'ot_listing.pl', ); foreach ( $checkStr as $cs ) { if ( ereg ( $cs, $str ) ) return false; } return true; } function ShowOneRSS($url,$itemCount) { global $rss; if ($rs = $rss->get($url)) { $iC = sizeof($rs['items']); if ( sizeof($rs['items']) > $itemCount ) { $iC = $itemCount; } for ( $i = 0; $i < $iC; ++$i ) { $rsbody = $rs['items'][$i]; $imgbody = getIMGURL($rsbody['description']); if ( ( $imgbody != NULL ) ) { if ( trim($imgbody['width']) ) { $w = intval($imgbody['width']) / 6; } else unset($w); if ( trim($imgbody['height']) ) { $h = intval($imgbody['height']) / 6; } else unset($h); printf ( "<a href=\"%s\" target=\"%s\">%s</a><br /><img src=\"%s\"%s%s><br />\n", $rsbody['link'], '_blank', $rsbody['title'], $imgbody['src'], isset($w) ? 'width="'.$w.'" ' : "", isset($h) ? 'height="'.$h.'" ' : "" ); } } } } include "./lastRSS.php"; $rss_list = array( '取得したいblogのRSS', ); $rss = new lastRSS; $rss->cache_dir = './temp'; $rss->cache_time = 60 * 60 * 60; $rss->cp = 'UTF-8'; $rss->items_limit = 10; print '<tr><td class="block">'; foreach ($rss_list as $url) ShowOneRSS($url,5); print '</td></tr>'; ?> </body> </html>