我想将帖子的打印类别名称转换为标题大小写。我找不到可行的液体过滤器。我尝试使用破折号和camelcase过滤器,但没有骰子。
或者,我想打印在YAML前端编写的类别名称。
例如,对于帖子:
category: Here's the Category
当我引用名称时:
{% for cat in site.categories %}
<h1>{{ cat[0] }}</h1>
{% endfor %}
我在页面上看到“这是类别”。我想看看“这里是类别”,甚至是“这里的类别”,我可以替换(替换:'The','the')我想要做的几篇文章。
修改
对于像我一样绝望的人,这个恶心的黑客有效,其中n是你在类别标题中拥有的最大单词数。
{% for cat in site.categories %}
{% assign words = cat[0] | split: ' ' %}
<h1>{{ words[0] | capitalize | replace:'The','the'}} {{ words[1] | capitalize }} {{ words[2] }} {{ words[3] | capitalize }} {{ words[4] | capitalize }} {{ words[n] | capitalize }}</h1>
{% endfor %}
如果有人知道更优雅的方法,我会留下未回答的问题。
答案 0 :(得分:5)
您可以使用capitalize
过滤器实现所需的一部分:
{{ 'capitalize me' | capitalize }}
Capitalize me
我没有测试其边缘情况的另一种可能性是使用join
和camelize
:
{{ "here's the category" | join: '-' | camelize }}
它应该打印&#34;这里是类别&#34;,但是camelize可能会遇到here's
的问题。
答案 1 :(得分:2)
在我的情况下使用{{ category.first | capitalize }}
即可,但在类别上没有额外的''
。
答案 2 :(得分:0)
不是手动单步执行0到n的单词,而是可以使用另一个for循环,如下所示:
{% for category in site.categories %}
{% assign words = category | first | split: ' ' %}
{% for word in words %}
{{ word | capitalize | replace: 'The','the' }}
{% endfor %}
{% endfor %}
答案 3 :(得分:0)
我知道这已经过时了,但它帮助我解决了我的问题,它可以帮助其他人。
我来的解决方案是:
{% for category in site.categories %}
<a href="/{{category[0] | slugify }}/">
{{category[0]}}
</a>
{% endfor %}
此列出所有博客类别(最常用于构建菜单)
变成:
<a href="/dicas/">
Dicas
</a>
<a href="/diário-de-bordo/">
Diário de bordo
</a>
谢谢你给我一个线索。 您可以在http://jekyllrb.com/docs/templates/#filters
中查看其他过滤条件答案 4 :(得分:0)
Kabab-case中的名称页面,如您所希望的那样,然后使用replace:
{{ category.name | replace: '-', ' '}}
Don't-Capitalize-the
变为Don't Capitalize the
,Capitalize-The
变为Capitalize The
答案 5 :(得分:0)
此解决方案有点过分,但您可以调整author data file solution from the Jekyll site以使用类别。
在_data
文件夹中,创建一个名为categories.yml
的文件。加入这样的东西:
my-first-category:
name: My First Category
another-category:
name: Another Category
然后,你可以像这样循环你的类别:
{% for category in site.categories %}
{% assign category_slug = category[0] %}
{% assign category_data = site.data.categories[category_slug] %}
{% if category_data %}
{{ category_data.name }}
{% endif %}
{% endfor %}
旁注:我不确定为什么我需要category_slug
分配。循环遍历post.categories
时,我并不需要它。
这会通过添加额外的文件来增加开销,但会为可以附加到类别图像或描述等对象的其他数据打开大门。您可以更加细化您的名字。这也是一个非常易读的解决方案,很不错。
答案 6 :(得分:0)
我反过来了。我在“标题”情况下对页面标题进行了硬编码,并在其他页面中使用了downcase
,upcase
和capitalize
液体过滤器。