【Blogger】最終更新日を任意の日付にする実験

Blogger で公開した記事の誤字脱字を修正したりラベルを変更したりすると、それだけで更新日の日付が変わってしまう。

内容がガラっと変わったわけでもないのになんだかなーと思っていたので、更新日を任意の日付にする方法を考えてみた。

免責事項

当記事の内容はあくまで筆者が実験した結果を述べたものであり、カスタマイズの方法は確立されていません。真似するときは自己責任でお願いします。

実験

記事の編集エディタの冒頭に任意の更新日を記した time タグを置いておいて、それを本来の更新日が表示される場所(大抵は記事ヘッダー)にある time タグと置き換えればいいのではと思った。

まず、Blogger の HTML 編集上にデフォルト(not 任意)の更新日タグを設置する。ブログの投稿ウィジェットはバージョン2 を使っている。

<b:comment>更新日</b:comment>
<b:if cond='data:view.isPost and (data:post.date.year != data:post.lastUpdated.year or data:post.date.month != data:post.lastUpdated.month or data:post.date.day != data:post.lastUpdated.day)'>
  <time class='post-updated' expr:datetime='data:post.lastUpdated.iso8601' itemprop='dateModified'><b:eval expr='data:post.lastUpdated.year + (data:post.lastUpdated.month lt 10 ? &quot;/0&quot; : &quot;/&quot;) + data:post.lastUpdated.month + (data:post.lastUpdated.day lt 10 ? &quot;/0&quot; : &quot;/&quot;) + data:post.lastUpdated.day'/></time>
</b:if>

この b:if の書き方だと、日本時間の午前0時から午前8時59分の間に記事を更新した場合更新日が表示されない問題も解決できる。

time タグのクラス名 post-updated さえ同じならオッケー🙆‍♀

次に、画面そのままに記事本文 <data:post.body/> よりも下に以下のコードを設置して、テーマを保存する。

<script>//<![CDATA[
const u_default = document.querySelector('.post-updated');
const u_tag = document.querySelector('.post-body time[datetime]');
if(u_default && u_tag && u_tag.dateTime.match(/\d{4}-\d{2}-\d{2}/)){
  const options = {year: 'numeric', month: '2-digit', day: '2-digit'};
  const u_day = new Date(u_tag.dateTime).toLocaleDateString('ja-JP', options);
  u_tag.textContent = u_day;
  u_tag.className = 'post-updated';
  u_default.replaceWith(u_tag)
}
//]]></script>

日付は yyyy/MM/dd 形式で表示させた。toLocaleDateString() のオプションをごにょごにょいじれば他の形式にも変えられるぽいけど面倒なのでここにそのやり方は書かない。

記事の冒頭に設置するタグはこちら。

<time datetime="2022-08-05" itemprop="dateModified"></time>

datetime 属性には必ず yyyy-MM-dd 形式で日付を埋め込んでおく。Google 日本語入力か Gboard をお使いなら、「きょう」で変換すれば候補にその形式の日付が出てくる。

結果と考察

この方法で更新日を任意の日付で表示させることができた。

しかしそもそも JavaScript でいじくった更新日を Google 様がどう評価するのかがわからない。

また、JSON-LD の構造化データの dateModified にも任意の更新日を反映するとなると、構造化データ自体を最初から JS で動的に生成するほかない。

元からある構造化データをあとで JS で操作しても、リッチリザルト テストに反映されないことは確認済み。

あとはこの方法だと記事一覧にも任意の更新日載せるのがちょっと面倒そう。

……ということで、上に挙げた懸念点がどうも引っかかるので、やはり大人しく Blogger が用意した更新日を使うのが無難かなと思う。

編集
ホーム