いつか Octopress をカスタマイズし、オリジナルのテーマを作るときのために、ファイル構成をヒモ解いた。
1. テーマの概要
テンプレートファイル
rake install
の時点で、.themes/classic
から source
にコピーされる。
設定ファイル
- _config.yml
ここで定義された変数がテンプレート中site.変数名
でアクセスされる。
構成の概要
source/
├── _layouts/ # トップページ、個別記事ページ、カテゴリアーカイブページのレイアウト
└── _includes/ # ページレイアウト用の部品
├── post/ # サイトのメタデータ、ソーシャルメディア、コメントシステム用部品
├── asides/ # テーマのサイドバー用部品
└── custom/ # カスタマイズ用部品(<head>、<header>、<navigation>、<aside>、<footer>)
2. テンプレートファイルの構成
ページ
└── _layouts/
├── default.html
├── page.html (layout: default)
├── post.html (layout: default, single: true)
└── category_index.html (layout: page, footer: false)
<head>
└── _includes/
├── head.html
├── custom/head.html
└── google_analytics.html
RSS
└── _includes/
└── custom/category_feed.xml
ヘッダー
└── _includes/
├── header.html
└── custom/header.html
ナビゲーション・メニュー
└── _includes/
├── navigation.html
└── custom/navigation.html
記事
└── _includes/
├── article.html # post.html、index.html から
├── post/author.html # post.html、page.html から
├── post/categories.html # post.html、page.html から
├── post/date.html # post.html、page.html、index.html から
├── post/disqus_thread.html # post.html、page.html から
└── post/sharing.html # post.html、page.html から
サイドバー・パーツ
└── _includes/
├── custom/asides/about.html
├── asides/recent_posts.html
├── asides/github.html
├── asides/delicious.html
├── asides/googleplus.html
├── asides/pinboard.html
└── asides/twitter.html
フッター
└── _includes/
├── footer.html
└── custom/footer.html
ソーシャル・パーツ
└── _includes/
├── after_footer.html
├── custom/after_footer.html # コメントのみ
├── disqus.html # after_footer.html から
├── facebook_like.html # after_footer.html から
├── google_plus_one.html # after_footer.html から
└── twitter_sharing.html # after_footer.html から
アーカイブ
└── _includes/
└── archive_post.html # category_index.html、blog/archives/index.html から
3. 生成されるファイルの構成
├── index.html (layout: default)
├── atom.xml
├── blog/
│ └── archives/
│ └── index.html
├── sitemap.xml
├── favicon.png
├── images/
│ ├── bird_32_gray.png
│ ├── bird_32_gray_fail.png
│ ├── code_bg.png
│ ├── dotted-border.png
│ ├── email.png
│ ├── line-tile.png
│ ├── noise.png
│ ├── rss.png
│ └── search.png
├── javascripts/
│ ├── ender.js
│ ├── github.js
│ ├── libs/
│ │ ├── ender.js
│ │ ├── jXHR.js
│ │ └── swfobject-dynamic.js
│ ├── modernizr-2.0.js
│ ├── octopress.js
│ ├── pinboard.js
│ └── twitter.js
└── stylesheets/
└── screen.css
4. Octopressの動作
–新規投稿–
コマンド
rake new_post['post title']
ファイル
└── _post/YYYY-MM-DD-post-title.markdown
YAMLブロック
---
layout: post
title: "post title"
date: YYYY-MM-DD hh:mm
comments: true
categories: [category1, ...]
---
–新規ページ–
コマンド
rake new_page[my-new-page]
rake new_page[my-new-page.html]
ファイル
├── my-new-page/index.markdown # rake new_page[my-new-page]
└── my-new-page/index.html # rake new_page[my-new-page.html]
YAMLブロック
---
layout: page
title:
date: YYYY-MM-DD hh:mm
comments: true
sharing: true
footer: true
---