Jekyll按标签过滤URL参数

时间:2014-05-29 14:32:27

标签: ruby tags jekyll

我正在开发一个静态的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有可能这样吗?或者即使类别是更好的选择,我也可以走这条路。

1 个答案:

答案 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 &ldquo;'
      tag_title_suffix = site.config['tag_title_suffix'] || '&rdquo;'
      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>

来源:tags in jekyll

或者你可以尝试这个插件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 %}