コンピュータ/ソフトウェア関連Tips

本文へ

BlogKit適用時のtDiaryで、サブタイトルのカテゴリを静的リンクにする

更新: 2012年10月22日(月) 12:37
公開: 2011年12月25日(日) 00:00

BlogKit適用時のtDiaryで、サブタイトル(h2要素部分)のカテゴリ([ ]で囲まれた部分)が、

<h2><span class="title">
[<a href="./?blogcategory=hogehoge">hogehoge</a>] 
ほにゃらら</span></h2>

となっており、wgetでサイトの静的コピーを取得すると、

index.html@blogcategory=hogehoge
index.html@blogcategory=foobar
index.html@blogcategory=example

といった感じのファイルが出来てしまう。

BlogKitを適用することで、記事自体へのリンクは、

./index.rb?date=20111224

ではなく、

./20111224.html

になるので、カテゴリも、同じようになると嬉しい。

以前のエントリーに書いたように、ソースコードをいじらなくても済む工夫がされているのを知らずにソースコードをいじってしまったので、今回は慎重に調べてみたが、ソースコードを修正するという判断をした。(この判断はまた間違ってるかもしれないが...。)

ファイルは、blog-category.rb

def categorized_title_of_day( date, title )
	r = 
	cats, stripped = title.scan( /^((?:\[[^\]]+\])+)\s*(.*)/ )[0]
	if cats then
		cats.scan( /\[([^\]]+)\]+/ ).flatten.each do |c|
			r << %Q|[<a href="#{h @index}?blogcategory=#{h c}">#{c}</a>]|
		end
	else
		stripped = title
	end
	r +  + stripped
end
r << %Q|[<a href="#{h @index}?blogcategory=#{h c}">#{c}</a>]|
r << %Q|[<a href="#{h @index}#{h c}.html">#{c}</a>]|
とした。

最初は、

r << %Q|[<a href="#{h @index}blogcategory/#{h c}.html">#{c}</a>]|
としたのだが、階層が1段階深くなってしまうことで、リソースの一部を相対パスで参照できなくなってしまったので、http://ホスト名/somecategory.html といった感じでアクセスできるようにした。

.htaccess の RewriteRule の記述も上記に対応できるように修正した。

数字8桁のカテゴリーを作らなければ記事と競合することは無さそうに思うが、どうだろうか?(浅知恵か?)

wgetでサイトを取得してみると、「20111224.html」などのファイルと同じ階層に「カテゴリー名.html」というファイルが出来ていて、あらかたはローカル環境でもページ遷移が出来た。(自分のヘマで一部リンク切れが生じてしまったが)。

2011.12.25追記

「href="./日本語カテゴリー名.html"」となってしまうので、URLエンコードしないとまずい。

2011.12.25 追記 その2

コールバック系プラグインの「add_subtitle_proc」を実行するとInternal Server Errorになる。他のいくつかのコールバック系プラグインは動作しているので、冒頭の「サブタイトル」という表現は間違いかも。

2011.12.26 追記

r << %Q|[<a href="#{h @index}#{h URI.encode(c)}.html">#{c}</a>]|
結果は上々...と思いきや、wgetで取得したファイル名は文字化けしてしまった。

ダウンロード対象は、「管理者用.html」なのだが、Windows 7(ファイルシステム: NTFS)では、

--2011-12-26 10:42:56--  http://hogehoge.example.com/%E7%AE%A1%E7%90%86%E8%80%85%E7%94%A8.html
Reusing existing connection to hogehoge.example.jp:80.
HTTP request sent, awaiting response... 200
Length: 3982 (3.9K) [text/html]
Saving to: `d:/tmp/site-2011-12-26/文字化け(一部判読可).html'

Ubuntu11.10(ファイルシステム: ext4)では、

--2011-12-26 10:46:17--  http://hogehoge.example.com/%E7%AE%A1%E7%90%86%E8%80%85%E7%94%A8.html
hogehoge.example.com:80 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 200 
長さ: 3982 (3.9K) [text/html]
`管\347%90%86\350%80%85\347%94\250.html' に保存中

100%[======================================>] 3,982       --.-K/s   時間 0.02s 

2011-12-26 10:46:18 (174 KB/s) - `管\347%90%86\350%80%85\347%94\250.html' へ保存完了 [3982/3982]

後者では、実際に保存されたファイル名は、「管?%90%86?%80%85?%94?.html」となっていた。

Windows上では、「%E7%AE%A1%E7%90%86%E8%80%85%E7%94%A8.html」という文字列のファイル名を作成可能なので、どうも、wgetが何かしているような感じを受ける。

wgetでページを取得したい日記については、カテゴリーは半角英数のみにして、とりあえず回避しよう。

(この記事は、http://d.hatena.ne.jp/Fumio_Kawamata/20111225/tDiary_Category_Static_Link に掲載していた記事です。)

Tags: tDiary

© Someone in the TERRA

編集