今朝6時に、cronによって第1弾がアップできてました。
これでまぁ、運用としては問題ないんですが、
デザインのしやすさを考えると色々とナニだったので、
テンプレ、プログラム共に若干いじってみました。
本当は、プログラムをいじるんじゃなくて、
JavaScriptでいじった方がお手軽なんでしょうけれども…
まぁいいじゃないですか。
やりたかったんです(苦笑)
■ テンプレの変更
プログラム/テンプレ共に、CHEEBOWさんが公開されていたやつを使っています。
そのテンプレなんですが、
基本的に、<div>+クラスというCSS構造。
もちろん、何の問題もないんですが、
個人的に、リストの方がしっくり来るなぁ(役割が明確で)と思ったので、
そのように変更。
…これ、naoyaさんのテンプレと殆ど同じじゃん…
確かに…
まぁいいや。
あと、細かいことだけど、改行の処理が微妙で、
無駄に改行が入ってしまっていたので、
(これは、うちの改行設定のせい)
その辺も調整。
で、以下の通り。
<div class=”hatena_bookmark”>
<TMPL_LOOP name=”entry”><dl class=”entry”><dt><a href=”<TMPL_VAR name=”url”>” title=”<TMPL_VAR name=”title”>”><TMPL_VAR name=”title”></a></dt><dd><TMPL_VAR name=”summary”></dd></dl>
</TMPL_LOOP>
<div class=”powered”>Powered by <a href=”http://b.hatena.ne.jp/” title=”はてなブックマーク”>はてなブックマーク</a></div>
</div>
■ コメントがない場合のデザインに対処
上記リストで、CSSを適用させてやると、それなりに見えるようになるんですが、
<dd>(ブックマークのコメント)に、paddingを指定すると、
コメントが空だった場合にも、高さを持ってしまって、
背景色を付けると、それが目立ってしまいます。
試行錯誤すれば何か良い方法があるかもしれないんですけど、
プログラムいじった方が早いや、ってんで、カスタマイズ。
100行目辺りに、
空要素の<dd>を削除するような一文を追加。
(かなり乱暴だけど)
$text =~ s/<dd><\/dd>//g;
これで、要素そのものが無くなるので、問題なし。
豪腕(苦笑)
■ 出来ればタグも追加したい…
せっかくなので、タグも何らかの形で反映させたいんだけど…
取得できるのかしら。
実際にやってみました。
はてなのAtomの構造では、
タグは、dc:selectに格納されているらしい。
フィードを読み込んで、データを取得するときに、
これらも取り込んでやればいいわけです。
というわけで、85行目あたりに、
こんな感じの分を追加します。
my $tag;
my $dc = XML::Atom::Namespace->new(dc => ‘http://purl.org/dc/elements/1.1/’);
for my $subject ($entry->getlist($dc, ‘subject’)) {
$tag .= ‘[‘ . $subject . ‘]’;
}
MovableType側のエントリで、タグとして機能させるわけではないので、
(そんなことしたらタグが大量に付いてしまうので)
タグは文字列に格納されるだけで十分。
で、その下のTemplate格納部分で、
これを『tag』という名前で格納。
my @tmpl_entry = (
{
title => $entry->title,
url => $entry->link->href,
summary => $entry->summary,
tag => $tag
}
);
それから今度はテンプレートを変更し、
タグを挿入したい場所に、
<TMPL_VAR NAME=tag>を記述。
以上で、正常に出力されるはずです。
■ ついでに、エントリのタグも…
タグ無しだとなんか寂しいので、タグも付けようかと。
僕の場合、MT3.2のままで、タグはキーワードを利用しているので、
そこに放り込めばOK。
Net::MovableTypeの仕様の、POSTING_NEW_ENTRYの部分を読むと、
キーワード用に、
mt_keywordsというのが用意されているので、これを利用します。
プログラムの、最下部、$entry(MovableTypeに渡すデータ)を作成している部分に、
キーワードも追加。
my $entry = {形式は設定に依りますが、
title => $title,
description => $description,
mt_keywords => "hatena bookmark"
};
とりあえずこのサイトの場合は、上記のように書くことで、
エントリに、『hatena』『bookmark』というタグが付きます。
今のところ、こんなもんかなー
また何かあればいずれ。
■ 追記…(メモ)
『自分のサイトは除く』とか、
『あとで?タグが付いてるものはスルー』とか、
実装した方が見やすくなるかも…
何となく。