SideBoxにSentTrackbacksモジュールを追加
例のMLのお題。
SideBoxにモジュールとしてRecent Trackbacksを追加する
http://mail.webcore.co.jp/mailman/private/coreblog/2005-September/001163.html
結構真剣にやってみました。
で、私の答えは間違ってるとは思うけど、答えあわせがちょっと楽しみです。
atsさんの口ぶりだとdtmlだけで実装できるようだ。
私は"sending_trackback_list"関数はEntryの中にあるのでその上位からは呼び出せない、と思っている。
<dtml-with entry_body>
:
とかすると呼び出せはするけどentryに必要な各種プロパティを全部用意していかなければならないので無駄が多いと思う。
思いついたのは二つ。
一つはPythonメソッドで各エントリごとのsendingtrackbacks(IOBTreeでの実装)をとりだしてリストに集める方法。これは動的になるのでサーバに負荷がかかりそう。
もう一つはCOREBlog.pyに"rev_comment_items"とか"rev_entry_items"というSideBoxのRecent Entryモジュールで呼び出している関数があるのでそれを真似て"rev_sendingtrackbacks_items"という関数を作ってやる。今回は勉強を兼ねてこちらで作ってみた。
こっちの欠点は過去の送ったtrackbackが反映されないこと。
方針を決めてはじめるとIOBTree、IISetの使い方がよくわからない。手間取りました。 結局よくわからずじまいでCOREBlog流儀に従わず単純なリストに放り込むことにしてしまった。 また、__init__内にグローバルなリストを作っていたつもりだったのだけどこれもどうも、COREBlogサイトを作成したときだけに呼び出されるようで(ちがうかな?)テストなリストをたくさん作ってしまい放置状態。 この辺、Zopeがどうやってデータを保持しているのかよく解かっていないからどうにもならないのね、と反省。 デヴキャン行きたいなー。 でも、だいぶCOREBlogのなかに潜っていました(理解できたかはまた別問題)。