我们希望在我们的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 /的方法?这样我们就不会将内容与布局混合在一起了?
提前谢谢。
答案 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输出。