global_nav

 サイトの全ページで使われるグローバルナビゲーションを設定します。

使い方

 プラグインを有効にすると、管理画面のサイドバーに「グローバルナビ」というメニューができます。

 グローバルナビゲーションの設定画面ではヘッダーとフッターのそれぞれにグローバルナビゲーションを表示するかどうか、するとしたら、それぞれどのページを使うか、を設定します。このサイトのように、同じページ(GlobalNavigation)を使うこともできます。

 次に、指定したページを作ると、そのページが自動的にヘッダーやフッターで読み込まれて、ナビゲーションとなります。

 実際には、ナビゲーションに限らず、ヘッダーやフッターに好きなページの内容を差し込むプラグインですね。

ソース

misc/plugin/global_nav.rb

add_body_enter_proc do
  if @conf['global_nav.header_enabled']
    cache = @db.load_cache(@conf['global_nav.header_used_page'])
    unless cache
      page = @conf['global_nav.header_used_page']
      page = 'Header' if page.empty?
      cache = @conf.parser.new(@conf).parse(@db.load(page) || '')
      @db.save_cache(@conf['global_nav.header_used_page'], cache)
    end
    @conf.formatter.new(cache, @db, self, @conf).to_s
  end
end

add_body_leave_proc do
  if @conf['global_nav.footer_enabled']
    cache = @db.load_cache(@conf['global_nav.footer_used_page'])
    unless cache
      page = @conf['global_nav.footer_used_page']
      page = 'Footer' if page.empty?
      cache = @conf.parser.new(@conf).parse(@db.load(page) || '')
      @db.save_cache(@conf['global_nav.footer_used_page'], cache)
    end
    @conf.formatter.new(cache, @db, self, @conf).to_s
  end
end

add_conf_proc('global_nav', global_nav_label) do
  if @mode == 'saveconf'
    @conf['global_nav.header_enabled'] = (@cgi.params['global_nav.header_enabled'][0] == 'true')
    @conf['global_nav.footer_enabled'] = (@cgi.params['global_nav.footer_enabled'][0] == 'true')
    @conf['global_nav.header_used_page'] = @cgi.params['global_nav.header_used_page'][0]
    @conf['global_nav.footer_used_page'] = @cgi.params['global_nav.footer_used_page'][0]
  end


  <<EOH
<p>#{global_nav_desc}</p>
<h3>#{global_nav_header_label}</h3>
<p>#{global_nav_header_enabled_desc}</p>
<p>
  <select name="global_nav.header_enabled">
    <option value="true"#{@conf['global_nav.header_enabled'] ? ' selected' : ''}>#{global_nav_enabled_true_label}</option>
    <option value="false"#{@conf['global_nav.header_enabled'] ? '' : ' selected'}>#{global_nav_enabled_false_label}</option>
  </select>
</p>
<p>#{global_nav_used_page_as_header_desc}</p>
<p><input name="global_nav.header_used_page" value="#{@conf['global_nav.header_used_page']}"></p>

<h3>#{global_nav_footer_label}</h3>
<p>#{global_nav_footer_enabled_desc}</p>
<p>
  <select name="global_nav.footer_enabled">
    <option value="true"#{@conf['global_nav.footer_enabled'] ? ' selected' : ''}>#{global_nav_enabled_true_label}</option>
    <option value="false"#{@conf['global_nav.footer_enabled'] ? '' : ' selected'}>#{global_nav_enabled_false_label}</option>
  </select>
</p>
<p>#{global_nav_used_page_as_footer_desc}</p>
<p><input name="global_nav.footer_used_page" value="#{@conf['global_nav.footer_used_page']}"></p>
EOH
end

misc/plugin/ja/global_nav.rb

# encoding: euc-jp

def global_nav_label; 'グローバルナビ'; end
def global_nav_header_label; 'ヘッダー'; end
def global_nav_footer_label; 'フッター'; end
def global_nav_desc; 'グローバルナビゲーションを設定します。'; end
def global_nav_header_enabled_desc; 'ヘッダーを有効にするかどうかを指定します。'; end
def global_nav_footer_enabled_desc; 'フッターを有効にするかどうかを指定します。'; end
def global_nav_enabled_true_label; '有効にする'; end
def global_nav_enabled_false_label; '無効にする'; end
def global_nav_used_page_as_header_desc; '使用するページ名を指定します。空欄の場合は「Header」ページが使われます。'; end
def global_nav_used_page_as_footer_desc; '使用するページ名を指定します。空欄の場合は「Footer」ページが使われます。'; end

misc/plugin/en/global_nav.rb

def global_nav_label; 'Global Nav'; end
def global_nav_desc; 'Set up global navigation.'; end
def global_nav_header_label; 'Header'; end
def global_nav_footer_label; 'Footer'; end
def global_nav_header_enabled_desc; 'Set whether or not you enable the header.'; end
def global_nav_footer_enabled_desc; 'Set whether or not you enable the footer.'; end
def global_nav_enabled_true_label; 'Enable'; end
def global_nav_enabled_false_label; 'Disable'; end
def global_nav_used_page_as_header_desc; 'Set the name of page used as header. "Header" is used if blank.'; end
def global_nav_used_page_as_footer_desc; 'Set the name of page used as footer. "Footer" is used if blank.'; end