Объединение данных публикации 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 %}