WEB掻っ穿じり

WEB備忘録とチャリとカメラ

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〜 を先に処理するように書き換えます。

これでページネイションが効くようになります。