3

nanoc サイトのコンテンツでサーバー サイド インクルード (SSI) を使用したいと考えています。これにより、共有情報をまとめて複数のページに含めることができます。また、この共有情報のソース ファイルを 1 つだけ維持することもできます。

nanocにSSI(部分)を追加する方法を見つけました。ご存知のように nanoc には次のようなルート レベル フォルダーがあります:
/content/
/layouts/

私が見つけた指示 ( https://nanoc.ws/doc/items-and-layouts/#partials ) によると、「パーシャル」またはインクルード ファイルは /layouts/ フォルダー (/ の外) にある必要があるようです。コンテンツ/フォルダー)。

例: 次のコードは、インクルード ファイル /layouts/partials/shared/test.html を挿入するために使用されます。

<%= render 'partials/shared/test/' %>

つまり、コードは、インクルード ファイルがレイアウト フォルダーに配置されることを前提としています。SSI のデフォルト パスを /content/ に変更する方法を知っていますか? このようにして、コンテンツとレイアウトを混在させませんか?

前もって感謝します。

4

1 に答える 1

7

パーシャルはデフォルトで layouts/ ディレクトリにあり、ヘルパー メソッドを使用してレンダリング ヘルパーを介して使用されます。#render

ただし、含めるコンテンツ (「部分」) を content/ ディレクトリに配置することもできますが、その場合のアプローチは異なります。

たとえば、次のように作成しますcontent/partials/foo.txt

I am included!

Rules部分ファイルがルーティングまたはコンパイルされていないことを確認してください。そのため、これらのルールを編集して最初に実行するようにしてください。

compile '/partials/*' do
  write nil
end

これで、任意のアイテムまたはレイアウトにこのパーシャルを含めることができます:

<%= @items['/partials/foo.*'].compiled_content %>

これは、インクルーダー アイテム/レイアウトが ERB を使用してフィルター処理されていることを前提としていますが、Haml などを使用することもできます。

コンパイル ルールに何らかの処理をさせることができます。たとえば、Markdown フィルタリングを実行すると、フィルタからの HTML 出力が含まれます。

于 2013-12-04T15:01:59.160 に答える