ぽっぺん日記@karashi.org
2008-01-06(Sun) [長年日記]
_ tDiary用AutoPagerize化pluginを書き直した
こないだ書いたpluginがいまいちなので、全面的に書き直した。
今回はパッチにしてみようかとも考えたけれど、未来方向が<link rel="prev">、過去方向が<link rel="next">と指定してあって、トリッキーなのでpluginにしておいた。 まぁ、tDiaryが正式にAutoPagerizeに対応すれば用がなくなる代物だけど。
改善点は下記の通り。
- navi_itemにrel属性を追加するのではなく、ヘッダに<link>タグに追加するようにした。
- すべての日記で過去方向に読み込まれるようにした。
- 上書きするメソッドをindex_page_tagだけにした。
このpluginを使うためには、pluginを有効にした後、、[編集] - [設定] - [ヘッダ・フッタ]から編集画面に入って、
- ヘッダの最初に<div class="autopagerize_page_element">(tDiaryでAutoPagerizeを使う - capsctrldays (2007-09-01)の通り、<div class="main">を、<div class="main autopagerize_page_element">に変更することをオススメ)。
- フッタのページ区切りとなる場所に、<div class="autopagerize_insert_before"> </div>
を入れてください。
ダウンロードはこちらから。→autopagerize.rb
コードも貼っておきます。ツッコミ歓迎。
#
# autopagerize.rb - tDiary plugin
#
# add <link rel="prev"> and <link rel="next"> tags for AutoPagerize
#
# Copyright (C) 2008 MATSUI Shinsuke <poppen@karashi.org>
# You can redistribute it and/or modify it under GPL2.
#
#
# HTML header
#
def index_page_tag
result = ''
if @index_page and @index_page.size > 0 then
result << %Q[<link rel="index" title="#{h navi_index}" href="#{h @index_page}">\n\t]
end
if @prev_day then
case @mode
when 'day'
result << %Q[<link rel="next" title="#{navi_prev_diary( Time::local(*@prev_day.scan(/^(\d{4})(\d\d)(\d\d)$/)[0]) )}" href="#{h @index}#{anchor @prev_day}">\n\t]
when 'nyear'
result << %Q[<link rel="next" title="#{navi_prev_nyear( Time::local(*@prev_day.scan(/^(\d{4})(\d\d)(\d\d)$/)[0]) )}" href="#{h @index}#{anchor @prev_day[4,4]}">\n\t]
end
end
if @next_day then
case @mode
when 'day'
result << %Q[<link rel="prev" title="#{navi_next_diary( Time::local(*@next_day.scan(/^(\d{4})(\d\d)(\d\d)$/)[0]) )}" href="#{h @index}#{anchor @next_day}">\n\t]
when 'nyear'
result << %Q[<link rel="prev" title="#{h navi_next_nyear( Time::local(*@next_day.scan(/^(\d{4})(\d\d)(\d\d)$/)[0]) )}" href="#{h @index}#{anchor @next_day[4,4]}">\n\t]
end
end
if @mode == 'month' && !(months = _create_month).empty? then
prev_month = months['prev_month']
next_month = months['next_month']
if prev_month then
result << %Q[<link rel="next" title="#{h navi_prev_month}" href="#{h @index}#{anchor( prev_month )}">\n\t]
end
if next_month then
result << %Q[<link rel="prev" title="#{h navi_next_month}" href="#{h @index}#{anchor( next_month )}">\n\t]
end
end
if @mode == 'latest' then
if @conf['ndays.prev'] then
result << %Q[<link rel="next" title="#{h navi_prev_ndays}" href="#{h @index}#{anchor( @conf['ndays.prev'] + '-' + @conf.latest_limit.to_s )}">\n\t]
end
if @conf['ndays.next'] then
result << %Q[<link rel="prev" title="#{h navi_next_ndays}" href="#{h @index}#{anchor( @conf['ndays.next'] + '-' + @conf.latest_limit.to_s )}">\n\t]
end
end
result << %Q[<link rel="start" title="#{navi_latest}" href="#{h @index}">\n\t]
result.chop.chop
end
def _create_month
result = {}
ym = []
@years.keys.each do |y|
ym += @years[y].collect {|m| y + m}
end
ym.sort!
now = @date.strftime( '%Y%m' )
return '' unless ym.index( now )
result['prev_month'] = ym.index( now ) == 0 ? nil : ym[ym.index( now )-1]
result['next_month'] = ym[ym.index( now )+1]
result
end
# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:
# vi: ts=3 sw=3
2007/1/8追記
もうちょっとシンプルなpluginを書きました。
[ツッコミを入れる]
[]
本日のPingbacks(全0件)




まで頂ければ幸いです。