【问题标题】:Must include files in nanoc always be in the layouts folder?nanoc 中的文件必须始终位于 layouts 文件夹中吗?
【发布时间】:2013-12-04 05:41:28
【问题描述】:

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

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

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

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

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

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

提前谢谢你。

【问题讨论】:

    标签: nanoc


    【解决方案1】:

    部分默认位于 layouts/ 目录中,并通过 rendering 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 输出将被包含在内。

    【讨论】:

    • 谢谢。这行得通。站点团队在规则文件中已经有一个编译语句和路由语句,它们根据文件类型使用某些过滤器。我添加了另一个编译和路由语句并且有效。
    • 哦,这是 nanoc 的作者的官方。
    • 我的部分内容不适用于这种方法 - 请参阅论坛:groups.google.com/forum/#!topic/nanoc/3m5XCREbS-M
    • 更新:将文件内容逐行移动到新文件,每次测试,已修复。一定是坏文件。
    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    相关资源
    最近更新 更多