« Six Apart ユーザーギャザリングに行くよ! | メイン | CHEEBOWのしおり(2006-02-28) »

2006年2月28日

ALPSLABで遊んでみた

最近ちょっと地図づいている僕なのですが、話題のALPSLAB Top Pageで遊んでみました。




ALPSLAB clip!は、あなたのWebサイトやブログに、今までになく簡単、便利に、地図を貼り付けることができるサービスです。


これは、MT用のプラグインが用意されているので、それをインストールして「ALPSLAB clip!」にある解説どおりにタグを書いてあげればオッケー。
例えば、ヒビノアワ: Six Apart ユーザーギャザリングに行くよ! ってエントリに地図を貼ってみたのだけど、これなんて、

[map:東京都豊島区西池袋2-31-3]

って1行書くだけ!
楽ちん。住所書くだけってのがいいよねー。

でも、ちょっとプラグインの動作で、謎な部分が。
このプラグインはグローバルフィルターとして動作するんだけど、map="0"でもmap="1"でも動作が変わらない。
僕のイメージとしては、map="0"で地図非表示、map="1"で地図表示なんじゃないかなーと思うのです。
というわけで、ちとハック。

MT::Template::Context->add_global_filter(map => 
    sub {
        my ($s, $a, $c) = @_;
        $s =~ s/\[map:([^\[\]]+)\]/&map_tag($1,0,$c)/ge;
        $s =~ s/\[map_tb:([^\[\]]+)\]/&map_tag($1,$a,$c)/ge;
        $s;
    }
);

この部分で、map="x"のxの値は、$aに入ってくるんですけど、この値が結局トラックバックするかどうかのフラグになっちゃってるのが問題なわけです。
mapかmap_tbかでトラックバックの有無は切り替えられるわけだから、ここはこのコマンドを見て決め打ちすれば良し。
というわけで、map="0"の時は、マップ表記を削除するってことにします。

MT::Template::Context->add_global_filter(map => 
    sub {
        my ($s, $a, $c) = @_;
        if ($a == 1) {
            $s =~ s/\[map:([^\[\]]+)\]/&map_tag($1,0,$c)/ge;
            $s =~ s/\[map_tb:([^\[\]]+)\]/&map_tag($1,1,$c)/ge;
        } else {
            $s =~ s/\[map:[^\[\]]+\]//g;
            $s =~ s/\[map_tb:[^\[\]]+\]//g;
        }
        $s;
    }
);

と書き換え。
これで、思ったとおりの動作になりました。


投稿者 CHEEBOW : 2006年2月28日 13:10 このエントリーを含むはてなブックマーク

[ Development, Movable Type ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG