【问题标题】:How can I conditionally add a Handlebars partial to an Assemble layout?如何有条件地将 Handlebars 添加到 Assemble 布局中?
【发布时间】:2014-06-05 16:00:51
【问题描述】:

我正在使用AssembleHandlebars 来生成一个静态站点。我有几个页面使用相同的总体布局,但有几个例外是需要添加主 {{> body}} 之外的内容。

鉴于此通用页面结构:

<html>
<body>

<section>{{> body}}</section>

<!-- global scripts -->

</body>
</html>

以及index.html 需要在&lt;!-- global scripts --&gt;&lt;/body&gt; 之间添加标记,最好的方法是什么?

如果我像这样在我的 Gruntfile 中包含一个部分:

index: {
    options: {
        partials: ['source/partials/home/**/*.hbs'],
    },
    files: [{
        expand: true,
        cwd: 'source/pages/',
        src: '**/index.hbs',
        dest: 'output/'
    }],
},

此部分可用于assemble 任务中的所有其他后续项目,我当然不想要。如果这只是一个变量,我可以在 YML 前端或类似的东西中做到这一点,但它是 HTML 和内联 JS 的块,因此比我想放在前端的要多一点。我也无法通过 JS 加载此标记,因为它需要阻塞。

【问题讨论】:

    标签: handlebars.js assemble


    【解决方案1】:

    您可以在需要包含部分的页面的前端添加一个变量,如下所示:

    specialHTML: true
    

    然后添加你的代码

    {{#if specialHTML}}
        {{> mypartial }}
    {{/specialHTML}}
    

    所以只有在 frontmatter 中设置“SpecialHTML”时才会添加部分内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 2011-10-30
      • 2014-05-22
      • 2014-08-20
      • 1970-01-01
      • 2015-02-24
      • 2021-05-11
      • 1970-01-01
      相关资源
      最近更新 更多