Ghost Theme: Purus v2.0.0 の検索機能を修正
先日更新されたこのブログで使用しているテーマ Purusですが、検索機能がうまく働かないので修正しました。
修正点
先日書いたよう、問題はPurusの新しい検索機能が日付を記事のURLに含める設定("Include the date in your post URLs" オプション)を有効にしていると、検索機能で生成するURLにうまく反映されないという問題でした。
開発元の修正が時間がかかりそうな予感がしたので、自分で修正することにしました。
修正のポイントとしては、検索機能の中で発効日("published_at")をAPIで取得しておきます。
以下のように page-search.hbsの中を修正して、ghost.url.api()
で slug
やtitle
の他にpublished_at
を取得するようにします。
$.get(ghost.url.api('posts', {limit: "all", fields: "slug,title,published_at"})).done(function(data) {
published_at
はISO-8601形式のようですから、そのままパースしてDateオブジェクトに変換します1。
月と日を二桁にフォーマットし直して文字列として連結して、URLの”YYYY/MM/DD"の部分を作って @blog_url
とslug
の間に連結します。
suggestion: function(data) { // added by yostos var published_date = new Date(Date.parse(data.published_at)); var published_date_part = published_date.getFullYear() + '/' + ('0' + (published_date.getMonth() + 1)).slice(-2) + '/' + ('0' + published_date.getDate()).slice(-2) ; return '<a href="{{@blog.url}}/' + published_date_part + '/' + data.slug + '"><h2>' + data.title + '</h2></a>'; // end of added by yostos // removed by yostos //return '<a href="{{@blog.url}}/' + data.slug + '"><h2>' + data.title + '</h2></a>'; }
関連リンク
-
あるあるですが、Date.parse()が整数しか返さないことをすっかり忘れて、Dateオブジェクトを返してくれると思い込んでいて、しばし悩みました。 ↩