Bootstrap3のoffcanvasを使ってrefineryのレイアウトを設定する手順をまとめました。
(1)refineryのデフォルトのレイアウトファイルを確認
$ more app/views/layouts/application.html.erb
<!DOCTYPE html>
<%= render "/refinery/html_tag" %>
<% site_bar = render('/refinery/site_bar', :head => true) -%>
<head>
<%= render "/refinery/head" %>
</head>
<body id="<%= canonical_id @page %>">
<%= site_bar -%>
<div id="page_container">
<header id="header">
<%= render "/refinery/header" -%>
</header>
<section id="page">
<%= yield %>
</section>
<footer>
<%= render "/refinery/footer" -%>
</footer>
</div>
<%= render "/refinery/javascripts" %>
</body>
</html>
下記パーシャルを使用しています。
“/refinery/html_tag”
‘/refinery/site_bar’
“/refinery/head”
“/refinery/header”
“/refinery/footer”
“/refinery/javascripts”
(2)デフォルトのヘッダーをオーバーライド
デフォルトのヘッダーパーシャルをオーバーライドします。
“rake refinery:override”を使うとデフォルトのパーシャルをローカルにコピーできます。
$ rake refinery:override view=refinery/_header.html
(in /home/rails/rails_projects/blog)
create app/views/refinery/_header.html.erb
上記コマンドによって”app/views/refinery/”ディレクトリ内にデフォルトのヘッダーをコピーできました。
(3)Bootstrap3のoffcanvasを使ってナビゲーションヘッダーとサイドバーを作成
※Bootstrap3の導入手順はこちら。
1)Bootstrap3のサンプルoffcanvasを入手、配置
①ブートストラップの公式サイトから”source”版をダウンロード
“examples”フォルダ内の”offcanvas”フォルダ内から入手。
②offcanvas.jsをapp/assets/javascripts/にアップロード
③offcanvas.cssの中身をapp/assets/stylesheets/custom.css.scssにコピー
2)ヘッダーパーシャル作成
下から4行がデフォルトの設定で、それより上がブートストラップ3のサンプルからの流用です。
$ vi app/views/refinery/_header.html.erb
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div><!-- /.nav-collapse -->
</div><!-- /.container -->
</div><!-- /.navbar -->
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<p class="pull-right visible-xs">
<button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Toggle nav</button>
</p>
<h1 id='logo'>
<%= link_to Refinery::Core.site_name, refinery.root_path %>
</h1>
<%= Refinery::Pages::MenuPresenter.new(refinery_menu_pages, self).to_html %>
3)右サイドバーパーシャル作成
offcanvasは右サイドバーの2カラム構成になっているので、右サイドバー部のパーシャルを作成します。
$ vi app/views/refinery/_sidebar.html.erb
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation">
<div class="list-group">
<a href="#" class="list-group-item active">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
<a href="#" class="list-group-item">Link</a>
</div>
</div><!--/span-->
</div><!--/row-->
4)レイアウト全体(application.html.erb)
新たに作成したサイドバパーシャルを追加した上、下記のようにレイアウトを修正します。
$ vi app/views/layouts/application.html.erb
<!DOCTYPE html>
<%= render "/refinery/html_tag" %>
<% site_bar = render('/refinery/site_bar', :head => true) -%>
<head>
<%= render "/refinery/head" %>
</head>
<body id="<%= canonical_id @page %>">
<%= site_bar -%>
<%= render "/refinery/header" -%>
<section id="page">
<%= yield %>
</section>
</div><!--/header + main-->
<%= render "/refinery/sidebar" -%>
<footer>
<%= render "/refinery/footer" -%>
</footer>
</div>
<%= render "/refinery/javascripts" %>
</body>
</html>