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()slugtitleの他に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_urlslugの間に連結します。

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>';
}

関連リンク


  1. あるあるですが、Date.parse()が整数しか返さないことをすっかり忘れて、Dateオブジェクトを返してくれると思い込んでいて、しばし悩みました。 


Comments !