我正在尝试开发一种优雅的方法来在鹈鹕模板中创建任意元数据,以使结果超链接到现有页面。例如,如果我有一个类别goal
,其页面first-goal
的结构如下:
content
├── pages
│ ├── goal
│ │ ├── first-goal.md
我希望能够在文章元数据中执行以下操作:
Title: First Article
Goal: first-goal
然后在模板中,从
first-goal
元数据转换goal
,使其成为指向该目标页面的链接,例如:{%- for goal in article.goal %}
<a href="[link to goal page(s)]">goal</a>
{% endfor %}
我有一些想法:
有没有一个好的插件可以做一些我可以修改的事情?我看过pelican-plugins的链接器和链接,它们看起来很近,但还不完全
我可以修改FORMATTED_FIELDS以包括
goal
,并手动添加超链接,然后在{filename}/pages/goal/first-goal.md
元数据中使用goal:
作为超链接。这似乎是多余的,根本不使用现有结构。在设置文件中手动创建映射,该映射具有类似于dict的
GOAL_LINKS = {'first_goal' : 'link-to-first-goal.html'}
,然后在模板中调用GOAL_LINKS.first_goal
。同样,此解决方案比我想要的要手动得多。在一般情况下,是否有人利用现有的元数据和类别结构并减少了手动映射的需要,做了类似的事情或对如何实现这一点有任何想法?
最佳答案
昨天我做了类似的事情。我的网站的结构如下所示:
content
├── pages
│ ├── cars.md
│
├── cars
│ ├── car-page.md
我决定使用the来确定将文章保存在哪里。我的配置文件包含以下几行:
ARTICLE_URL = '{slug}.html'
ARTICLE_SAVE_AS = '{slug}.html'
当我创建一个新文件时,将类别和子条目放在
car-page.md
的顶部,这将用于告诉Pelican将html文件保存在cars
目录中,并将其分类为:Title: My Car Page
Slug: cars/car-page
Category: cars
...
我发现this answer可以帮助我弄清楚如何遍历car目录中的所有文章,并将
cars.md
文件用作该主题的登录页面。我的循环版本在我的page.html
模板文件中如下所示:{% block content %}
{{ page.content }}
<ul>
{% for article in articles if page.category == article.category %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} - {{ article.locale_date }}</a></li>
{% endfor %}
</ul>
{% endblock %}
Here是我网站的回购的链接,以防您想了解所有难题的实际作用。我强烈建议您浏览另一个Pelican网站(无论是我的网站还是其他网站),看看事情是如何完成的。它确实帮助我了解了事物的组合方式,并使我对可能的事物敞开心opened。这是一个很好的鹈鹕站点列表:https://github.com/getpelican/pelican/wiki/Powered-by-Pelican
关于python - 鹈鹕:创建超链接的元数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45093057/