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〜 を先に処理するように書き換えます。
これでページネイションが効くようになります。