カレンダーモジュール
サイドバーモジュールの中で、唯一対応が面倒なものといえばカレンダーモジュールでしょう。
必ず対応する必要はありませんが、非対応の時は README に一言記載すると良いと思います。
HTML構造
<div class="hatena-module" id="side-calendar" data-module-name="des_calendar-ja"> <div class="hatena-moduletitle">カレンダー</div> <div class="hatena-modulebody"> <table class="calendar"> <thead> <tr class="calendar-month"> <td class="calendar-prev-month" colspan="2"><a href="#"><<</a> </td><td class="calendar-current-month" colspan="3"><a href="#">2015/01</a></td> <td class="calendar-next-month" colspan="2"><a href="#">>></a></td> </tr> <tr class="calendar-wdayname"> <td class="calendar-sunday w0">日</td> <td class="calendar-weekday w1">月</td> <td class="calendar-weekday w2">火</td> <td class="calendar-weekday w3">水</td> <td class="calendar-weekday w4">木</td> <td class="calendar-weekday w5">金</td> <td class="calendar-saturday w6">土</td> </tr> </thead><tbody> <tr> <td></td> <td></td> <td></td> <td></td> <td class="calendar-day w4 holiday" title="元日">1</td> <td class="calendar-day w5">2</td> <td class="calendar-day w6">3</td> </tr> <tr> <td class="calendar-day w0">4</td> <td class="calendar-day w1">5</td> <td class="calendar-day w2">6</td> <td class="calendar-day w3">7</td> <td class="calendar-day w4">8</td> <td class="calendar-day w5">9</td> <td class="calendar-day w6">10</td> </tr> <tr> <td class="calendar-day w0">11</td> <td class="calendar-day w1 holiday" title="成人の日">12</td> <td class="calendar-day w2">13</td> <td class="calendar-day w3">14</td> <td class="calendar-day w4"><a href="#">15</a></td> <td class="calendar-day w5">16</td> <td class="calendar-day w6">17</td> </tr> <!-- 略 --> </tbody></table> </div> <!-- hatena-modulebody --> </div> <!-- hatena-module -->
みればそのままなのであまり悩むことはないと思いますが、いくつか補足です。
- 該当日に記事が存在すると、その日付のリンクが生成されます。
- 表示中の記事の日付、表示しようとした日付(上の日付をたどった時など)は「day-selected」というクラスが出力されます。
- そのカレンダー表示してる「その日」に「day-today」というクラスが出力されます。
satsuki2の実装
/*-------------------------------------------------------------------- ●sidebar:カレンダー ---------------------------------------------------------------------*/ table.calendar { margin-left: auto; margin-right: auto; font-size: 95%; line-height: 100%; } table.calendar td.calendar-prev-month { text-align: left; margin-left: 0.5em; } table.calendar td.calendar-current-month { text-align: center; } table.calendar td.calendar-next-month { text-align: right; margin-right: 0.5em; } table.calendar td { text-align: right; } table.calendar td.calendar-day a { text-decoration: underline; } /* 土曜日 */ table.calendar td.w6, table.calendar th.w6 { background-color: #ccf; } /* 日曜日、祝日 */ table.calendar td.w0, table.calendar th.w0, table.calendar td.holiday { background-color: #fcc; } /* 今日 */ table.calendar td.day-today { font-weight: bold; } /* 選択した日付 */ table.calendar td.day-selected { text-decoration: none; border: 1px solid #33f; }