2015-05-13 3 views
2

Я определяю переменную в пеликан статье с использованием синтаксиса Markdown экземпляра:Как переменные процесса в шаблонах Pelican?

Motto: _"Paranoia is a virtue"_ Anonymous, 1984 

Тогда я хочу, чтобы использовать его в качестве шаблона (например, article.html.) Как:

{% if article.motto %}<p>{{ article.motto }}</p>{% endif %} 

I, очевидно, получить в HTML-то вроде:

<p>_"Paranoia is a virtue"_ Anonymous, 1984</p> 

есть ли способ, чтобы обработать переменную (FI через фильтр Джинджя), чтобы получить текст после обработки Markdown. В случае, если результат должен быть:

<p><i>"Paranoia is a virtue"</i> Anonymous, 1984</p> 

ответ

0

Это делает трюк?

{% if article.motto %}<p>{{ article.motto | replace("_", "<i>", 1) | replace("_", "</i>" }}</p>{% endif %} 
2

Для 3,5, нет. По умолчанию Markdown не обрабатывает метаданные. Но текущая версия разработки включает в себя новую настройку, FORMATTED_FIELDS, для этого. Итак, подождите 3.6 или установите dev-версию из github.

Конечно, вы можете также использовать HTML вместо синтаксиса уценки:

Motto: <i>"Paranoia is a virtue"</i> Anonymous, 1984 
2

Добавьте следующие строки в файл pelicanconf.py определить фильтр дзиндзя, чтобы передать переменную через markdown:

from markdown import Markdown 
markdown = Markdown(extensions=['markdown.extensions.extra']) 

def md(content, *args): 
    return markdown.convert(content) 

JINJA_FILTERS = { 
    'md': md, 
} 

Тогда вы можете сделать

{% if article.motto %}<p>{{ article.motto | md }}</p>{% endif %}

, и ваша переменная будет правильно отображена.