やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Zolaでテーマを適用する

 ちょっと苦労した。

参考

手順

1. テーマを入手する

  1. テーマを探す
  2. githubリポジトリURLをコピーする
  3. git cloneする
git clone https://github.com/dave-tucker/zola-clean-blog

2. テーマを配置する

  1. zola initしたプロジェクトを作成する
  2. プロジェクト配下のthemesディレクトリ配下に、先程入手したテーマのリポジトリをまるごと配置する
  3. テーマからtemplates,static,sass,contentディレクトリをコピーする
  4. プロジェクト配下のそれらを上書きする

3. 設定ファイルを作る

# The URL the site will be built for
base_url = "https://example.com"

# Whether to automatically compile all Sass files in the sass directory
compile_sass = true

# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = true

# Whether to build a search index to be used later on by a JavaScript library
build_search_index = true

generate_rss = true
title = "テスト用ブログ"
description = "これはテスト用ブログです。"

# テーマ
theme = "zola-clean-blog"
taxonomies = [
    {name = "categories", rss = true, paginate_by=5},
    {name = "tags", rss = true, paginate_by=5},
]

[extra]
# Put all your custom variables here
author = "Dave"
clean_blog_menu = [
    {url = "$BASE_URL", name = "Home"},
    {url = "$BASE_URL/about", name = "About"},
    {url = "$BASE_URL/contact", name = "Contact"}
]
clean_blog_social = [
    {url = "https://twitter.com", icon="fab fa-twitter"},
    {url = "$BASE_URL/rss.xml", icon="fas fa-rss"}
]

 エラーメッセージ、テーマ内のconfig.tomlthemes/clean-blogをみて、config.tomlをマージした。

3. 表示する

  1. カレントディレクトリをプロジェクトにする
  2. zola serveする
  3. ブラウザでhttp://127.0.0.1:1111/を参照する

f:id:ytyaru:20201106160315p:plain

所感

 設定ファイルのことがわからず、エラーを食らった。

 zola theme install ...とかで自動的にうまいこと設定ファイルごと処理して欲しかった。でもそんなコマンドはない。再配置とか設定ファイルとか面倒だろ。これ手作業じゃん……。

テーマ

 良いテーマは以下。

 以下のような点があって素晴らしい。あとは日本語&英語が混在してAND,OR検索できれば最高だった。できればブログ全体の記事数、文字数、PV数などの集計ページも欲しい。

  • 検索ボックスがある(英語限定)
  • 背景黒にできる
  • marmaid.jsでフローチャートが書ける
  • シンタックスハイライトできる
  • 記事ごとに以下が表示される
    • 文字数、読む時間
    • カテゴリ、タグ
  • RSS, GitHubのアイコンとリンクが出る

ブログ内検索ボックス

 ブログ内を検索するとき、大抵はGoogleを使う。だが、これはオンラインである必要がある。しかもGoogleに依存している。

 これをローカルだけで動作するようにしたい。するとJavaScriptで実装することになる。専用ライブラリがいくつかあるらしい。

  • 検索
    • lunr.js
    • elasticlunr.js
  • 曖昧検索

 ただ、自前でトークナイザを作成せねばならない。Nグラムとかのアルゴリズムを用いて。このへんはかつてSQLite3の全文検索でもやったが、誰かが作ったのをコピペして動作確認しただけ。今回もそれを調査してコピペ実装してみたい。

 だが、超大変そう。なので、できればすでに誰かがthemeとして作成済みのものを導入するだけで使えるのがいい。これから探してみよう。

対象環境

$ uname -a
Linux raspberrypi 5.4.72-v7l+ #1356 SMP Thu Oct 22 13:57:51 BST 2020 armv7l GNU/Linux