Listings from data – Hamel’s Blog - Hamel Husain
Заметка Hamel Husain показывает, что для создания listing (списка) на странице Quarto необязательно иметь сами посты в блоге. Достаточно скомбинировать три YAML-файла: blog/_metadata.yml с настройками отображения (формат таблицы, сортировка по дате, поля date и name), blog/blogs.yml со списком записей (имя, путь, дата, категории и описание) и index.qmd, который через metadata-files и блок listing ссылается на эти файлы. Любую опцию из _metadata.yml можно переопределить, указав её позже во front matter. В качестве результата генерируется список постов в формате table, а также приводится минимальный пример с кодом на GitHub и ссылки на документацию Quarto по listings и shared metadata.
Чтобы создать listing на странице Quarto, вам необязательно иметь записи в блоге. Например, можно скомбинировать следующие три yaml-файла:
blog/_metadata.yml
listing: max-description-length: 75 date-format: short feed: true filter-ui: false type: table sort-ui: false sort: "date desc" categories: false fields: [date, name] field-links: [name] field-display-names: name: Title format: html: anchor-sections: true
Этот файл задаёт список записей блога, которые могут находиться в другом месте
blog/blogs.yml
- name: "nbdev + Quarto: A new secret weapon for productivity" path: https://www.fast.ai/2022/07/28/nbdev-v2/ date: 2022-07-28 categories: [Jupyter, Quarto, nbdev] description: | Our favorite tool for software engineering productivity–nbdev, now re-written with Quarto. - name: Notebooks in production with Metaflow path: https://outerbounds.com/blog/notebooks-in-production-with-metaflow/ date: 2022-02-09 categories: [Metaflow, Jupyter] description: | Introduces a new Metaflow feature that allows users to use notebooks in production ML workflows.
Во front matter любой страницы (например, index.qmd) можно сослаться на blogs.yml и _metadata.yml следующим образом:
index.qmd
--- sidebar: false description: "A collection of technical blogs and talks on machine learning and data science." toc: true metadata-files: - blog/_metadata.yml listing: id: blog-listings contents: blog/blogs.yml --- ## Reference the listing somewhere on the page like this Subscribe via RSS: [](index.xml) ::: {#blog-listings} :::
Любую опцию, заданную в metadata.yml, можно переопределить, указав её после metadata-files. То, что идёт позже во front matter, переопределяет любые унаследованные файлы.
Результаты
В итоге будет сгенерирован список записей блога, который вы можете увидеть здесь, на моей странице — он сделан в формате table. Однако в listing можно добавить и картинки, как показано в Minimal Example.
Минимальный пример
Вот минимальный пример создания страницы-индекса со всеми записями вашего блога. В нём используются немного другие опции, чем в примере выше. Код для него можно посмотреть здесь.
Ресурсы
Quarto listings Quarto shared metadata