京大生のためのブログ | blog.kyoto-u.com | 使い方 | 管理モード | kyoto-u.com |

May 24, 2004

ブログ関連コンテンツ検討

早速SQLを考えていくこととしよう。まずは「ブログ一覧」。これは簡単かと思ったが、意外と面倒くさかった。

select blog_name, blog_site_url , author_name 
from mt_blog B, mt_author A, mt_permission P 
where B.blog_id=P.permission_blog_id and P.permission_author_id=A.author_id 
and (author_id != 1 or (author_id=1 and blog_id=1));

MTの場合、一つのWebログに対して複数の投稿者を登録できるようにするため、「ユーザ一覧」「ブログ一覧」「ユーザとブログの権限関係」それぞれが別テーブルになっている。そこで一覧として取り出すには、まずこれら3つを結合してからでなくてはいけない。さらに、これは本来望ましくない状態だが、現在はユーザID1のユーザが全体の管理者を兼ねており、権限テーブルにおいて全てのブログに出現する。これを避けるための条件が最後の行である(単にauthor_id != 1では自身のブログが出力されなくなってしまうため、こういう形になっている)。

次に最新のエントリーN(ここでは15)件。

select entry_title, blog_name, date_format(entry_created_on, '%Y/%c/%e, %T') as created_on,
 concat(blog_archive_url ,lpad(entry_id, 6, '0'), '.', blog_file_extension) as entry_url 
from mt_blog B, mt_entry E 
where B.blog_id=E.entry_blog_id and entry_status=2 
order by entry_created_on desc limit 15;

エントリーへのURL生成部分がかなり苦しい。上記では日ごとのアーカイブ生成を前提としているわけだが、これは今後変わらない保証はない。「最新」エントリーなんだから、素直にトップのURL+アンカーとするべきか…要検討といったところか。

「コメントが付いたエントリー一覧」については、トラックバックとの絡みもあって色々とややこしい。だからそれはもう少し後で検討することにして、早々に実装作業に入ろうかな。他スタッフを急かす意味でも(笑。

投稿者 StaffT : May 24, 2004 06:52 PM
コメント
コメントする









名前、アドレスを登録しますか?