我正在开发一个静态的Jekyll网站(用于个人投资组合)。我有9个帖子(项目),每个项目都包含一组不同(或类似)的标签。例如,我的前线是"项目A"是:
tags:
- html5
- css3
- angularjs
- phonegap
- mobile
和"项目B"是:
tags:
- html5
- javascript
- c#
很明显,类似的标签是 html5 。
我在页面上检索这些标签,如下所示: (我在markdown文件中执行此操作,我会在其中存储我的帖子内容,但如果需要,可以在 _layout / post.html 上执行此操作。)
<ul class="tags">
{% for tag in page.tags %}
<li><a>{{ tag }}</a></li>
{% endfor %}
</ul>
我如何才能点击标签(例如,如果我点击 html5 )并让它显示我共享相同标签的所有帖子?我认为URL看起来像这样: mywebsite.com/portfolio/html5 或类似的东西。 <a>
标记也是这样的:<a href="/portfolio/{{tag}}">{{ tag }}</a>
Jekyll有可能这样吗?或者即使类别是更好的选择,我也可以走这条路。
答案 0 :(得分:1)
如果你在google上搜索关键字&#34;标记为jekyll&#34;你可以找到你想要的东西。
好吧,我试着在jekyll中解释使用标签..
在tag_gen.rb
目录上创建_plugins
,并输入此代码
module Jekyll
class TagIndex < Page
def initialize(site, base, dir, tag)
@site = site
@base = base
@dir = dir
@name = 'index.html'
self.process(@name)
self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
self.data['tag'] = tag
tag_title_prefix = site.config['tag_title_prefix'] || 'Posts Tagged “'
tag_title_suffix = site.config['tag_title_suffix'] || '”'
self.data['title'] = "#{tag_title_prefix}#{tag}#{tag_title_suffix}"
end
end
class TagGenerator < Generator
safe true
def generate(site)
if site.layouts.key? 'tag_index'
dir = site.config['tag_dir'] || 'tag'
site.tags.keys.each do |tag|
write_tag_index(site, File.join(dir, tag), tag)
end
end
end
def write_tag_index(site, dir, tag)
index = TagIndex.new(site, site.source, dir, tag)
index.render(site.layouts, site.site_payload)
index.write(site.dest)
site.pages << index
end
end
end
在tag_index.html
目录上创建_layouts
并将其设置(您可以根据自己的喜好自定义):
---
layout: default
---
<h2 class="post_title">{.{page.title}}</h2>
<ul>
{.% for post in site.posts %}
{.% for tag in post.tags %}
{.% if tag == page.tag %}
<li class="archive_list">
<time style="color:#666;font-size:11px;" datetime='{.{post.date | date: "%Y-%m-%d"}}'>{.{post.date | date: "%m/%d/%y"}}</time> <a class="archive_list_article_link" href='{.{post.url}}'>{.{post.title}}</a>
<p class="summary">{.{post.summary}}
<ul class="tag_list">
{.% for tag in post.tags %}
<li class="inline archive_list"><a class="tag_list_link" href="/tag/{.{ tag }}">{.{ tag }}</a></li>
{.% endfor %}
</ul>
</li>
{.% endif %}
{.% endfor %}
{.% endfor %}
</ul>
或者你可以尝试这个插件related_posts-jekyll_plugin
这是一个jekyll插件,它会覆盖内置的related_posts 根据帖子计算相关帖子的功能&#39;标签
安装:
将_plugins/related_posts.rb
here复制到项目的_plugins
目录。
用法:
将此代码放入项目的_includes
目录,并命名文件related_post.html
或其他任何内容。
{% for post in site.related_posts %}
<a href="{{ post.url }}">{{ post.title }}</a><br />
{% endfor %}
最后,将此代码添加到_layouts/post.html
{% include related_post.html %}