我正在与Jekyll合作,并希望使用{% include... %}
在标记下文件中包含一段超文本标记语言,而无需进一步处理该超文本标记,即由标记处理器处理,就好像它只是内联HMTL一样。
注意:我使用的是红毯标记(而不是kramdown)。
这能用Jekyll插件来处理吗?
我已经创建了一个包含以下文件的GitHub存储库md-include-html,用于演示我的问题。
_layouts/default.html
包含:
<div>
{{ content }}
</div>
md-page.md
包含:
---
layout: default
---
A
{% include_relative html-snippet.html %}
B
html-snippet.html
包含:
</div>
<!-- Some arbitrary HTML for {{ page.path }} -->
<div>
请注意,我首先尝试关闭_layouts/default.html
将引入的div,然后在最后打开一个新的div。
这将导致_site/md-page.html
<div>
<p>A</p>
<p></div>
<!-- Some arbitrary HTML for md-page.md -->
<div></p>
看看我的评论是如何被处理的,以及我的内容是如何包装在<p>...</p>
中的。
似乎include发生在markdown处理之前,并且没有办法告诉markdown处理器以不同的方式处理包含的文本。
所以我可以像这样在一个超文本标记语言文件中包含markdown (参见我的资源库中的html-page.html
):
{% capture snippet_content %}
{% include_relative md-snippet.md %}
{% endcapture %}
{{ snippet_content | markdownify }}
但是我不能在markdown文件中包含HTML。
如果没有markdown特性(在Liquid中做的任何事情本质上都发生得太早)来暂时禁用markdown处理,我看不到解决这个问题的方法。
例如。
A
<markdown-off>{% include_relative html-snippet.html %}</markdown-off>
B
是的,我知道标签看起来不是很有标记,但是你明白我的意思。
有什么方法可以用Jekyll插件做到这一点吗?我查看了Jekyll文档的plugin page中提到的内容,但没有立即发现任何内容。
发布于 2019-05-14 07:56:04
现在正好遇到了这个问题。我使用includes在Jekyll的.md文件中添加html片段。如果您使用的是Kramdown,您可以在您的include代码片段中添加一个markdown属性。
<div markdown="0"> !-- some html you don't want processed --> </div>
这似乎是可行的。
发布于 2016-01-04 03:29:57
我知道这是一个老问题,但您有没有尝试过将它包装在{% raw %}
{% endraw %}
中?
试一试
</div>
{% raw}
<!-- Some arbitrary HTML for {{ page.path }} -->
{% endraw %}
<div>
这应该会停止模板引擎的处理。
将注释缩进4个空格将意味着markdown会将其视为代码,但Liquid仍会处理{{ page.path }}
https://stackoverflow.com/questions/28282272
复制相似问题