Как отформатировать текст заголовка с помощью Pelican?
Я использую Pelican с Markdown. Я создаю сообщения в блоге в виде файлов foo.md
, которые выглядят следующим образом:
Title: Light, by Kelly Link
Date: 2015-09-07 21:18
Blah blah ...
Я бы хотел, чтобы слово в заголовке было выделено курсивом, но я не могу использовать markdown в поле Title:
(Если я пишу *Light*, by Kelly Link
, это интерпретируется буквально. Должен ли я изменить тему, чтобы сделать это?2 ответа:
Таким образом, соответствующий раздел кода в Pelican, я полагаю, следующий из
readers.py
(начиная с строки 183):Короче говоря, Pelican ищет, нужно ли разбирать поля Markdown, прежде чем писать их (def _parse_metadata(self, meta): """Return the dict containing document metadata""" formatted_fields = self.settings['FORMATTED_FIELDS'] output = {} for name, value in meta.items(): name = name.lower() if name in formatted_fields: # handle summary metadata as markdown # summary metadata is special case and join all list values summary_values = "\n".join(value) # reset the markdown instance to clear any state self._md.reset() summary = self._md.convert(summary_values) output[name] = self.process_metadata(name, summary)
title
является частьюmeta
dict
). Исходя из этого, похоже, что все, что вам нужно сделать, это убедиться, что у вас естьtitle
в настройкахFORMATTED_FIELDS
.
Спасибо, очень полезно! Я сделал это, но теперь по какой-то причине
<p></p>
, в который Пеликан заворачивает форматированный текст, имеет огромное поле. - Эли Роуз 8 сентября 15 в 2: 26Часто можно избежать обертывания
<p></p>
, изменив переменнуюtitle
в html-страницах вашей темы наtitle|striptags
. Это решает несколько других проблем (например, все заглавные части в заголовках), которые иногда создает Typogrify.Например:
{% for p in PAGES %} <li{% if p == page %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title|striptags }}</a></li>