2015-02-02 4 views
4

Я работаю с Jekyll и хочу использовать {% include... %}, чтобы включить фрагмент HTML в файл разметки без обработки HTML-кода далее, то есть обрабатываться процессором уценки, как если бы это был только встроенный HMTL.Запретить HTML, включенную в файл уценки, обрабатываемый далее Jekyll?

Примечание: Я использую redcarpet markdown (а не, например, kramdown).

Может ли это быть обработано с помощью Jekyll-плагина?

Я создал репозиторий GitHub md-include-html со следующими файлами, которые демонстрируют мою проблему.

1. _layouts/default.html содержит:

<div> 
{{ content }} 
</div> 

2. md-page.md содержит:

--- 
layout: default 
--- 
A 

{% include_relative html-snippet.html %} 

B 

3. html-snippet.html содержит:

</div> 
<!-- Some arbitrary HTML for {{ page.path }} --> 
<div> 

Обратите внимание, что я первый попытке закрыть div, который будет представлен _layouts/default.html и th en открыть новый div в конце.

Это приводит к _site/md-page.html:

<div> 
<p>A</p> 

<p></div> 
&lt;!-- Some arbitrary HTML for md-page.md --&gt; 
<div></p> 

Посмотрите, как мой комментарий был обработан и мое содержание, завернутый в <p>...</p>.

Кажется, что включение происходит до обработки уценки, и нет способа сказать процессору уценки обрабатывать включенный текст по-разному.

Так что я могу включать уценки в HTML-файл с чем-то вроде этого (см html-page.html в моем репо):

{% capture snippet_content %} 
{% include_relative md-snippet.md %} 
{% endcapture %} 
{{ snippet_content | markdownify }} 

Но я не могу включить HTML в файле уценки.

Я не вижу пути вокруг этого без функции уценки (что-либо, что делается в Liquid, по сути, происходит слишком рано), чтобы временно отключить обработку уценки.

E.g.

A 

<markdown-off>{% include_relative html-snippet.html %}</markdown-off> 

B 

Да, я знаю, что теги не выглядят очень уцененными, но вы понимаете, что я имею в виду.

Будет ли какой-то способ сделать это с помощью Jekyll-плагина? Я посмотрел на те, что были упомянуты в документации plugin page документации Jekyll, но ничего не заметил.

+0

Когда я первоначально отвечал на этот вопрос, я не указано 'уценки: redcarpet' в' _config. yml' в репо, демонстрируя эту проблему. У меня сейчас - поскольку это тип уценки, который я использую в своем реальном проекте. –

ответ

0

Старый вопрос, который я знаю, но вы пробовали обернуть его в {% raw %}{% endraw %}?

Попробуйте

</div> 
{% raw} 
<!-- Some arbitrary HTML for {{ page.path }} --> 
{% endraw %} 
<div> 

Это должно остановить обработку шаблонного двигателя.

отступов комментарий по 4 пробела будет означать, что уценки будет рассматривать его в качестве кода, однако Liquid будет еще обрабатывать {{ page.path }}

Смежные вопросы