gapiライブラリを使って人気記事を表示させる

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から2年以上経過しています。

常々このブログのどこかに人気記事を表示してみたいなぁと思っていました。まぁ閲覧数のあるサイトではないのですけどね。興味本位です・・・。
これまでMovableType向けのプラグインはどれも設置方法がよくわからず記事一覧を表示することが出来ませんでした。

どうにかならないかと気を取り直してがっつり調べでみると、どうやら「gapi」というライブラリを使ってGoogleAnalyticsのデータから人気記事一覧を表示できることが出来そうだということがわかりました。
このサイトはGoogleAnalyticsでアクセス解析を実施しているので早速実装してみることに、なんやかんやで何とか一覧を表示することが出来るようになったので、備忘録として残しておこうと思います。

お約束

参照は自己責任でお願いします。

やったこと

  • gapiをダウンロード
  • ダウンロードしたファイルを解凍しgapiディレクトリへgapi.class.phpをアップロード
  • 呼び出したいファイルに下記のソースを記述。
  • 人気記事?が10件表示されていることを確認。

ソース

define('ga_email','youremail@email.com');
  define('ga_password','your password');
  define('ga_profile_id','your profile id');
  
  
  require_once "../gapi/gapi.class.php";
  
  
  
  $ga = new gapi(ga_email,ga_password);
  
  
  
  $ga->requestReportData(ga_profile_id,
  
                          array('pageTitle','pagePath'),
  
                          array('pageviews','visits'),
  
                          '-pageviews',
  
                          $filter='ga:pagePath=~^/diary/',
  
                          $start_date = date('Y-m-d', strtotime('-30 day')),
  
              $end_date = date('Y-m-d', strtotime('-1 day')),
  
                          $start_index = 1,
  
                          $max_results=10);
  
  $results = Array();
  
  foreach($ga->getResults() as $result){  
  
      $body .= '
              <li><a href="http://www.560days.com'.$result->getPagepath().'">'.$result->getPagetitle().'</a>'.$result->getPageviews().'PV</li>
      ';
  
  }
   
  $content = '<ul>'.
          $body.
      '</ul>';
  echo $content;


設定覚書

define('ga_email','youremail@email.com');
define('ga_password','your password');
define('ga_profile_id','your profile id');
youremail@email.com・・・GoogleAnalytics登録のメールアドレス
your password・・・GoogleAnalytics登録のメールのパスワード
your profile id・・・GoogleAnalyticsのプロフィールID
それぞれ適宜書き換えます。
require_once "../gapi/gapi.class.php";
gapiディレクトリにapi.class.phpを設置
$filter='ga:pagePath=~^/diary/',
diaryディレクトリ下を抽出対象にする。

$start_date = date('Y-m-d', strtotime('-30 day')),
$end_date = date('Y-m-d', strtotime('-1 day')),
抽出期間の設定。多分1ヶ月になっていると思います・・・。
$max_results=10
件数を10件に指定。
'.$result->getPageviews().'
ページビュー数の取得

ついでにやったこと

表示はうまくいったのですが、ブログ名しか表示されていなかったので「なんでだろう?」と思いソースを見直してみたところ、tileにエントリータイトルが表示するように設定されていませんでした・・・。あわてて修正して再構築。

<MTSetVarBlock name="page_title"><$MTEntryTitle remove_html="1"$></MTSetVarBlock>
  ・
  ・
  ・
  <title><$MTGetVar name="page_title"$></title>

これでエントリータイトルを表示するようになったのでサイドバーに表示させています。徐々に意図した表示に変わっていくと思います。

0%