Read in:
Русский
Заметки с произвольным Content-Type
Поле content_type во frontmatter позволяет отдавать заметку как любой MIME-тип вместо обычной HTML-страницы. Тело заметки отдаётся как есть, frontmatter вырезается. Никакой HTML-обёртки, никакого шаблона.
Пример
---
slug: /data.csv
content_type: text/csv; charset=utf-8
free: true
---
name,value
alpha,1
beta,2
Запрос к /data.csv вернёт Content-Type: text/csv и строки CSV.
Что происходит
Когда content_type задан, путь рендеринга пропускает HTML-обёртку:
- Устанавливает заголовок
Content-Typeиз значения поля. - Вырезает frontmatter (блок между
---). - Возвращает оставшийся текст дословно.
- Пропускает кэш страниц (кэш хранит только
text/html).
Правила доступа работают как обычно: free: true делает заметку публичной, платные заметки требуют токена.
Поддерживаемые значения
Подходит любой корректный MIME-тип:
| Значение | Применение |
|---|---|
text/plain; charset=utf-8 |
robots.txt, llms.txt, любой текстовый файл |
text/csv; charset=utf-8 |
Экспорт данных в CSV |
application/json |
Простые JSON-эндпоинты |
application/xml |
XML-фиды или дополнительные sitemap |
Совместно с шаблоном
Если у заметки есть и content_type, и layout, тело формирует Jet-шаблон, а content_type из frontmatter задаёт заголовок. Это удобно, когда тело нужно сформировать динамически.
Для статического контента без шаблонной логики лучше просто написать тело прямо в заметке, без layout.
Примечания
search: falseисключает заметку из поиска по сайту — для машиночитаемых файлов это обычно нужно.- Markdown не рендерится в HTML. Тело отдаётся как сырой текст — заголовки, списки и ссылки остаются в виде markdown-символов.
- Практический пример двух популярных текстовых файлов — robots.txt и llms.txt.