Jekyll liquidでnoindex canonical keywordsを実装した

    >

最初は、jekyll-seo-tagっていうプラグインで実装しようと思ってたんですが、自分で書いたほうが拡張性というか自由度があるので自分で書いてみました。
jekyll-seo-tagはWordPressでいうhookみたいなのがないようなので、例えばタイトルこそtitle=falseを指定することもできますが、調べるとcanonicalとかはそういうのがないみたいです。
つまり、canonicalが指定されていればそれを優先し、指定されていなければデフォルトを使用、というようなことが出来ないんですね。

HTMLのSEOメタタグってのは基本最初に定義したものが優先されるので、複数定義されているってのは良くないんですね。
ということで実装しました。

こんな感じでできるようにしました。

---
layout: post
title:  "test"
date:   2018-01-01 11:00:09 +0900
categories: blog
index: false
follow: true
keywords: hoge,fuga
canonical_url: 'https://yuis.org/'
---

機能

  • index: falseを指定するとnoindexにできる
  • follow: falseを指定するとnofollowにできる
  • keywordsを指定するとメタキーワードをデフォルトより優先して設定できる
  • canonical_urlを指定するとデフォルトより優先して設定できる

ソースコード

<title>{% if page.title %}{% capture new_title %}{{ page.title }} << YAYB {% endcapture %}{{ new_title }}{% else %}{{ site.title }}{% endif %}</title>

<meta name="description" content="{% if page.excerpt %}{{ page.title }} - {{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">

{% if page.keywords %}  <meta name="keywords" content="{{ page.keywords }}">  {% else %}  <meta name="keywords" content="yuis,blog">  {% endif %}

<meta name="robots" content="{% if page.index == false %}noindex{% else %}index{% endif %}, {% if page.follow == false%}nofollow{% else %}follow{% endif %}">

{% if page.canonical_url %}     <link rel="canonical" href="{{ page.canonical_url }}">{% else %}    <link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">{% endif %}

ちなみにdescriptionも少し弄っています。タイトルを先頭にくっつけるようにしています。


お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


関連するかもしれない記事

ごめんなさい!この記事には関連記事が1つも見つかりませんでした。

Close Menu