ブログにアクセスランキングを設置
どんなブログでも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に合わせスタイルをいじっていますが、最終的に見た目は以下の通りになりました。

参考サイト