COREBlogと組み合わせて使うRefererプロダクトに,いくつかMethodを足して,かつ管理画面上に表示する編集用のDTMLを書いて,Refererの確認と削除ができるようにした。とりあえずはこれで最低限必要な機能は備わった。
ちなみに,Refererを記録するには,ProductをCOREBlogのcontentsに追加して,かつindex_htmlなどに以下のようなロジックを埋め込みます。
<dtml-try>
<dtml-call "referer_plugin.addReferer(id,REQUEST)">
<dtml-except>
</dtml-try>
このようにエントリのIDとREQUESTを渡してやると,必要であればRefererの情報を追加してくれます。referer_pluginというのはProductのIDですね。
で,Refererを表示するためには
<dtml-comment>### Show Referer ###</dtml-comment>
<dtml-in "referer_plugin.getReferer(id)">
<dtml-if sequence-start>
<a name="referer"></a>
<div class="comments-head"><a name="comments"></a>Referer</div>
<div class="posted">
</dtml-if>
<a href="<dtml-var referer_url>"><dtml-var "_['sequence-index']+1">...[<dtml-var referer_count>]</a>
<dtml-if sequence-end></div></dtml-if>
</dtml-in>
みたいにします。なんかキタナイな。ちょっと書き直そう。
一日使ってみて,特に余計な負荷がかかっている様子もなく,Data.fsが際限なく膨らんでゆく風でもないので,もうちょっと運用してProductとして公開します。