Metalsmith のページネーションは機能不足
現在、ブログ構築がストップしているのですが、その原因として、Metalsmith のページネーション系プラグインの機能が足りず、十分なサポートが得られていないという点があります。
metalsmith-collection プラグイン
このプラグインは、記事の集合( Wordpress 的な言い方をすると、アーカイブと同じようなものを作れます。以下ではコレクション)を作るためのものです。コレクションを作った時点で、next と previous というメタデータが追加され、「次の記事」「前の記事」のリンクを作ることができます。
コレクションには、記事を並べる順序を指定できます。普通は date メタデータで逆順(新しいもの順)にソートすることが多いでしょう。場合によっては、古いもの順にソートしたいこともあるでしょう。現在の metalsmith-collection では、複数のコレクションを作ることはできるのですが、新しいものと古いもののコレクションの両方を作ると、next と previous は上書きされて壊れます。
例を示します。today.html と yesterday.html の 2つの投稿があったとします。最初に、新しいもの順にソートします。新しいもの順に並べると、today.html は以下のような next を持つことになります。
"today.html": {
pagination: {
next: { /* → yesterday.html */ }
}
}
この状態で、古いもの順にソートします。today.html は、以下のようになります。
"today.html": {
pagination: {
next: { /* → yesterday.html */ }
previous: { /* → yesterday.html */ }
}
}
同じオブジェクトを使い回して、next は残ったまま、previous が追加されますので、変なナビゲーションができあがります。
metalsmith-pagination プラグイン
このプラグインは、metalsmith-collection で作ったコレクションを実際にページ単位に分割して、ページネーションを実現します。このプラグインで作れるページネーションは、こういうものです。
(おそらく多くの人が)作りたいものは、こういうものでしょう。
何が足りないかは、お分かりでしょう。Handlebars.js と相性が悪いのが原因という点もあるのですが、ちゃんと考えて作ってよ、と言いたくなります。
metalsmith-tags プラグイン
さらに話をややこしくしているのは、metalsmith-tags で作ったタグページのページネーションは、metalsmith-tags が独自に行うという点です。使う側としては別段どこでやってもらっても構わないのですが、同じテンプレートを使い回せないと面倒です。
で、どうすんの?
不満ばかり書きましたが、「このブログではできてんじゃん」ということですね。はい。そうです。