middleman-blogでカテゴリーcustom_collectionsのpaginationに関して
category:web
当サイトのブログ機能をWordpressからmiddleman-blogへ移行したのですが、Middlemanのブログ機能は投稿に「タグ」をつける機能はデフォルトであるのですが、カテゴリーという項目もともとないみたいです。
Wordpressからの構成をGoogle Search Console上でなるべく遜色なく移行したいので、どうしてもカテゴリーという振り分けは必要でした。
【config.rb】に、
blog.custom_collections = {
category: {
link: "/{category}/index.html",
template: "category.html"
}
}
を追記してカテゴリーというWordpressのカスタムタクソノミー的な新たな分類は作ることができたのですが、一覧画面のページネイションがどうしても上手くいかない。
調べてみるとMiddlemanの方に原因があるみたいでした。
middleman-blog 3.5.3にはextension.rbに書き換えが必要
middleman-blog 3.6.0はすでに修正されているみたいなのですが、当方が使っていたのがver.3.5.3、bundlerでインストールしているのですが以下の書き換えで対応できたので共有します。
詳しくはGithubをご確認ください。
bundlerでインストールしたプロジェクトの「vendor」内の「middleman-blog」まで移動してその中の、
extension.rbの中の136行目から始まるif文の順番を変えます。
if options.paginate
require 'middleman-blog/paginator'
@paginator = Blog::Paginator.new(@app, self)
@app.sitemap.register_resource_list_manipulator(:"blog_#{name}_paginate", @paginator, false)
end
if options.custom_collections
require 'middleman-blog/custom_pages'
register_custom_pages
end
を、
if options.custom_collections
require 'middleman-blog/custom_pages'
register_custom_pages
end
if options.paginate
require 'middleman-blog/paginator'
@paginator = Blog::Paginator.new(@app, self)
@app.sitemap.register_resource_list_manipulator(:"blog_#{name}_paginate", @paginator, false)
end
のように、if options.custom_collections〜 を先に処理するように書き換えます。
これでページネイションが効くようになります。