viewpoint

Middlemanで現在記事のタグを表示する

Jan 12 2015

現在の記事の「tags」で設定しているタグを表示したい場合、リファレンスには以下のコードくらいしかタグの記述が見当たらなかった。

<ul>
  <% blog.tags.each do |tag, articles| %>
    <li>
      <h5><%= tag %></h5>
      <ul>
        <% articles.each do |article| %>
          <li><a href="<%= article.url %>"><%= article.title %></a></li>
        <% end %>
      </ul>
  <% end %>
</ul>

このコードでは、今までのすべての記事のタグが表示されてしまう。現在の記事のタグだけを取得したい。 Rubyは全然触ったことがないので、なかなか悩んだ結果以下のコードで実現できた。

<%= current_page.data.tags %>

このコードで現在の記事のタグを表示できる。表示はできるが、それぞれのタグをHTMLで囲うことはできない。それを実現するためには、タグの文字列を配列にし繰り返し処理をしなくてはならない。

以下のようにsplit()eachを使うと解決する。

<% current_page.data.tags.split(", ").each do |tag, articles| %>
  <li><a href="/tags/<%= tag %>.html"><%= tag %></a></li>
<% end %>

これで求めている結果を取得できる + タグページへのリンクも付与することができる。

Ruby勉強しよう。

このエントリーをはてなブックマークに追加

Archive