我有一个集合_colletion
。有一个文件_collection/path/topic.md
和一个文件夹_collection/path/topic/
,其中包含许多带有内容的.md
个文件。这些文件的永久链接为/path/topic
和/path/topic/file-x
- 因此父页面的文件夹名称相同,其中包含多个随机页面。
现在,我想在标题为/path/topic
的所有.md
个文件中输出topic.md
的链接作为链接文字:
---
title: This is the page title defined in topic.md
---
应该成为
<a href="/path/topic">This is the page title defined in topic.md</a>
我最容易如何做到这一点?
我可以以某种方式访问topic
文件的文件夹名称.md
,并使用它来阅读topic.md
并输出它title
并生成链接对吗?
答案 0 :(得分:1)
我目前的手册&#34;解决方案&#34; (或解决方法):
在parent
的所有网页的前端添加/topic/
条目,其中包含topic.md
的标题和相对网址:
parent: ['Topic Title', '../topic']
在页面模板中:
{% if page.parent %}
<p>« <a href="{{ page.parent[1] }}">{{ page.parent[0] }}</a></p>
{% endif %}
可以使用,但当然会重复此信息n次,必须手动维护。
答案 1 :(得分:1)
这个(选项1)怎么样?
{% assign pageurl_array = page.url | split: "/" %}
{% assign path = pageurl_array[0] %}
{% assign topic = pageurl_array[1] %}
<p>« <a href="{{ path }}/{{ topic }}/{{ topic }}.html">
{{ topic | capitalize | replace: "-", " " }}
</a></p>
如果您不介意疯狂的构建时间,请执行此操作(选项2):
{% assign pageurl_array = page.url | split: "/" %}
{% assign path = pageurl_array[0] %}
{% assign topic = pageurl_array[1] %}
{% capture parent_url %}{{ path }}/{{ topic }}/{{ topic }}.html{% endcapture %}
<p>« <a href="{{ parent_url }}">
{% for i in site.pages %}
{% if i.url == parent_url %}
{{ i.title }}
{% endif %}
{% endfor %}
</a></p>
我会选择第一个选项(更快)并使用此javascript来获取大写字母和特殊字符:
$('a').each( function() {
var str = $(this).html();
str = str.replace('Topic from url', 'Topic from URL');
$(this).html(str);
});
我承认javascript解决方案远非漂亮,但它很好地解决了构建时间问题。
请注意,Jekyll非常慢。如果您需要更快的构建时间,我建议您深入了解Hugo。
答案 2 :(得分:1)
在对我的问题和其他答案的评论进行讨论时,我注意到我想要构建的内容实际上是一个非常常见的东西:面包屑导航!只是一个非常“小”的,只有一个级别。
凭借这些新发现的知识,我可以为Jekyll谷歌“breadcrumb”插件:
此解决方案使用页面路径来提取“crumbs”:
它使用链接文本的文件夹名称。
另一个类似的实现:
另一个:
所有这些中都没有title
链接文字。
此解决方案实际上会读取页面title
,但也可以从页面中读取breadcrumb
前缀,并将其用作链接文本:
这个可能是一个有效的解决方案。
还有一些真正的插件(不幸的是,这些插件不适用于Github Pages):