问题标签 [metalsmith]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mustache - 如何在 metalsmith 中设置多个内容区域?
我有一个非常简单的金属匠用例,似乎没有任何现成的文档涵盖。
在我的 index.html 中,我想要多个内容区域:
我希望about和faq的内容来自降价文件。我很高兴改变我的文件的组织/标记方式。
我只是不知道要使用哪些插件来使它工作,一切似乎都是为了为每个源文件生成一个输出文件。
看起来它们可以工作的插件(metalsmith-in-place和metalsmith-layouts)告诉你来 SO 以获得更详细的示例,所以我们来了!
metalsmith - 模板的金属匠模板
是否可以使用相互扩展的模板?
说,我有这些文件:
base.html:
三列.html:
somePost.html:
期望的输出:
我正在使用金属匠布局。
javascript - 车把套
我正在尝试让我的metalsmith
设置正常工作,没什么特别的。
在我的build.js
我有:
在我的部分模板中,header.hbt
我有:
结果 html 以:
<p><!DOCTYPE html></p>
——这显然不是我需要的。
有什么建议么?
PS。在我的布局文件中使用普通的 doctype 定义具有相同的效果。使用handlebars ^4.0.5
.
编辑1:
尝试了一下之后,我可以提供另一个症状:如果将调用的结果放在块之前,它SafeString()
似乎被包装在标签中。这并非特定于 doctype 声明,»normal« html 元素似乎也受到影响。<p>
<html>
编辑 2:
现在我已经提炼了 2x2 案例以实现以下功能safeString()
:
a)块内的常规元素(例如<div>
)<html>
按预期呈现,没有更改。
b)块渲染之前的常规元素,但放置在标签内。<html>
<p>
c)块内的doctype元素<html>
被呈现为纯文本,如下所示:<!DOCTYPE html>
d)块之前的doctype元素<html>
将以相同的方式呈现,但包装在一个<p>
元素中。
nunjucks - 这个 metalsmith-in-place 构建脚本有什么问题?
我正在尝试使用 metalsmith-in-place 对源目录的子目录中的文件进行一些就地模板化。它不起作用。模板标签不会被 frontmatter 替换。
我的构建脚本:
我的模板:
我的输出:
它适用于source
; 但我需要它来处理子目录。
swig-template - 使用 Metalsmith 和 swig 访问模型中的单个对象
我有一个 json 数据文件,其中包含多个对象,其中包含命名键。
在我的内容文件中,我想指定模型中要使用的对象,然后在 swig 中引用它。像这样的东西:
这可能吗?
handlebars.js - 如何将布局元信息插入与文件模式匹配的所有文件中?
我有很多 Markdown 源文件,它们是由一些数据导出步骤自动生成的。
我正在使用 metalsmith-layouts 并在我手工制作的(非自动生成的)markdown 文件顶部有这些行,以便使用我的 layout.html 对它们进行布局:
如何将布局信息动态添加到所有匹配的文件,例如文件模式教程/*.md,以便这些文件也与我的布局一起呈现?在转换之前将此信息添加到文件中并不优雅。
metalsmith - Metalsmith 的多语言网站
我已经为 Melatsmith 尝试了不同的插件组合,但仍然需要帮助。您能否建议如何像这样转换结构:
进入:
不幸的是,在 Metalsmith 中关于多语言的所有文章中,他们已经有了 locale 文件夹src
。在我的版本中,我不想拥有它,而是.md
为每个语言环境提供不同版本的文件。
markdown - 如何将 Nunjucks 的部分/宏/包含与 metalsmith-in-place 一起使用?
我无法在我的降价文件中重用模板代码。例如,我想提取 vimeo 链接的嵌入代码,然后将 vimeo id 传递给调用。
一个示例宏:
像这样使用:
如果我直接在 markdown 文件中定义宏,这将有效。但我当然希望有一个带有宏的全局文件,以便于维护。
我尝试使用 Nunjucks 的{% import "macros.njk" as macros %}
. macros.njk
将包含vimeoEmbed
宏。
但不幸的是,我不断得到Error: template names must be a string: undefined
.
作为替代方案,我尝试使用{% include "vimeoEmbed.njk" %}
但我得到了相同的Error: template names must be a string: undefined
.
这似乎是metalsmith-in-place
Nujucks 特有的include
,并且import
与metalsmith-layouts
.
任何其他在 markdown 文件和 Nunjucks 中重用代码的解决方案也是受欢迎的。谢谢!
metalsmith - Metalsmith-permalinks 未能添加元数据路径
我正在使用具有以下设置的 metalsmith-permalinks:
但是,相关集合中的日志记录文件显示path
未将其添加到其元数据中:
永久链接在布局之前被调用,这意味着它不可能是这里发现的相同问题,并且 - 如日志中所示 - 其他插件正在成功添加元数据。
我的完整构建顺序是:
我直接在 Gulp 中运行 Metalsmith。任何帮助将不胜感激。
javascript - {{}} 内的车把变量?
如何使用包含字符串'nav'(来自markdown文件)而不是nav(json文件)的变量:
{{#each nav}}
{{this}}
{{/each}}
由于我有多个nav.json文件,如果我使用来自相应markdown文件的变量,我希望它循环使用与markdown中的变量相同的文件名的相应json文件。
有什么帮助吗?