2021年10月ごろから、Bloggerのテーマ編集時にエラーが出て更新できないという不具合が出ています(全員に出るわけではない)。
どうやら以前は問題無く保存できたし、ここ最近は更新していないという場合でも発生しているらしく、そのままではテーマ更新が一切できない状態となるためわりと重大です。
まあすぐ直るやろ……と思いきやなかなか直らないので、対策も含めて記事にしておきます。
»過去記事:■「Blogger」ラベル
最初に対策の例を書いておくとこちら。
・「ページ」ガジェットを削除する
・「ページ」ガジェットを使いたいなら、設定したURLから英数字以外の文字を削除する
(具体的には# ? &あたり)
◇エラー表示の様子
該当のエラーメッセージがこちら。
< >の不等号もそのまま表示されています。
The widget settings in widget with id <b>PageList1</b> is not valid. Page title is invalid.
実際に表示された時の様子。
これが出るとテーマを更新できないため、直前の編集状況は保存も反映もされません。
プレビューの場合は日本語のメッセージでした。
「<b>PageList1</b>」という ID が付いたウィジェットのウィジェット設定が無効です。ページタイトルが無効です。
Error 400
このエラーは原因が分かりづらく、表示に従ってPageList1にいくつかあるtitleあたりを書き換えたり消したりしても解決しません。
このPageList1というのは、管理画面の「レイアウト」で設定できる「ページ」ガジェットのことで、直接的な原因はココにあります。
まあ正確には、これがエラーになってしまうという仕様変更が根本的な要因ではありますが。
今回は「ページ」ガジェットが原因でしたが、もしエラー表示のPageList1の部分が違う場合は別の箇所が原因です。
まずはテーマ編集画面で表示されたガジェットIDを検索すればそれらしいガジェットを特定できるはず。
その後は以下の対応が使える可能性があります。
とりあえず上記のエラーメッセージで検索すると、やはり海外フォーラムでも同様の問題についてのスレッド(2021年10月)が出ていました。
↓
◆Blogger Help
ざっと読んだところ、XMLエディターで特定の文字がエラー判定されているのが原因とのこと。
具体的には、URLに含まれている# ? &がNGのようです。
当ブログの場合、記事に設定しているラベル(カテゴリ)のURLをブログ上部からリンクしています。
ちなみにモバイル環境(スマホ)で見ると、自動で選択ボックス表示になります。
これはBlogger側の機能で上手いこと判断してくれているようです。
各ラベルには最新の8件が表示されるように?max-results=8を付けていたのですが、ここに含まれている?が引っかかっていたようです。
というわけで、「ページ」ガジェットのURLから# ? &を削除する、というのが対策となります。
おそらく同様のエラーが出ている方はラベル等のリンクを設定していると思われるので、各URLから?max-results=8のような記号が含まれる部分を消して保存すればエラーを回避できるはずです。
なお「レイアウト」画面で編集する分にはNG文字が含まれていても普通に保存可能です。
このため、テーマを更新できるようになったかはテーマ編集画面で確認する必要があります。
自分はこれで直ったのですが、直らないようなら他にも# ? &が無いか、あるいは日本語URL等の全角文字が無いかを確認してみてください。
実際max-resultsを消すと、記事数の多いラベルでは表示行数が多くなってしまいますが、まあテーマ編集できなくなるよりはマシです。
もしそれでも改善しないようなら、いったん「ページ」ガジェットを削除するのも検討するべきです。
できれば「レイアウト」画面で消してしまう前に、テーマ編集画面で「ページ」ガジェット部分を丸ごと切り取ることで保存できるか試してみると良いでしょう。
(少なくとも<b>PageList1</b>というエラー表示は無くなるはず)
*
ちなみにトップページのメモ欄やカウンター表示等に使っているHTML/JavaScriptガジェットでは?が含まれるURLがあってもエラーにならなかったので、手書きでリンクを表示させるのもアリかも。
(モバイル版との出し分けは少し面倒だけど)
(余談)
テーマ編集画面で確認したところ、該当URLの末尾は以下のようになっていました。
~?max-results\x3d8
どうやら?はそのままですが、=は\x3d(エスケープシーケンス?)に変換されるようです。
◆HTML文字コード表というところで調べたところ、
=→\x3d
ならば、
?→\x3f
……であろう、と推測しました。
というわけで、各URLの末尾を\x3fmax-results\x3d8に書き換えれば回☆避できるはず……! と思ったのですが、やはりエラーはそのままでした。
どこかで勘違いしているのか、あるいは何かしら方法はあるかもしれませんが、まあ?max-results=8を消すのが簡単かつ確実でしょう。
~?max-results\x3d8
どうやら?はそのままですが、=は\x3d(エスケープシーケンス?)に変換されるようです。
◆HTML文字コード表というところで調べたところ、
=→\x3d
ならば、
?→\x3f
……であろう、と推測しました。
というわけで、各URLの末尾を\x3fmax-results\x3d8に書き換えれば回☆避できるはず……! と思ったのですが、やはりエラーはそのままでした。
どこかで勘違いしているのか、あるいは何かしら方法はあるかもしれませんが、まあ?max-results=8を消すのが簡単かつ確実でしょう。
▲上に戻る
以上、以前から使えた公式機能で急に追跡し辛いエラー出すのやめてよね案件でした。
参考になれば幸いです。ではまた。
»過去記事:■「Blogger」ラベル
ジミー・ペイジの真実 (ハーパーコリンズ・ノンフィクション)
ランペイジ 巨獣大乱闘(吹替版)
はじめまして。
返信削除自分もPageList1のエラーで悩んでいましたが、おかげさまで解決できました!
ありがとうございました。
(`・ω・´)ゞ
返信削除