Как использовать JSON/YAML в шаблонах Hexo?

Я полностью просмотрел документацию по Hexo, но до сих пор не совсем уверен, как интегрировать структурированные данные (YAML, JSON) в страницу/публикацию с использованием шаблонов Hexo. Самое близкое, что я смог найти, это раздел Данные файла документации по плагинам. Я не совсем уверен, что это то, что я ищу, и нет никаких примеров реализации.

Для тех, кто знаком с Jekyllrb, популярным генератором статических сайтов Ruby, вы можете использовать каталог _data для хранения файлов JSON и YAML. В шаблонах вы можете ссылаться на эти данные, используя что-то вроде {% for event in site.data.events %}...{% endfor %}.

Есть ли аналог в Hexo?


person Roy    schedule 23.02.2015    source источник


Ответы (3)


Если вы хотите получить доступ к данным YAML или JSON в файлах уценки, сделайте следующее.

  1. Создайте файл статических данных: /source/_data/mydata.yml
var1: "value 1"
var2: "value 2"
var3: "value 3"
  1. Затем откройте его в своем сообщении /source/_posts/mypost.md:
---
title: "My Post"
data: 2021-01-01 14:41:29
---

{{ site.data.mydata.var1 }}
person Ashwin    schedule 01.01.2021

Вы можете использовать такие выражения, как <%= page.title %>, <%= page.date %> или даже <%= page.foo %> (в шаблонах EJS), где title, date и foo — это атрибут YAML из заголовка вашего сообщения или страницы, например. source/_posts/2015-06-14-my-awesome-post.markdown":

---
layout: post
title: "My Awesome Post"
date: 2015-06-14T17:23:00+04:00
foo: bar
---
Hello World
person Konstantin Pavlov    schedule 14.06.2015

Hexo 3 теперь делает файлы данных в стиле Jekyll.

Из документации:

Эта функция загружает файлы YAML или JSON в папку source/_data, чтобы вы могли использовать их на своем сайте.

Например, добавьте menu.yml в папку source/_data.

Home: /
Gallery: /gallery/
Archives: /archives/

И вы можете использовать их в шаблонах:

{% for link in site.data.menu %}
   <a href="{{ link }}">{{ loop.key }}</a>
{% endfor %}
person Brendan    schedule 07.04.2016
comment
у вас есть пример использования json и ejs, так как я вообще не могу заставить его работать. В частности, у меня есть файл с именем themes/_data/books.json, и он не проходит как site.data.books. - person Simon H; 22.10.2017