Pyblosxomで各エントリにエントリタイトルを表示させる方法

2010年2月14日

Pyblosxomでは、デフォルトの環境ではhead.html内で$title変数を使えないため、 エントリファイルで書いたタイトルを<head> ... </head>内の<title>タグ に反映することができません。でも、タイトルはGoogleなどの検索エンジンにとっても 重要なファクターなので、何とかしたいところです。

そこで、以下のようにプラグインファイルを作成すれば、head.htmlでも$titleを使えるように なります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from Pyblosxom import tools

def cb_head(args):
  request = args["request"]
  data = request.getData()
  entry = args['entry']
  if ( data.has_key("entry_list") and data["entry_list"] ):
    entry["title"] = data['entry_list'][0]['title']

  return args

上記cb_head(args)は、お約束で、head.htmlがPyblosxom.cgiに読み込まれるときに コールされるエントリ関数(コールバック関数)だと思ってください。 その時点で、上記のようにentry["title"]にエントリタイトルの値を代入しておけばよい のです。このようにすることで、head.htmlファイル中でも$title変数が使用できるようになります。