朝顔日記

rNote に tag を装備したい

2006-03-07

rNote にはカテゴリー分けの機能はあるのですが、ディレクトリ分け = カテゴリー分けという構造になっているために、ひとつの記事が複数のカテゴリーにまたがって存在するということが出来ません。しかし、やってみたい。←わがまま

ということで、なんとかするべくアレコレ試しています。いずれやってみたいと思っていたので、このサイトの場合、rNote の記事の元になる xml ファイルには、カテゴリー分けのための要素を書いてあります。Class という要素を作って、以下のような感じで書いてあります。


<Class>web site</Class>

これは、web と site というカテゴリーに属しているという意味です。空白区切りですね。本当は空白区切りとかではなくリストにした方が何かとよさげなんですが、rNote の実装の都合上、このようにしています。(もしかしたら違うかも)

この Class 要素を、rNote のサイト管理で使う、file.cache というファイルに反映するように rNote 本体(rnote.php)をいじって改造しました。これにより、file.cache の中身は、1行ごとに、以下の構造をもつようにしました。ここでは、\t はタブをあらわします。

エントリー xml の場所\tタイムスタンプ\t記事のタイトル\tツッコミ&トラックバック受付日数\tタグ

file.cache をこのように出力するように改造してしまえば、あとは何とかなりそうです。ということで、試しに作ってみたのが以下のテストページと php スクリプトですです。

しかし、これをどうやって rNote に組み込もう。記事ごとに、tag を埋め込むやり方が思いつかないんですよねぇ。tag がひとつしかない場合はいいんすが、複数あるときにどうやって分離したらいいかってあたりで詰まっています。困った。

と、今回は rNote を使っていない人とか、使ってる人にもよくわからない記事になってしまいました。:p) スマソ。

rNote の file.cache に tag を埋め込む に続く

「rNote に tag を装備したい」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事へのツッコミ

1: 鯖缶 (2006-03-07T20:21:09+09:00)
記事にtagを埋め込むのはskinで実現したら良いんじゃないかと思います。
Classという要素がxmlファイルにあったら、skinにtagを表示すると。
あとは表示したtagのアンカーをクリックしたら同一tagでソートした表示をする等。
tagは検索なんかで有用になってくると思いますから、期待しています :-)
2: のり (2006-03-08T00:21:52+09:00)
例えば、<a href="labelview.php?label=<%=$Class%>"><%=$Class%></a> みたいなことをするとしますよね。
Class の中身が例えば、ua だけなら、
<a href="lavelview.php?label=ua">ua</a>
なんてのが展開されて期待通りなんですが、<Class>ua tool</Class> となっていると、
<a href="lavelview.php?label=ua tool">ua tool</a>
になってしまい、ちと困るわけです。このままでも検索は出来るのでしょうが、順番もこの通りのアンド検索になってしまいます。
ですからこれは、
<a href="labelview.php?label=ua">ua</a>

<a href="labelview.php?label=tool">tool</a>
といった具合にふたつに分けたいわけです。なんかうまい方法ないですかねぇ
3: Kaz@sleeper (2006-03-08T04:14:03+09:00)
銀杏の木さんちのTechnoratiのTags対応スキンを応用すればどうでしょう
http://ichounoki.info/rnote/rnote.php?u=software/20050620_0059.htm
カンマ区切りですけど
4: 鯖缶 (2006-03-08T07:54:03+09:00)
クラス要素が複数ある場合は、skin内でstrtok関数でも使って、別々にアンカーを作成したら良いかと思います。
#尤もstrtok関数で区切り記号に、スペースが使えるかが問題ですけど。
5: 鯖缶 (2006-03-08T07:55:35+09:00)
連続で書き込みすみません。。。
クラス要素が複数ある場合 X
クラス要素の中身が複数ある場合 ○
に訂正させてください。
6: のり (2006-03-08T12:40:01+09:00)
ああ、なるほど skin にスクリプトを埋めこめばいいんですね。
銀杏の木さんところのやり方そのままでうまくいきました。こんな感じ。
<if def_tag="Class">
<dt>tags</dt>
<?php
$string = '<%=$Class%>';
$tkn = strtok($string," ");
while($tkn) {
print "<dd><a href=\"labelview.php?label=".$tkn."\">".$tkn."</a></dd>";
$tkn = strtok(" ");
}
?>
</if>
あとは現状、file.cache の日付情報でソートしていますが、xml の方に書いてある日付情報でソートするようにとか、アレコレすれば一応所期の目的は達成されそうです。
みなさん、情報ありがとうございました。
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2006/03/diary_060307a.html