WEB掻っ穿じり

WEBデベロッパー備忘録とチャリ

middleman-blogでカテゴリーcustom_collectionsのpaginationに関して

  category:development

当サイトのブログ機能を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〜 を先に処理するように書き換えます。

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

comments powered by Disqus