メインコンテンツにスキップ
  • Middleman ホームページ
  • サポート
  • コミュニティ
  • ドキュメント

基礎

  • インストール
  • v4 へのアップグレード
  • 新しいサイトの作成
  • ディレクトリ構造
  • 開発サイクル
  • ビルド & デプロイ
  • Frontmatter
  • テンプレート言語
  • ヘルパーメソッド
  • レイアウト
  • パーシャル
  • リダイレクト
  • ブログ機能

高度な機能

  • 設定
  • プロジェクトテンプレート
  • 動的ページ
  • データファイル
  • 多言語化 (i18n)
  • アセットパイプライン
  • 外部パイプライン
  • Rack ミドルウェア
  • サイトマップ
  • きれいな URL (ディレクトリインデックス)
  • キャッシュ機能の改善
  • ファイルサイズ最適化
  • カスタム拡張
  • テンプレートエンジンオプション

サイトマップ

Middleman にはテンプレートからアクセスできる, サイト内のすべてのページとリソース, 相互にどのように関係するか情報を持つ サイトマップがあります。これはナビゲーションの作成, 検索ページや フィードの作成に使うことができます。


サイトマップ はページごとの HTML, CSS, JavaScript, 画像など すべての情報のリポジトリです。:proxy を使って作る 動的ページ も含みます。

サイトマップを確認する

Middleman がどのようにサイトを見ているか正確に理解するために, プレビューサーバを 起動しブラウザで http://localhost:4567/__middleman/sitemap/ を開きます。 完全なサイトマップやソースへのパス, ビルド先のパス, URL など各リソースを 確認できます。"path" には特に注意してください: config.rb の page, ignore や proxy, link_to や url_for から ファイルを参照するために使われます。

コードからサイトマップにアクセス

テンプレートの中では sitemap がサイトマップオブジェクトです。 サイトマップオブジェクトから, ページごとに resources メソッドを使うか find_resource_by_path を使って個別のリソースを取得できます。 current_resource を使ってカレントページのページオブジェクトを取得することも できます。サイトマップからページリストを取得できれば, 個々のページオブジェクトを 使って, 各種プロパティをフィルタリングできます。

サイトマップのリソース

サイトマップの各リソースは Resource オブジェクトです。Resource オブジェクトは あらゆる種類の情報を伝えます。frontmatter データ, ファイル拡張子, ソースと 出力先のパス, リンク URL などにアクセスできます。Resource オブジェクトの プロパティは Middleman の内部レンダリングにとても便利です。例えば, すべての .html ファイルを見つけるためにファイル拡張子でページ フィルタリングすることが考えられます。

それぞれのページはサイト階層の中で関連する他のページを探すこともできます。 parent, siblings や children メソッドはナビゲーションメニューや パンくずリストを作る場合に特に便利です。

config.rb の中でサイトマップを使う

サイトマップの情報を使って config.rb から新しい 動的ページ を 作ることができます。ただし, サイトマップは config.rb が読み込まれた 後 まで 用意されないので少し注意が必要です。これに対応するために, アプリケーションの ready イベントにコールバックを登録する必要があります。例として, ページの frontmatter に "category" が追加されているものとして, カテゴリーごとに 動的にカテゴリーページを作ります。 config.rb に次の内容を追加:

ready do
  sitemap.resources.group_by {|p| p.data["category"] }.each do |category, pages|
    proxy "/categories/#{category}.html", "category.html",
      :locals => { :category => category, :pages => pages }
  end
end

そして, 取得したカテゴリごとにページをビルドするために, category と pages 変数を使う category.html.erb を作ります。

© 2011–2022 Thomas Reynolds

コントリビュータ の助けを借りて コアチーム によって メンテナンスされています。

  • Twitter
  • GitHub