必须包含nanoc中的文件总是在layouts文件夹中?

时间:2013-12-04 05:41:29

标签: nanoc

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

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

根据我发现的指令(http://nanoc.ws/docs/basics/#as-partials),似乎“部分”或包含文件需要位于/ layouts /文件夹中(在/ content /文件夹之外)。

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

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

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

提前谢谢。

1 个答案:

答案 0 :(得分:6)

默认情况下,部分位于layouts /目录中,并使用#render辅助方法通过rendering helper使用。

但是,您也可以在内容/目录中添加内容(“部分”),尽管方法不同。

例如,创建content/partials/foo.txt

I am included!

确保不会路由或编译部分文件,因此请编辑Rules并确保首先执行这些规则:

compile '/partials/*' do
  write nil
end

现在,在任何项目或布局中,您都可以包含此部分:

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

这假设使用ERB过滤了包含项/布局,但您也可以使用Haml左右。

您可以让编译规则进行一些处理,例如执行Markdown过滤,然后将包含过滤器的HTML输出。