Объединение данных публикации Jekyll с данными из YAML для создания новой ленты блога

Думаю, я даже не знаю, что мне искать. В моем блоге Jekyll в настоящее время у меня есть только сообщения в блоге, которые были написаны и перечислены с их полным содержанием на главной странице и с использованием разбивки на страницы. Я хочу следовать большему количеству стандартов Indie Web и следовать методу PESOS (публикация в другом месте, распространение (на свой) собственный сайт). Я придумал способ автоматически получать данные из моего Twitter (например, post_date, встроенный код и т.д.) в файл данных YAML. Я хочу взять данные из моих сообщений, объединить данные из Twitter и включить эти сообщения, как если бы они были также сообщениями в блоге (план состоит в том, чтобы сделать то же самое и с Instagram).

Я много чего перепробовал, но даже не уверен, как лучше это сделать. Я предполагаю, что он будет использовать что-то похожее на Использование Jekyll, как изменить содержимое массива с помощью цикла for?, но я не могу заставить его работать. В настоящее время мой код для сообщений в блоге выглядит следующим образом:


{% for post in paginator.posts %}

{% if post.header.teaser %}
  {% capture teaser %}{{ post.header.teaser }}{% endcapture %}
{% else %}
  {% assign teaser = site.teaser %}
{% endif %}

{% if post.id %}
  {% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %}
{% else %}
  {% assign title = post.title %}
{% endif %}

<div class="list__item">
  <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
    <h1 class="archive__item-title" itemprop="headline">
      {% if post.link %}
        <a href="{{ post.link }}">{{ title }}</a> <a href="{{ post.url | relative_url }}" rel="permalink"><i class="fas fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a>
      {% else %}
        <a href="{{ post.url | relative_url }}" rel="permalink">{{ title }}</a>
      {% endif %}
    </h1>

<p>Posted on <a href="{{ post.url }}">{{ post.date | date: "%A %B %-d, %Y" }}</a> by <a href="/contact/">Jacob Campbell</a>.</p>

{{ post.content }}

  </article>
</div>
{% endfor %}

{% include paginator.html %}

1 ответ

Может быть, если твой posts а также tweets имеют такую ​​же структуру с точки зрения полей, которые вы могли бы concat два:

{% comment %} Given that you make the tweets accessible from site, as a collection, for example {% endcomment %}
{% assign posts = paginator.posts | concat: site.tweets | sort: "date" %} 
{% for post in posts %}
  <h2>{{ post.title }}</h2>
  <div>{{ post.content }}</div>
{% endfor %}

Имейте в виду, что здесь я также прибегаю к списку послеconcat, через sort фильтр, поэтому твиты отображаются в обычных временных рядах сообщений.

И если ваши структуры не совпадают, вы всегда можете прибегнуть к collection в котором твой post является:

{% assign posts = paginator.posts | concat: site.tweets | concat: site.instagram | sort: "date" %} 
{% for post in posts %}
  {% if post.collection == 'posts' %}
    <h2>{{ post.title }}</h2>
    <div>{{ post.content }}</div>
  {% elsif post.collection == 'tweets' %}
    {% comment %} If I am not mistaken, twitter have no title concept {% endcomment %}
    <h2>There was a bird singing about:</h2> 
    <div>{{ post.content }}</div>
  {% elsif post.collection == 'instagram' %}
    {% comment %} So, now, it can fit any social media of your choice {% endcomment %}
  {% endif %}
{% endfor %}
Другие вопросы по тегам