コトブキ園というサイトがあって、

このサイトはSOY Shopで商品カタログを表示している。




ここのサイトはGoogle+で新着情報を表示しているのだが、

Google+は他のSNSと異なり、投稿を表示するウィジェットを公開していない。

農場の家 - Google+


ということで、

Google+の投稿を表示するモジュールを作成してみた。




SOY ShopにはPHPの記述を許可しつつ、

テンプレートのHTMLにコメントのみで実装できるパーツモジュールというものがあるので、

パーツモジュールを新規に作成して、

そこで発行されたタグをテンプレートに組み込む。

パーツモジュールを追加する[要PHP] | マニュアル | SOY Shop


パーツモジュールのエディタを開き、

PHPの記述を追加する。


http://rss2lj.net/g+/{Google+ID}でGoogle+のXMLを取得するサービスを利用する。

<rss2lj>Google+ to RSS


<php 
//ここにモジュールとして読み込むHTML・PHPを記述してください。
//使用可能な変数
//     $html	テンプレートに記述されたHTML
//     $htmlObj	ページオブジェクト($htmlObj->createAdd()が使えます)
$monthArray = array(
		"Jan" => "01",
		"Feb" => "02",
		"Mar" => "03",
		"Apr" => "04",
		"May" => "05",
		"Jun" => "06",
		"Jul" => "07",
		"Aug" => "08",
		"Sep" => "09",
		"Oct" => "10",
		"Nov" => "11",
		"Dec" => "12"
	);

$html = array();

$xmlData = simplexml_load_file("http://rss2lj.net/g+/{Google+ID}");

$counter = 0;
$html[] = "<dl>";
if(is_null($xmlData)){
	$html[] = "<dt>新着情報を取得できませんでした。</dt>";
}else{
	foreach ($xmlData->channel->item as $data) {
		if(!strlen($data->title[0])) continue;
		$array = explode(" ", (trim(substr($data->pubDate[0], strpos($data->pubDate[0] , ",") + 1))));
		$html[] = "<dt>" . $array[2] . "年" . $monthArray[$array[1]] . "月" . $array[0] . "日</dt>";
		$html[] = "<dd><a href=\"$data->link\" target=\"_blank\">" . $data->title[0] . "</a></dd>";
		if(++$counter === 5) break;
	}
}
$html[] = "</dl>";

echo implode("\n", $html);
?>

http://rss2lj.net/g+/{Google+ID}で出力したXMLをPHPの標準関数のsimplexml_load_file("xmlのパス")で読み込む。


あとは取得したXMLを解析して、

表示したい形に整形して表示する。


この処理で新着情報を取得することができた。