このブログはNode.js製のHexoで構築されてます。

構築方法は以前記事にしてるのでよかったらどうぞ。

【Node.js】Hexoでブログを書くための環境構築

で、HexoというブログフレームワークにはRSSsitemapのページすら標準では用意されてません。

それを補うために多くのプラグインがあります。

他にもたくさんのプラグインがあるので、探してみてください。

Plugins · hexojs/hexo Wiki

このプラグインはnode_moduleといわれるNode.js製のライブラリになっています。

中身はjavascriptなので、簡単にソースコードが読めるので、一読の価値があると思います。

話は変わりまして、このブログの横に新着記事一覧をおしゃれに表示しています。

これは忍者レコメンドを使って表示しています。(ステマではない)

ScreenShot59

画像付きRSSブログパーツ | 忍者レコメンド

簡単に紹介するとRSSのURLを登録すると色々な条件で記事を表示することが出来ます。

使ってみるととっても楽におすすめ記事を表示できます。

よかったら使ってみてください。

だがしかし、ブログで設定したカテゴリ毎のおすすめみたいなことができないのです。

なので、カテゴリ毎のRSSFeedを作ることにしました。

自作node_moduleってやつです。

公開する必要があったら公開します。

では前置きが長くなってしまいましたが、node_moduleを自作する方法を紹介します。

node_moduleの作り方

Node.jsnpmは入っている前提でお話します。

もしインストールされていない方は【Node.js】Hexoでブログを書くための環境構築で触れているので確認してください。

今回の環境は以下になります。

1
2
3
4
$ npm --version
1.4.23
$ node --version
v0.10.31

今回参考にしたライブラリ

RSS Feedを作成してくれるhexojs/hexo-generator-feedが一番あってるかなと思って真似しました。

作りはほぼほぼ同じです。

では作っていきます。

Hexo用の自作node_moduleを作ってみる

こんな感じです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ cd workspace/node/ # 作業用ディレクトリに移動してください。
$ mkdir hexo-test-module
$ cd hexo-test-module/
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (hexo-test-module) hexo-test-module
version: (1.0.0) 0.0.1
description: test module
entry point: (index.js) index.js
test command:
git repository:
keywords: test
author: kosuge
license: (ISC) MIT
About to write to ${作業ディレクトリ}/hexo-test-module/package.json:
{
"name": "hexo-test-module",
"version": "0.0.1",
"description": "test module",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"test"
],
"author": "kosuge",
"license": "MIT"
}
Is this ok? (yes) yes
$ ls
package.json

今回は自作で公開する気がないということで、repositorytestなどは省略してます。

Hexoのモジュールを作る場合はモジュール名の頭にhexo-とつけないと読み込んでくれなかってです。

ちなみに公開されているHexoのプラグインの中にもtestがないやつがたくさんありました。

ということで次は読み込まれたときに実行されるindex.jsを作成します。

package.jsonでいうmainの値です。

index.jsの作成

test_module/index.js
1
2
3
4
5
6
var generator = hexo.extend.generator;
if (generator.register.length === 1){
generator.register(require('./test'))
} else {
generator.register('test', require('./test'));
}

とこんな感じです。

色々なプラグインを見ましたが、endpointとなるファイルにはそこまで処理は書かないで、違うファイルに書くのが通例らしいです。

今回はHexoが記事を生成するときに処理を追加したいので、hexo.extend.generatorに登録した形です。

test.jsの作成

まあ確認ということでこんな感じで作成しました。

作成する階層はindex.jsと同じ階層です。

test_module/test.js
1
2
3
4
module.exports = function(locals, render, callback) {
console.log("Hello test_module!!!");
callback();
}

自分のブログに自作node_moduleをぶっ込んでみる

ここまで出来たら、もう完成です。

自分のHexoで生成したブログで使ってみましょう。

1
2
3
4
5
6
$ npm install ${今回作ったモジュールの絶対パス}
npm WARN package.json hexo-test-module@0.0.1 No repository field.
hexo-test-module@0.0.1 node_modules/hexo-test-module
$ hexo server
Hello test_module!!!
[info] Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.

インストールされたhexo-test-modulenode_moduleディレクトリ以下に含まれています。

これで完成です。

あとは色々なライブラリを確認してみてください。

自作したnode_moduleを世に放つ

とまあかっこ良く言いましたが、簡単にできるらしいです。

今回は急造のため、公開はやめました。

もしかしたら公開するかもです。

そこらへんはまた記事にします。

終わりに

ということで、各記事に同じカテゴリのおすすめ記事を表示させることが出来ました。

今回は最速で使う方法を紹介しましたが、javascriptなのでなんでもできるのかなと思っています。

以上になります。

Web

「Web」のおすすめ記事