MovableType6に人気記事ランキングをつける。プラグイン「MoreAnalytics」の設定方法。

MovableTypeに人気記事ランキングを設置する方法

最終更新日:2017年8月16日

MovableTypeはブログタイプのCMSなのに人気記事ランキングがありません。
検索しても、古いプラグインは公開停止されていて、いいものがない。

このサイトにはあまり時間をかけたくないので、プラグイン追加するだけでサクッと適当にやりたかったのですが、少し難しいようです。
で、検索していてみつけたのが、4年前のプラグインですが
MoreAnalytics
ドキュメント等まったく読み込んでいないので、適当で無理矢理なコードで汚いですが、一応できました。
備忘録として残しておきます。

※Movable Type公式では、DataApiによる方法をアナウンスしていますが、phpを書いたり面倒くさそうなのでやめました。
詳説 Data API 2.0 Vol.6: アクセスデータからアクセスランキングを作成する

※開発中のプラグインのため、今後能力も上がり日本語のドキュメントも出てくることと思います。
あるいは、公開が中止されるかもしれません。

※2017年追記:おそらく、開発中止しているようです。
代替として、JavaScriptで動く有料サービスの「ranklethttps://ranklet.com/)」をリリースしています(無料プランあり)。
私はサーバーサイドで出来ることはサーバーサイドでやるべきだと考えていますし、有料プランは使いたくないので試していません。
なによりこのサイトは、リニューアルして全ページAMP仕様にしたので、サードパーティのJavaScriptは使えません。。
公式サイトを見る限り設置は超簡単そう。

人気記事ランキング設置手順

プラグイン「MoreAnalytics」を使用して、MovableTypeに人気記事ランキングを設置する手順をまとめました。
もちろん、MovableTypeは静的CMSなので再構築をしなければ更新されません
このやり方で人気記事ランキングを設置するのであれば、ウェブサーバーのCron設定で1日1回くらい自動再構築をする必要がありますね。

Analitycs連携

MobavleType6の標準機能を使って、MovableTypeとGoogleAnalyticsを連携します。
方法は、Movable Typeの公式ドキュメントをご確認ください。

プラグインインストール

GitHubからプラグイン[More Analytics]を落とす。

GitHub mt-more-analytics

中にある「mt-static」と「plugins」配下をMTインストールディレクトリにアップロードして、MT管理画面にアクセス。
通常のプラグインと同じように、勝手にインストールされます。

プラグインの設定

インストールが終了すると、管理画面の左カラムに「Google Analitycs」というメニューが出来ています。
この中の「集計期間」をクリック
集計期間の作成」で、どの期間のGA(Google Analitycs)データを使用するのか設定します。
複数設定できるので、「過去1週間の人気記事」「昨日の人気記事」「1年前の人気記事」など、複数の人気記事ランキングをつくることができます。
あるいは別の使い方として、ひとつ作っておいて、後日集計期間を変更して再構築すれば、サイトに表示させる集計期間を簡単に変えることもできます。
ここで設定した「名称」は後で使います。

MTテンプレート

後はテンプレートタグを使用して、欲しい情報を出していきます。
詳しくは、公式ドキュメント(上記GitHub、またはプラグイン内のREADME.md)や、このプラグインの講演資料をご覧ください。

備忘としてコードを残しておきます。

More Analitycs設置テンプレート例

<mt:GAReport period="(上記の集計期間の作成で設定した名称)" 
 max_results="(ループ回数)"
 metrics="pageviews"
 dimensions="pageTitle,pagePath,pagePathLevel1,pagePathLevel2"
 sort="-pageviews" filters="ga:pagePathLevel1!=/(MTディレクトリ)/;ga:pagePathLevel2=~\.html$;ga:pagePathLevel2!~^/mt-preview-|^/mt-comments|^/mt-search\.cgi|\?|#">
<mt:GAReportHeader>
  <ul class="list-ranking">
</mt:GAReportHeader>
   <li>
    <a href="<$mt:GAValue name="pagePath"$>">
     <$mt:GAValue name="pageTitle"$>
    </a>
   </li>
<mt:GAReportFooter>
  </ul>
</mt:GAReportFooter>
</mt:GAReport>

GAReportタグの「dimensions」属性に欲しい情報を列挙しています。filters(絞り込み)に使うデータ名も記入します。
管理画面左カラムの「Google Analitycs」内「APIプレイグラウンド」画面で、どのような内容が取れるのかとかを見たり、このコード自体を生成できます。
プラグインファイル内の「/misc/dimensions-and-metrics/」内には、使えるdimensionsmetricsが列挙されています。
max_resultsはループ回数を半角数字で指定。上位10件を表示するなら10と記入。

もし、特定のブログだけの人気ランキングがほしければ、「filters」属性に

ga:pagePathLevel1=/(ブログ名)/
を追加します。

※上記コードの「filters」属性の中身は、第1階層がMTディレクトリを除外、第2階層が「.html」で終わるURL、かつ、第2階層が「mt-preview」や「mt-comments」「mt-search」の末尾「.cgi」ではないもの、という絞り込み(filters)をする設定です。
構造が違うサイトでも、filtersを適切に設定することで、欲しい情報が取得できると思います。

filters等GAReportのテストは、GoolgeAnalyticsのQuery Explorerが便利です(要GAログイン)。
filtersを試すときには、filters リファレンスを参照すれば正規表現等も使えることがわかります。

本当はentryだけを対象とするもっと丁寧な方法がありそうな気がするのですが、filtersで代用しました。

MoreAnalyticsまとめ

当たり前ですが取得できるデータは、GoogleAnalitycsが出してくるデータだけです。
MovableType側のデータとの連係はありません。
このため、投稿日や投稿者をランキングに表示することはできません
やりたければ、それなりにカスタマイズをする必要があるでしょう。
一旦このプラグインでは記事タイトルだけを取得して、MT側のデータでタイトルから投稿日を取得する、みたいな。

このプラグイン、実はたいしたことをしていなくて、コアな部分はGoogleが無償提供している「Core Reporting API」を使用しているだけです。
このAPIは適切なクエリを設定したURLでアクセスすると、その指示内容に応じたデータを返してくれます。

※現在最新のAPIはこのCore Reporting ではなく、 「Reporting API v4」です。現状このプラグインには関係ありませんが、Googleが旧APIの提供を終了すればこのプラグインも使えなくなるでしょう。

phpやJavaScriptをスクラッチで書ける方なら、このAPIを使ってそれほど労力をかけずに人気ランキングを自作できると思います。

JavaScriptが使えるページで、人気記事ランキングを1つしか使わないのであれば、rankletを使った方がはるかに簡単でしょう(無料プランは1個までしか使えない)。

ちなみに、このサイトはリニューアルに伴い人気記事ランキングを削除したので、現在このプラグインを使用していません。
様子をみてまた復活させるかも。

コメント(0)

  • ※コメント確認画面はありません。
  • ※コメント投稿後は再読み込みをしてください。
CLOSE ×