sfSitemap2Plugin を使ってみる

sfSitemap2Plugin ってどんなプラグイン?

データモデルとかを元に、Googleサイトマップ等で利用出来るサイトマップXMLを生成してくれるプラグインだと思う。


インストール

symfony plugin-install http://plugins.symfony-project.com/sfSitemap2Plugin
・・・失敗しました。(package.xmlの記述が正しくないとかなんとか・・・)
[sfSitemap2Plugin-0.0.2.tgz - 2007/11/7 現在]

まぁ、そのうち修正されるだろうということで、深く考えず、手動で 'plugins' フォルダに配置しました。
('svn:externals' 属性を利用して sfSitemap2Plugin のリポジトリをそのまま配置しました)


準備

Wikiを見ると、なんだかサンプルデータが欲しいようなので、カンタンなダミー記事を100件ほど用意しました。
記事データは、最低限、'タイトル','URL用のタイトル','更新日時' あたりを用意します。
んでこんな感じになりました。


urlset(XML)を吐き出す

準備したサンプル記事データを元に urlset を出力します。
とりあえずWikiのサンプルに修正を加えて作成しました。

[actions.class.php]
public function executeOutputXML()
{
  $sitemap = new sfDefaultSitemap();
  
  $priority = '0.3';
  $freq = 'weekly';
  
  $c = new Criteria();
  $c->addAscendingOrderByColumn(Sample2Peer::ID);
  $obj = Sample2Peer::doSelect($c);

  foreach ($obj as $post)
  {
    $item = new sfSitemapItem();
    $item->setLoc('@Sitemap2_show?stripped_title='.$post->getStrippedTitle());
    $item->setLastMod($post->getCreatedAt('U'));
    $item->setPriority($priority);
    $item->setChangeFreq($freq);

    $sitemap->addItem($item);
  }
  
  $this->sitemap = $sitemap;
}

[outputXMLSuccess.php]
<?php decorate_with(false) ?>
<?php echo $sf_data->getRaw('sitemap')->asXml() ?>

コレでなんとか出力することが出来ました。
出力表示はコチラ


まとめ

今現在は、定期的なバッチ処理で urlset を静的な xml に書き出してんだけど、動的に次々コンテンツが増えてくサービスの場合は、こういうのが必須かもね。
そんなサービスを始める機会があれば利用させていただきます。
でも、開発が始まったばっかりのプラグインっぽいので、メジャーバージョンが出るころには使い方が激変してそうでグッタリ。


--
プラグイン調べる速さより、新しく増える方が早かったら・・・
・・・考えないでおく。
Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)