Middleman の内部では、各ページやリソースの情報を、Resource
オブジェクトで管理しています。
Resource
オブジェクトは下記のようにして取得することができます。
# 現在のページの Resource オブジェクトを取得
current_page
# 指定したパスが示すファイルに対する Resource オブジェクトを取得
sitemap.find_resource_by_path('/foo/bar/index.html')
# サイト全体のファイルに対する Resource オブジェクトをリストで取得
sitemap.resources
Resource
オブジェクトの属性を参照することで、該当リソースに関して下記のような情報を取得することができます。
属性 | 値 | 例 |
---|---|---|
url | ドメイン名を除く URL 部分 | /foo/bar/ |
path | ファイルのパス | foo/bar/index.html |
data | Frontmatter で指定したデータ | { title: ‘About this site’ } |
parent | 親ディレクトリの Resource | Resource オブジェクト |
children | 子ディレクトリの Resource | Resource オブジェクトのリスト |
siblings | 同じディレクトリの Resource | Resource オブジェクトのリスト |
下記の例では、current_page
オブジェクトを参照することで、現在のページの情報を取得しています。
ここでは、URL やパスの情報、Frontmatter で定義されている情報を表示しています。
# Resource オブジェクトの内容を出力
def dump_resource(res)
puts "url = #{res.url}"
puts "path = #{res.path}"
puts "data = #{res.data}"
end
# 現在のページの情報を出力
dump_resource(current_page)
上記を任意のページ内の Ruby コードとして実行することで、Middleman サーバを走らせているターミナル上に、下記のように表示されます。
url = /about.html
path = about.html
data = {"title"=>"このサイトについて"}
sitemap.resources
を参照することで、サイト内のすべてのリソース(ファイル)に対する Resource
オブジェクトをリストで取得することができます。
このリストには、画像ファイルなどに対する Resource
オブジェクトも含まれます。
下記の例では、ファイルの拡張子をチェックすることで、HTML ページに対する Resource
オブジェクトの情報だけを表示しています。
# Resource オブジェクトの内容を出力
def dump_resource(res)
puts '------------------'
puts "url = #{res.url}"
puts "path = #{res.path}"
puts "data = #{res.data}"
end
# サイト内のすべての HTML ページの Resource 情報を表示
def dump_all_resources
sitemap.resources.each do |r|
dump_resource(r) if r.path.end_with?('.html')
end
end
dump_all_resources