ブログにアクセスランキングを設置
どんなブログでもGoogleアナリティクスのアクセス数を利用して、アクセスランキングを埋め込める『Ranklet』というサービスを見つけました。現時点でMovableTypeを使用しているこのブログに埋め込みたいと思います。
使い方はとても簡単です。
- Googleアカウントでログオン
- ランキングに使用するGoogleアナリティクスのプロファイルを選択
- 表示されたコードをコピペ
これだけで簡単にブログに埋め込むことができます。
HTML、CSS、Javascriptを編集する画面があるので、カスタマイズの自由度はとても高いです。ランキングの集計期も直近の期間から長期までいろいろ選べます。
デフォルトのソース
デフォルトで表示されるHTMLソースは、なぜか<table>が使用されています。
html
<div class="ranklet ranklet-reset"> <table class="ranklet-table"> <tbody class="ranklet-pages"> {{#context.pages}} <tr class="ranklet-page"> <td class="ranklet-rank"> {{rank}} </td> <td class="ranklet-image"> {{#image}} <a href="{{url}}" class="ranklet-link"> <img class="ranklet-img" src="{{image}}" /> </a> {{/image}} </td> <td class="ranklet-meta"> <div class="ranklet-title"> <a href="{{url}}" class="ranklet-link"> {{title}} </a> </div> {{#description}} <div class="ranklet-description"> <a href="{{url}}" class="ranklet-link"> {{description}} </a> </div> {{/description}} </td> </tr> {{/context.pages}} </tbody> </table> </div>
CSS
#ranklet-{{context.id}} { .ranklet-reset { // リセット table, tr, td, div, span { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; line-height: 1; box-sizing: border-box; } } .ranklet-table { border-collapse: separate; border-spacing: 8px 24px; width: 100%; td { vertical-align: middle; } .ranklet-rank { text-align: center; font-size: 120%; } .ranklet-image { text-align: center; img { max-width: 64px; max-height: 64px; } } .ranklet-meta { .ranklet-title { font-size: 120%; line-height: 125%; } .ranklet-description { margin-top: 8px; line-height: 125%; } } } }
MovableType用に書き換えたテンプレート
デフォルトの<table>で組まれているソース嫌なのと、デフォルトのまま使用するとデザインがおかしくなるので、以下のようにリスト形式にカスタマイズしました。デフォルトのソースにあるページの概要は不要なので{{description}}
を省きました。
HTML
<aside > <section id="side-recentpost" class="side-entrylist"> <nav> <h2 class="widget-header"><i class="far fa-file-alt" aria-hidden="true"></i>週間アクセスランキング</h2> <div class="widget-content"> <ol class="entryList ranklet-list"> {{#context.pages}} <li class="ranklet-list-item"> <span class="ranklet-image"> {{#image}} <a href="{{url}}" class="ranklet-link"><img class="ranklet-img" src="{{image}}" loading="lazy" /></a> {{/image}} </span> <span class="ranklet-title"> <a href="{{url}}" class="ranklet-link">{{title}}</a> </span> </li> {{/context.pages}} </oll> </div> </nav> </section> </aside>
CSS
ol.ranklet-list { list-style-position: inside; } .ranklet-image, .ranklet-title { display: table-cell; } span.ranklet-image { width: 25%; } img.ranklet-img { width: 100%; }
他にもMovableTypeのCSSに合わせスタイルをいじっていますが、最終的に見た目は以下の通りになりました。