3

我们想在我们的 nanoc 站点的内容中使用服务器端包含 (SSI)。这将允许我们将共享信息分块并将其包含在多个页面中。它还允许我们仅维护此共享信息的一个源文件。

我想出了如何在 nanoc 中添加 SSI(部分)。如您所知,在 nanoc 中,我们有以下根级文件夹,其中包括:
/content/
/layouts/

根据我找到的说明(https://nanoc.ws/doc/items-and-layouts/#partials),似乎“部分”或包含文件需要在 /layouts/ 文件夹中(在 /内容/文件夹)。

例如:以下代码用于插入包含文件/layouts/partials/shared/test.html

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

换句话说,代码假定包含文件将放置在 layouts 文件夹中。您知道将 SSI 的默认路径更改为 /content/ 的方法吗?这样我们就不会将内容与布局混合?

先感谢您。

4

1 回答 1

7

默认情况下,部分位于 layouts/ 目录中,并通过使用 helper 方法的渲染助手使用#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 回答