gpt4 book ai didi

arrays - 如何为单个帖子指定多个作者,然后计算每个作者相关的帖子?

转载 作者:行者123 更新时间:2023-12-01 12:11:41 26 4
gpt4 key购买 nike

我正在尝试做的事情:

我正在尝试为每个作者 所写的帖子创建一个列表。这是一个问题,因为每篇文章应该能够指定多个作者。

假设我们总共有 3 个帖子和 3 个作者。

编辑 1: 如答案中所建议,最好通过在前言列表而不是 CSV 字符串中列出作者来完成。所以,

像这样

帖子:

---
title: post
authors:
- foo
- bar
---

而不是像这样:

帖子:

---
title: post
authors: [foo, bar]
---

问题设置:

(根据编辑 1 编辑)

帖子 1:

---
title: post1
authors:
- foo
- bar
---

帖子 2:

---
title: post2
authors:
- foo
- bar
---

帖子 3:

---
title: post3
authors:
- john doe
- bar
---

输出:

bar (3) 
john doe (1)
foo (2)

点击作者应该会显示所有帖子。

或者一个数组也可以这样显示,但这对情况没有帮助,只是一个等效的样式。

我尝试了什么

我对类别和标签做了同样的事情,this algorithm工作起来很有魅力。但是,以某种方式不支持将 site.categories 替换为 site.authors

返回:

Liquid Exception: 0 is not a symbol nor a string in authors.html

我想这是由于默认情况下 categoriestags 是数组的性质。我认为能够以某种方式将前端标记 authors 设置为数组会有所帮助。我想这是在 _config.yml 中完成的,但我一头扎进了它。

到目前为止,我已经想出了一种方法来定位数组中的各个作者,但我还远不能单独列出他们并对其进行计数。我想我是有限的,因为作者的性质默认不是数组,否则像 this one 这样的实现可以使用自定义的前端变量,如 authors,但它们不能。

我的意思(当我说“截至目前”时):

{% for post in site.posts %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ post.authors }}</a> ({{ post.authors[0] }})</li>
{% endfor %}

输出:

foobar (foo)
foobar (foo)
john doebar (john doe)

毕竟,我想我在这里遗漏了一些东西。我可能不是第一个尝试这个的人,但我发现的唯一文档来自那些尝试过我正在尝试但没有真正实现的人。

This user for example created a way to count users , 但与 site.authors

一起使用时

它返回数组大小== 0-if 子句:

No author

这似乎是一件简单的事情,但由于某些原因并非如此。至少对我而言。

编辑 2:

根据 Kieth 的回答,我离目标更近了,但我在创建空数组时遇到了问题。根据 Jekyll 中的这个问题,这似乎是一个 problem in general .然而,解决方法似乎是分配一个变量和 split it with an emphty tag .目前,我正在努力将作者添加到数组中,以便我可以评估它的大小。

{% assign authors = site.posts | map: 'authors' | uniq %}
{% assign authorCount = '' | split: '' %}

<div class="softwaretitle">
{% for author in authors %}
<a>{{ author }}</a>


{% for post in site.posts %}
{% for post_author in post.authors %}
{% if post_author == author %}

{% assign authorCount = authorCount | push author %}
<a>({{ page.authorCount | size }})</a>

{% endif %}
{% endfor %Edit 2:}
{% endfor %}
{% endfor %}
</div>

输出:

Error: Liquid error (.../_includes/authors.html line 14): wrong number of arguments (given 1, expected 2) included Error: Run jekyll build --trace for more information.

第 14 行:

{% assign authorCount = authorCount | push author %}

编辑 3:

最后,最后的结果(没有链接到帖子列表,但就是细节)

<!-- Get a list of unique authors -->
{% assign authors = site.posts | map: 'authors' | uniq | sort%}
{% assign author_post_count = 0 %}
{% for author in authors %}
{% assign author_post_count = 0 %}

<div class="">
<li><a>{{ author }}
{% for post in site.posts %}

{% for post_author in post.authors %}
{% if post_author == author %}
{% assign author_post_count = author_post_count | | plus: 1 %}

{% endif %}

{% endfor %}
{% endfor %}
<span>&nbsp ({{ author_post_count }})</span></a></li>
</div>
{% endfor %}

输出:

bar (3) 
john doe (1)
foo (2)

最佳答案

更新后的答案:

获取作者列表(不重复),包括作者贡献的帖子总数,以及帖子标题列表和帖子链接。

  {% assign authors = site.posts | map: 'authors' | uniq %}

{% for author in authors %}
{% assign author_post_count = 0 %}
{% for post in site.posts %}
{% if post.authors %}
{% for post_author in post.authors %}
{% if post_author == author %}
{% assign author_post_count = author_post_count | plus: 1 %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
<h2>{{ author }} - {{ author_post_count }}</h2>
{% for post in site.posts %}
{% if post.authors %}
{% for post_author in post.authors %}
{% if post_author == author %}
{% assign author_url_query = author | replace: ' ', '-' %}
<a href="{{ post.url }}" title="A posts {{ author }}">
{{ post.title }}
</a>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endfor %}

相反,如果您希望每个作者都有一个页面,其中包含他们撰写的帖子列表(自动生成),则需要通过自定义插件扩展 Jekyll。如果您有使用 Ruby 编程语言的经验,这是很有可能的。这是一个非常接近的例子:https://github.com/avillafiorita/jekyll-datapage_gen您可以简单地删除 _config 数据要求并对目录名称和永久链接进行硬编码:)

关于arrays - 如何为单个帖子指定多个作者,然后计算每个作者相关的帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51366607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com