アーカイブをリストボックスで表示することにした・・・。
挿れる場所作るの書くの忘れてた
デザインでサイドバーにhtml追加して、その下の方に高度な設定とかあるんでそこに適当な名前をつけてください。(ここではhatena-module-custom-archive)
えーっと、最初の年と月を指定して、今の月までぐるぐる・・・えーっと。
これを詳細設定の「
<script> document.addEventListener('DOMContentLoaded', (event) => { //開始する年月 var s_y; s_y=2010; var s_m; s_m=5; var ret; var ret = '<select><option value="">年月選択</option>'; let d = new Date(); //最初の年 if (s_y<d.getFullYear()){ for ( var m = s_m; m < 13; m++) { ret = ret + '<option value="https://elve.hatenadiary.jp/archive/' + s_y + '/' + m.toString().padStart(2, '0') + '">' + s_y + '年' + m.toString().padStart(2, '0') + '月</option>' + '\n'; } } //ぐるぐる for ( var y = s_y+1; y < d.getFullYear(); y++) { for ( var m = 1; m < 13; m++) { // 繰り返す処理を書く ret = ret + '<option value="https://elve.hatenadiary.jp/archive/' + y + '/' + m.toString().padStart(2, '0') + '">' + y + '年' + m.toString().padStart(2, '0') + '月</option>' + '\n'; } } //今年 for(var m=1; m<=d.getMonth() + 1;m++){ ret = ret + '<option value="https://elve.hatenadiary.jp/archive/' + d.getFullYear() + '/' + m.toString().padStart(2, '0') + '">' + d.getFullYear() + '年' + m.toString().padStart(2, '0') + '月</option>' + '\n'; } //閉じ ret=ret+'</select>'; //出力 document.querySelector("#box2-inner > div.hatena-module.hatena-module-html.hatena-module-custom-archive > div.hatena-module-body").innerHTML = ret; }); </script>
・・・何かもうちょいスマートにできないもんかねぇ(^_^;)
参考
【JavaScript入門】for文のループ処理はこれで完璧! for-in / for-of / forEach文も徹底解説! | 侍エンジニアブログ
JavaScriptで数値を0埋めして表示する方法とコード例 | PisukeCode - Web開発まとめ
JavaScriptのシングルクォーテーションとダブルクォーテーション #JavaScript - Qiita
JavaScript | Dateオブジェクトの値から年、月、分、秒などの値を取得する(getFullYear, getUTCFullYear, etc)
HTMLにJavaScriptの変数を渡す方法を解説!セキュリティにも要注意 | 侍エンジニアブログ
JavaScript ドキュメントの読込完了時に処理を実行する方法 - Web系開発メモ