sfSiteMapPlugin を使ってみる

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

アプリケーションモジュールの中から有効なアクションを抽出して、それらをリンク付きの一覧で書き出してくれるプラグイン。
Webインターフェイスとしてみるサイトマップとは違うものと考えた方がいい?


インストール

symfony plugin-install http://plugins.symfony-project.com/sfSiteMapPlugin
カンタンインストール。
[sfSiteMapPlugin-0.1.0.tgz - 2007/11/6 現在]


ソースの修正

コチラの記事によれば、v0.1.0 を利用する場合ソースを修正する必要があるようです。

100年続く会社を作るアイシーズのエンジニアブログ

[/plugins/sfSiteMapPlugin/data/tasks/sfPakeSiteMapPlugin.php]
//1行目あたり
<?
↓
<?php

//26行目あたり
$sf_skeleton_dir = sfConfig::get('sf_plugins_dir').'/sfSiteMapPlugin-0.1.0/sitemap_module_skelton';
↓
$sf_skeleton_dir = sfConfig::get('sf_plugins_dir').'/sfSiteMapPlugin/sitemap_module_skelton';


リンク一覧の書出し

'sfSiteMap'という空のモジュールを作成。
symfony init-module frontend sfSiteMap
※sitemapコマンドだけだと'actions'と'templates'のフォルダしか生成されないので、事前に空のモジュール生成しとく方が好き。

リンク一覧を書き出す。
symfony sitemap frontend sfSiteMap

これで、モジュール/アクションのリンク一覧が'sfSiteMap'モジュールの'indexSuccess.php'に書き出される。


カスタマイズしてみる

Wikiにある通り、書出し時の展開変数ぐらいは追加できる。
[/plugins/sfSiteMapPlugin/data/tasks/sfPakeSiteMapPlugin.php]
//123行目あたり
$index_content = array(
  'LINKS' => $template_content // lists of links (link_to) previously build ...
);
↓
$index_content = array(
  'LINKS' => $template_content, // lists of links (link_to) previously build ...
  'LAST_MODIFY'=>date('Y-m-d')
);

[/plugins/sfSiteMapPlugin/sitemap_module_skelton/module/templates/indexSuccess.php]
##LINKS##
<br />
You can customize the indexSucess.php in the module skelton dir

↓

##LINKS##
<br />
最終更新日: ##LAST_MODIFY##
こんな感じで。。。

書出しタグとかを本格的にカスタマイズするには'sfPakeSiteMapPlugin.php'内の'Scanning of module dir to discover actions'って書いてあるブロックあたりをゴリゴリ修正していくことになると思う。
でも、コレをそこそこ汎用的なものにしようとした場合、冗長化してグダグダな感じになりそうなので、ボクはやらない。

とりあえず、ゴテっとリストタグだけ追加したサンプルだけにしときます。


まとめ

プロジェクト全体のリンクをこれで定期的に生成しておけば、チームや個人がプロジェクト全体を把握できて便利かもしれません。
ただ、Webページにおいてのサイトマップを生成するもの、とは考えない方がいいかも。もちろん、吐き出されたソースをWebのサイトマップに応用するのは十分に可能ですが、ある程度編集する必要があります。
今後はわかりませんが、現状はあくまで、リンク抽出ツールだと思います。


--
まだまだあるな、ぷらぐいん。
Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)