ブログランキング・にほんブログ村へ
ポチッと応援願います
初めての方はこちらへ 

投稿日 2020年1月18日土曜日

予備環境の構築

業務外


今回のトラブルで懲りたので、2016年の長期休眠前に放置状態だった『テスト環境』と『バックアップ環境』のクローンを最新化しました。
以前はいきなり本番環境の設定を変えるようなことはせず、『テスト環境』で動作確認してから本番適用していました。いつの間にか手抜きが当たり前になり、今回本番環境を壊してしまいました。以後、気をつけましょう。

バックアップもBloggerの非公開ブログとしてサーバ上に保存していたのですが、長期休眠後はローカルのPCのみで保管していました。このPCがクラッシュしたため、バックアップはパーです。それも一昨年時点で。笑

昔の人間なのでクラウド環境はどうしても信用できないのですが、自分のローカル環境の方がよっぽど危ないことが身に沁みましたわ。



こちらが最新化したテスト環境です。本番環境と識別するため、タイトルの文字色(crimson:鮮やかな赤色)を変更しています。テーマ自体を変更すれば、もっと確実ですがブログテンプレートが初期化されてしまいます。

テスト環境を最新化しました、
タイトルの文字色(crimson:鮮やかな赤色)で識別できます 

バックアップ環境です。こちらもタイトルの文字色(forestgreen:深い緑色)を変更しています。

バックアップ環境も最新化しました、
タイトルの文字色(forestgreen:深い緑色)で識別できます

感想と構想


今回、『テスト環境』と『バックアップ環境』のクローンを最新化しました。万が一、本番環境が破損しても予備環境が2面あることになりますので、堅牢性は格段に上がりました。
更に。ここに定期的に1面づつバックアップを行っていけば、2世代管理ができます。
いいね!!



2020年1月23日木曜日

今朝、初回のバックアップを取って、予備環境に反映しました。
環境差異をタイトルの文字列色で識別できるようにしましたが、ブログテンプレートの修正が面倒臭い。面倒臭いとやらなくなるので、識別できず、事故が起こります。
いかんね、目に見えるようだ。笑

少しでも作業が楽になるように、ガジェットから書式登録ができるように小改造しました。

タイトルの文字色、背景色を指定できるようにしました

もう少し頑張れば、ブログのサイト名から自動でタイトル背景色の切り替えもできるはず。人の操作を不要にするのが一番安全です。次回までの宿題にします。


投稿日 2020年1月17日金曜日

ウェブバージョンのナビゲーションリンク見直し

業務外


今回は当初謎の動きと思っていた、ウェブバージョンのナビゲーションリンクです。
画面中央のホームリンク下に、モバイルバージョンへのリンクが表示されています。普通は使わないのかもしれませんが、新規に投稿した記事のレイアウトの確認でウェブバージョンとモバイルバージョンを交互に表示することは良くあります。
スマホの実機で確認するのは最終です。

画面中央のホームリンク下に、モバイルバージョンへのリンクが表示

モバイルバージョンには逆にウェブバージョンへのリンクが表示されています。

モバイルバージョンでは常に
ウェブバージョンへのリンクが表示 

ところが、ウェブバージョンでこのモバイルバージョンへのリンクが表示されないことがあります。苛!!

画面中央のホームリンク下に、モバイルバージョンへのリンクが非表示

ウェブバージョンのナビゲーションリンクを制御しているのは、 id='nextprev'を持つ、<b:includable>です。ソースを記載します。
15~19行目でモバイルバージョンへのリンクを生成しています。生成する条件は「mobileLinkUrl」が存在する場合です。「mobileLinkUrl」はモバイルバージョンで使用される、URL末尾にパラメタ「?m=1」若しくは「?m=0」が指定されたURLです。
つまり、モバイルバージョンからウェブバージョンに移動したときは、リンクを表示しますが、ウェブバージョンだけで操作しているときには無駄なリンクは表示しない。ということらしい。
21~26行目が今回追加したコードです。標準でリンクを生成しないときにもリンクを生成するように修正しています。

              <b:includable id='nextprev'>
  <div class='blog-pager' id='blog-pager'>
    <b:if cond='data:newerPageUrl'>
      <span id='blog-pager-newer-link'>
      <a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
      </span>
    </b:if>

    <b:if cond='data:olderPageUrl'>
      <span id='blog-pager-older-link'>
      <a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
      </span>
    </b:if>

    <a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
    <b:if cond='data:mobileLinkUrl'>
      <div class='blog-mobile-link'>
        <a expr:href='data:mobileLinkUrl'><data:mobileLinkMsg/></a>
      </div>

    <!--2020/1/7WebバージョンにMobileバージョンへのリンク追加-->
    <b:else/>
      <div class='blog-mobile-link'>
        <a expr:href='data:blog.url + &quot;?m=1&quot;'>モバイル バージョンを表示</a>
      </div>
    <!--2020/1/7ここまで-->

    </b:if>

  </div>
  <div class='clear'/>
</b:includable>



URLにモバイルパラメタがなくても、モバイルバージョンのリンクが表示されるようになりました。

モバイルバージョンへのリンクを常時表示


感想と構想


また、一日掛けてつまらないカストマイズをしていました。笑

当初謎の動きと思っていた、ウェブバージョンのナビゲーションリンクですが、ソースコードを見てやっと開発者の意図を理解いました。
まー、余計な配慮ですな。


投稿日 2020年1月16日木曜日

ラベルリストの見直し

業務外


Bloggerには投稿記事を分類する「ラベル」という機能があります。「ラベル」はいわゆる「タグ」です。井戸掘りブログでは、サイドバーにラベルのリストを表示する「ラベル」ガジェットを使っています。モバイルバージョンでは記事の下側、「コンテンツ」と「ブログアーカイブ」の間に配置しています。

こんな感じ。
投稿数順の並びですが、閲覧者には意味がないです。井戸道具の記事が多いのは判りますが、いきなり300件も記事を読まんでしょう。それにラベルの並びに意味が無いので、読みたいラベルを探し難い。

投稿数順の並びだが閲覧者に意味がない

あいうえお順に並び替えてみましょう。作業用のリンクチェックの記事は一覧には不要です。

ラベルガジェットの設定画面

こんな感じ。昇順でしか一覧できません。井戸掘りブログなのに、井戸掘りの記事が後半に並んでいます。気持ち悪い。

あいうえおに並び変えたが…

このままじゃ、いかん。と言うことで、ラベルリスト用の静的なカスタムガジェットを作りました。
井戸とその他関連を分けて階層化し、並びも『井戸を掘ること』に関連が強い並びに整理しました。

井戸とその他を分けて、並びも整理 

おソースです。
<!--2020/1/16 サイドバーホバー 背景:dodgerblue、文字:white -->
<style>
.sidebar a:hover {
background-color:dodgerblue; 
color:white;
}
</style>

<!--2020/1/16 サイドバーにラベルリストを表示 -->
<ul>
  <li><b><span style="font-size: x-small;">井戸</span></b><br /></li>
  <ul>
    <li><a href="https://nsfarmer.blogspot.com/search/label/井戸掘り">井戸掘り</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/井戸報告">井戸報告</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/井戸調査">井戸調査</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/井戸動画">井戸動画</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/井戸道具">井戸道具</a><br /></li>
  </ul>
  <li><b><span style="font-size: x-small;">関連</span></b><br /></li>
  <ul>
    <li><a href="https://nsfarmer.blogspot.com/search/label/畑作">畑作</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/プロダクツ">プロダクツ</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/ブログ">ブログ</a><br /></li>
    <li><a href="https://nsfarmer.blogspot.com/search/label/バイク">バイク</a><br /></li>
  </ul>

カッコ良くなりましたが、弊害があります。
Blogger標準の「ラベル」ガジェットなら、記事に新規ラベルを追記すれば自動的にラベルリストを更新してくれます。しかし静的なカスタムガジェットでは、HTMLの修正が必要です。
まー、自分の投稿スタイルだと、ラベルの追記は慎重なので問題ありませんが…。

後は投稿件数の追記ができればOKです。



投稿件数も頑張って付けてみました。別アプローチです。
ラベルリストに投稿件数を付けるには、ラベルリスト配列の要素である各ラベルの件数が必要です。でも配列のアクセス方法が判らない(公開されていない)のでループ処理で回す必要があります。つまり前述の静的なガジェットではなく、動的なガジェットが必要です。今更、一から作る根性は無いので、標準の「ラベル」ガジェットをカストマイズしてみましょう。

次のソースが標準の「ラベル」ガジェットの修正前(抜粋)です。
表示がリスト形式指定時のラベルの組み立て処理です。
blog.url(https://nsfarmer.blogspot.com)とlabel.url(https://nsfarmer.blogspot.com/search/label/ラベル名)を<b:if>で比較している箇所は意味不明。一致しないとして、<b:else/>側に降りてラベル名とラベルURLのリンクを組み立てています。そして後部に投稿件数を追記しています。
    <b:if cond='data:display == &quot;list&quot;'>
      <ul>
        <b:loop values='data:labels' var='label'>
          <li>
            <b:if cond='data:blog.url == data:label.url'>
              <span expr:dir='data:blog.languageDirection'><data:label.name/></span>
            <b:else/>
              <a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
            </b:if>
            <b:if cond='data:showFreqNumbers'>
              <span dir='ltr'>(<data:label.count/>)</span>
            </b:if>
          </li>
        </b:loop>
      </ul>
    <b:else/>



次のソースが標準の「ラベル」ガジェットのカストマイズ後(抜粋)です。
ラベルリストを階層化し、第一階層には『井戸』と『(井戸)関連』を配置します。ラベルの一覧を組み立てるため無駄ですが『井戸』と『(井戸)関連』で2回ループを回しています。1回目のループは『井戸』以外のラベルは無視。2回目のループでは『井戸』のラベルを無視しています。
    <b:if cond='data:display == &quot;list&quot;'>
      <!--2020/1/16 ラベルリストの階層化-->
    <ul>
      <!--第一階層、主要素固定値-->
      <li>
        <span>井戸</span>
      </li>
      <ul>
        <b:loop values='data:labels' var='label'>
        <!--ラベル要素の判定-->
        <b:if cond='data:label.name contains "井戸"'>  
        <li>
            <b:if cond='data:blog.url == data:label.url'>
              <span expr:dir='data:blog.languageDirection'><data:label.name/></span>
            <b:else/>
              <a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
            </b:if>
            <b:if cond='data:showFreqNumbers'>
              <span dir='ltr'>(<data:label.count/>)</span>
            </b:if>
        </li>
        <!--主要素終わり-->
        </b:if>
        </b:loop>
      </ul>

      <!--第一階層、従要素固定値-->
      <li>
        <span>関連</span>
      </li>
      <ul>
        <b:loop values='data:labels' var='label'>
        <!--ラベル要素の判定 not-->
        <b:if cond='data:label.name contains "井戸"'>
        <b:else/>
        <li>
            <b:if cond='data:blog.url == data:label.url'>
              <span expr:dir='data:blog.languageDirection'><data:label.name/></span>
            <b:else/>
              <a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
            </b:if>
            <b:if cond='data:showFreqNumbers'>
              <span dir='ltr'>(<data:label.count/>)</span>
            </b:if>
          </li>
        <!--従要素終了-->
        </b:if>
        </b:loop>
      </ul>
      <!--2016/1/16 ラベルリスト階層化終わり-->
    </ul>  
    <b:else/>


ラベルの見直し、一応完了です。
標準の「ラベル」ガジェットを使っていますので、制約は同じです。第一階層は固定値でカテゴライズしましたが、第二階層の並びはそれぞれあいうえお順の昇順です。
静的ガジェットのように、並びに『井戸を掘ること』に関連の強さを持たせることはしてません。並びを制御するには、固定文字列をべた書きにしてswitch~caseとかで順番の実装が必要です。でも、これ以上ソースコードを汚したくない。

ラベルの見直し完了です




もう少し調べました。

Bloggerの参考書の紹介サイト(英語)に、『パンくずリスト』のサンプルが公開されていました。『ラベル』とは異なりますがGUIとしてやりたいことは同じです。結局、ソースに以下のように固定文字列をべた書きしています。文字列に対応したインデックリストを作って、インデックスリストで表示制御するような汎用化はやってません。所詮、文字列が追加・変更・削除されたら、インデックスリストのメンテナンスが必要ですからね。
儂のアプローチで良かったんだ。笑い

(参考)
Add Manageable Stylish Breadcrumb in Blogger
ブロガーに管理可能なスタイリッシュなパンくずリストを追加
https://bloggerbook.blakbin.com/2018/11/add-manageable-stylish-breadcrumb-in.html
[B] Drinks
  - [B1] Juice
  - [B1] Water
  - [B1] Milk
[B] Food
  - [B1] Meat
       - [B2] Poultry
            - [B3] Chicken
                 - [B4] Drumstick
                 - [B4] Wings
            - [B3] Turkey
       - [B2] Red Meat
            - [B3] Goat
            - [B3] Lamb
            - [B3] Beef


感想と構想


デッドリンクチェックの準備を進めていますが、中々進展せず…。つい現実逃避で関係ないことを始めています。ラベルリストも今々、修正すべきことではありません。笑
そもそも、井戸掘りどうなった?



ラベルリストの並び直しは、こちらの記事を参考にさせていただきました。
サイドバーにラベルリストを表示
https://www.howtonote.jp/blogger/label/index3.html

ラベルリスト用のカスタムガジェットの作成は、こちらの記事を参考にさせていただきました。
サイドバーに任意の順番でカテゴリを並べる [Blogger]
https://akari-log.com/blogger-2/

Bloggerの参考書の紹介サイト(英語)。一番ここが詳しい。参考書買えってことね。笑
BloggerBook
https://bloggerbook.blakbin.com/

並行して進めている、デッドリンクチェックの準備でブログテンプレートやガジェットのカストマイズが必要です。勉強しながらやっていますが、中々進まない。気分転換で始めた本稿ですが、良いエクササイズになりました。(言い訳)


投稿日 2020年1月15日水曜日

W3Cリンクチェッカー運用改善

業務外


W3Cリンクチェッカーを使った一括リンクチェック用の手順書兼備忘録を残しましたが、このままのやり方では失敗します。

2019年9月7日土曜日
W3Cリンクチェッカー備忘録


昨年9月に、事前準備として環境変更をしましたが、リンクチェック自体に手を付けられず、かと言って環境戻しも面倒くさい。結局、モバイルバージョンの表示が中途半端なまま、半年近く放置していました。

ブログテンプレートの手編集/手戻しは止めて、自動化を実現します。




本来、あるべき姿は?

各ガジェットのモバイルバージョンの抑止はそれぞれ指定するのではなく、変数化してオン・オフは1回の操作で処理すべきです。その操作もテンプレートを直接編集するのではなく、外部のガジェット経由が望ましい。

モバイルのナビゲーションボタン(ホームボタンや、ウェブバージョンへのリンクのオン・オフ)もこの変数で操作できるようにする。

そのためには、グローバル変数の新規追加か、利用者が使えるグローバル変数が必要です。
以下が右サイドバーの定義です。6個のガジェットのパラメータをグローバル変数経由で「mobile='yes'」から「mobile='no'」に変えたい。

  • id='AdSense1' , type='AdSense'
  • id='HTML3' , title='自己紹介'
  • id='BlogSearch1' , title='このブログを検索'
  • id='PageList1' , title='コンテンツ'
  • iid='Label2' , title='ラベル'
  • id='BlogArchive1' , title='ブログアーアカイブ'

右サイドバーの定義です



実装検討

Blogger ヘルプを見付けました。
https://support.google.com/blogger/?visit_id=637147039830953446-3084404808&hl=ja&rd=1#topic=6321969

Blogger スタート ガイド

レイアウト用のデータタグ
https://support.google.com/blogger/answer/47270?hl=ja

レイアウト用ページ要素タグについて
https://support.google.com/blogger/answer/46888?hl=ja

レイアウト用のウィジェット タグ
https://support.google.com/blogger/answer/46995
グローバル変数は限られ、追加方法は無いようです。うーむ。いきなり構想倒れです。笑

ヘルプの内容も薄い。情報が足らないね。ブログテンプレートのソースコードと突き合わせる時に気になります。



頭の中のアイデアの整理です。

案1
グローバル変数を定義してガジェットから操作する。以下がイメージ。
  • 新規にリンクチェックガジェットを定義
  • この中で内でグローバル変数(例)GlobalMobile=yes/noを操作
  • 各ガジェットのMobileパラメータはGlobalMobileを設定
  • リンクガジェット内での操作が各ガジェットのMobileパラメータに伝播する。
→グローバル変数の追加できない。

案2 管理ツールのパラメータでガジェットを制御
管理ツールから何らかのパラメータを操作してガジェットの表示/非表示を制御する。以下がイメージ。
  • 管理ツールである条件を変更
  • この条件を元各ガジェットのMobileパラメータにyes/noを設定
使うパラメタの条件です。
  • 参照系の変更のみで更新系に影響がないこと(データが汚れない)
  • 参照系でも当たり障りがないこと(大きく見た目やレイアウトが変わらない)
  • パラメータがソースからアクセスできること。
管理画面をじっくり見ましたが、使えそうなのは「言語と形式」の言語とタイムゾーンぐらいですね。言語もアラビア語だとびっくりしますが、ボタンが繁体字(台湾)ぐらいなら、あまり目立たないでしょう。Blogger スタートガイドに記載がありませんが、言語についてはブログテンプレートにそれらしい変数がありました。タイムゾーンも使えそうですが、変数名が判りません。

各ガジェットのMobileパラメータへ引き渡す方法は確立していません。しかし、ガジェットと関係のない、モバイルのナビゲーションボタンの抑止も必要なので試してみましょう。

モバイルのナビゲーションボタンは画面中央のセクションで記事本文の下側に配置されています。id='Blog1'、title='ブログの投稿'が記事本体です。

画面中央のセクション構成です、title='ブログの投稿'が記事本体
記事本体を展開すると次の構造になっていました。ここでid='nextprev'がモバイルのナビゲーションボタンです。

記事本体の構成を展開しました

さらにid='nextprev'を展開しました。ここに各ナビゲーションボタンが定義されています。これに言語を指定して<b:if> Bloggerタグで制御します。
  • id='blog-pager-newer-link'(次の投稿)
  • id='blog-pager-older-link'(前の投稿)
  • id='blog-pager-home-link'(ホーム)
  • class='mobile-desktop-link'(ウェブバージョンを表示)

記事本体のmobile-nextprevにナビゲーションボタンが定義されています

さー、勝負勝負!!
管理ツールで言語を変更すると。ナビゲーションボタンが消えました。成功です。
『コメントを投稿』が『張貼留言 』に変わっています。実運用では言語を切り替えるのは、リンクチェックする数時間だけです。管理ツールで言語を戻すだけなので一瞬です。気にしない。気にしない。
これがブログテンプレートを元に戻すとなったら、また大変ですけどね。

言語=日本語指定、
ナビゲーションボタンが表示されています 

言語=中国語(繁体字)指定、
ナビゲーションボタンが消えました

ソースコードです。
    <!-- 2020/01/15 言語jaで実行制御 -->
    <b:if cond='data:blog.locale == &quot;ja&quot;'>

      ナビゲーションボタンの元のソースコード

    </b:if>
    <!-- 2020/01/15 ここまで -->


ここまでは上手くいきましたが、言語の指定結果を各ガジェットのMobileパラメータへ引き渡す方法が判りません。ローカル変数とかを定義できないと値の引き渡しができません。ダメなんじゃない、このアプローチ。

試しに、言語の指定でガジェット全体を削除すると、これは『ガジェットがない』とエラーになってしまいました。

ここで数日停滞です。ネットで見つけたBloggerの参考書の紹介サイト(英語)とか読み込みましたが解決しません。ただし、2本の使えそうな記事を見つけました。

1本はBlogerに専用のホームページ(トップページ)を作る方法です。この中でホームページから不要なサイドバーを非表示にする2本目の記事が紹介されていました。
Bloggerのホームページは最新投稿が一覧で表示されるだけで、専用の画面というものはありません。デフォルトでは最大7件が表示されます。井戸掘りブログでは『https://nsfarmer.blogspot.com』にアクセスすると、最新の投稿を最大7日分を表示するように拡張しています。
専用のホームページがないので、無理やりトップページリンクで誘導していますが、本来はこの記事と同じことがやりたかった。近々、実装してみましょう。

CCreate Real Homepage for Blogger Blog
Bloggerのブログのための本当のホームページを作成
https://bloggerbook.blakbin.com/2018/10/create-real-homepage-for-blogger-blog.html
How to Hide Sidebar on Certain Pages in Blogger
ブロガーで特定のページにサイドバーを非表示にする方法
https://bloggerbook.blakbin.com/2018/10/how-to-hide-sidebar-on-certain-pages-in-blogger-blog.html

案3 管理ツールのパラメータでサイドバーを制御
管理ツールからパラメータを操作してサイドバー自体の表示/非表示を制御する。パラメータは先ほどと同じ、言語の指定で良いでしょう。
非表示にしたいガジェットは右サイドバー1(id='sidebar-right-1')に集約してあります。非表示にしたくないガジェットは右サイドバー3(id='sidebar-right-3')に移動してあります。

記事を読むと、こう書けと言ってるらしい。右サイドバーを定義する際に条件式を指定できると。今回は『モバイルバージョン』で『言語≠日本語』のand条件時にサイドバーを非表示にする。表示するのは逆の状態のor条件で良いはず。

<b:section cond='!data:blog.isMobileRequest or data:blog.locale == &quot;ja&quot;' class='sidebar' id='sidebar-right-1' name='Sidebar' showaddelement='yes'>


ですが、テンプレートのソースをみると、<b:section> Bloggerタグではなく、<b:section-contents> Bloggerタグが使われています。

<b:section-contents id='sidebar-right-1'>


勝負勝負!!
テンプレートのソースを記事どおりに<b:section> Bloggerタグで条件式指定で保存するとエラー。逆に<b:section-contents> Bloggerタグに条件式を付加して保存しても無視されます。ダメだ。
ネットを検索して、サイドバーを非表示する方法を探しましたが上記記事と同じ、<b:section> Bloggerタグを使うものでした。情報が古いか?
試しに、言語の指定でサイドバー全体が非表示になるようにソースを修正しても、この修正が無効になるようにテンプレートが自動改変されました。

Bloggerブログでモバイルのガジェットの表示を切り替えるソースコード
https://www.nagahitoyuki.com/2017/09/sourcecode-to-switch-display-of-mobile-gadget-in-blogger-blog.html
→このやり方でもサイドバー消せない

ソースを見ると、<b:section> Bloggerタグと<b:section-contents> Bloggerタグが混在しています。消したいのは右サイドバー1(id='sidebar-right-1')です。
<b:section> Bloggerタグ<b:section class='navbar' id='navbar' maxwidgets='1' name='Navbar' showaddelement='no'><b:section class='header' id='header' maxwidgets='1' name='Header' showaddelement='no'><b:section class='tabs' id='crosscol' maxwidgets='1' name='Cross-Column' showaddelement='yes'/> 未使用<b:section class='tabs' id='crosscol-overflow' name='Cross-Column 2' showaddelement='no'/>  未使用<b:section class='main' id='main' name='Main' showaddelement='no'><b:section class='foot' id='footer-3' name='Footer' showaddelement='no'>
<b:section-contents id='sidebar-right-1'/><b:section-contents id='sidebar-right-2-1'/> 未使用<b:section-contents id='sidebar-right-2-2'/> 未使用<b:section-contents id='sidebar-right-3'/><b:section-contents id='footer-1'/> 未使用<b:section-contents id='footer-2-1'/> 未使用<b:section-contents id='footer-2-2'/> 未使用
メインセクションの下にある見慣れぬ<macro:include>文が怪しい。
        <div class='column-right-outer'>
        <div class='column-right-inner'>
          <aside>
          <macro:include id='main-column-right-sections' name='sections'>
            <macro:param default='2' name='num'/>
            <macro:param default='sidebar-right' name='idPrefix'/>
            <macro:param default='sidebar' name='class'/>
            <macro:param default='true' name='includeBottom'/>
          </macro:include>
          </aside>
        </div>
        </div>


サイドバーの表示制御の調査は先が見えず、いったんここで中断。


案4 ガジェットに表示・非表示の条件を付与
言語指定でガジェット全体を非表示にすると案2ではエラーになりました。ガジェット自体を非表示にするのにはお作法がありました。
Bloggerのガジェットを特定ページで表示・非表示に設定する方法
https://kazulog-life.com/2018/01/show-and-hide-blogger-gadgets.html#toc9 
https://web.archive.org/web/20180828140006/https://kazulog-life.com/2018/01/show-and-hide-blogger-gadgets.html#toc9 ←キャッシュです。
本当は一括でサイドバーを非表示にしたいところですがしかたない。10件も20件もあるわけではないので、がんばりましょう。

ブログアーカイブ id='BlogArchive1の'ソースコードです。追加したのは3行です。『モバイルリクエスト』で『言語が日本語(ja)でない』ときは表示しない。でなければ表示するです。
  <b:widget id='BlogArchive1' locked='false' mobile='yes' title='ブログ アーカイブ' type='BlogArchive' version='1'>
    <b:widget-settings>
      <b:widget-setting name='showStyle'>HIERARCHY</b:widget-setting>
      <b:widget-setting name='yearPattern'>yyyy</b:widget-setting>
      <b:widget-setting name='showWeekEnd'>true</b:widget-setting>
      <b:widget-setting name='monthPattern'>MMMM</b:widget-setting>
      <b:widget-setting name='dayPattern'>MMM dd</b:widget-setting>
      <b:widget-setting name='weekPattern'>MM/dd</b:widget-setting>
      <b:widget-setting name='chronological'>true</b:widget-setting>
      <b:widget-setting name='showPosts'>true</b:widget-setting>
      <b:widget-setting name='frequency'>WEEKLY</b:widget-setting>
    </b:widget-settings>
    <b:includable id='main'>
<!--2020/1/18ガジェット抑止-->
<b:if cond='data:blog.isMobileRequest and data:blog.locale != &quot;ja&quot;'>
<b:else/>
  <b:if cond='data:title != &quot;&quot;'>
    <h2><data:title/></h2>
  </b:if>
  <div class='widget-content'>
  <div id='ArchiveList'>
  <div expr:id='data:widget.instanceId + &quot;_ArchiveList&quot;'>
    <b:include cond='data:style == &quot;HIERARCHY&quot;' data='data' name='interval'/>
    <b:include cond='data:style == &quot;FLAT&quot;' data='data' name='flat'/>
    <b:include cond='data:style == &quot;MENU&quot;' data='data' name='menu'/>
  </div>
  </div>
  <b:include name='quickedit'/>
  </div>
</b:if>
<!--2020/1/18ガジェット抑止ここまで-->
</b:includable>



勝負勝負!!
成功です。本文の下には、消してはならない『重要』のみしかありません。いいね。

ガジェットを非表示にできました

おまけですが、画面の最末端はデバックエリアにしました。ブログテンプレートが動かしながらでないと解析できず、printf(古いね)も使えないので目立たない画面最末端でごにょごにょすることにしました。

おまけ、中央のセクション末尾にデバック領域を設けました


案5 新しいテンプレートを使う
最後の最後にこんな記事を見つけました。新しいテンプレートなら簡単にガジェットの表示/非表示が制御できるようです。まー、いいや。ここまで苦労したんだから、今のテンプレートを使い続けましょう。
Blogger プレミアムテンプレート MagOne の特徴
https://blogger101.blogging-life.com/2019/05/magone-features-introduction.html
てか、プレミアムと言うだけあって、これ有償ですな。井戸掘りブログのポリシーに反します。それに設定が難しいから有償サポートするってことらしい。
却下!!


案6 サイドバーを自作する
以前はテーマの設定画面でサイドバーの追加や配置を自由に行えたはず。昔のブログテンプレートなら可能なのかな?
利用者が追加したサイドバーなら、表示・非表示の制御も行えるはず。

ひとしきり調べましたが、判りません。ブログテンプレートを『クラッシック』に戻したら、そもそもテーマ設定画面でナビゲーションバー(NavBar)ぐらいしか変更できない。後はHTMLの編集のみ。レイアウト設定画面も出なくなる。ダメだ。
昔はどうやってやったんだっけ。iGoogleみたいなGUIだったけど…。もしかしたら、廃止されたiGoogleそのものだったのかもね。




一応、当初想定していたリンクチェックに必要なリンクの抑止は完成です。ですが、モバイルテンプレートが少し読めるようになったので、もう少し頑張りましょう。
追加でこれも削除したい。記事の投稿(id='Blog1')の下部にある3件のリンクです。
  • タイムスタンプ
  • SNSへの共有リンク
  • コメントの投稿リンク

chromeブラウザのデベロッパーツールで画面上のソースを調べて、各アイテムの当たりを付けてテンプレートのソースを解析しました。

3件のリンクはいずれも、記事の投稿(id='Blog1')を構成する部品(id='mobile-post')に定義されていました。

  • タイムスタンプはtitle='permanent link'のリンクでした。
  • SNSの共有リンクはid='mobile-share-button'のリンクでした。
  • コメント投稿はname='comment_picker'で組み込まれる別部品でした。

同じ要領で<b:if> Bloggerタグを組み込みます。

記事の投稿下のタイムスタンプ、
SNS共有リンク、
コメント投稿リンクを削除しました

お上手、パチパチ。


感想と構想


2020年1月15日水曜日
儂にはちょっとハードル高いです。数日掛かりそうですね。



2020年1月19日日曜日
リンクチェックのための、お手軽な環境変更の仕組みが完成しました。
ここまでできたら、記事本文下のタイムスタンムと、SNSの共有リンク、コメントの投稿リンクも何とかしたいですね。リンクチェックの対象記事が700件を超えています。この3件のリンクだけで2,100回の目検が必要になります。



どの記事を参考にしたのか判らなくなりました。笑
読み直して整理します。
テンプレートの仕組みと機能 ~Blogger テンプレートを作るよ! (3)~
https://madoug-kobo.blogspot.com/2016/09/blogger-template-3.html
BloggerをCSSカスタマイズする方法

http://tounderlinedk.blogspot.com/2010/05/bloggercss.html
【第3回】これでわかった!Bloggerの制御タグ・データタグまとめ

https://bgt-48.blogspot.com/2018/01/3blogger.html

投稿日 2020年1月14日火曜日

HTTPSリダイレクト有効化

業務外


さすがに今更ですが、HTTPSリダイレクトを有効化しました。

現在、別稿でsyntaxhighlighterの呼び出しエラーの修復中です。以前、ライブラリがHTTP/とHTTPSが混在していることで、呼び出しエラーが発生していたことがあります。今回はこの問題ではなかったのですが、もうHTTP使ってる場合じゃないですね。

HTTPSリダイレクトを有効にしました

『自己紹介』、『コンテンツ』のガジェットがHTTP/とHTTPS混在になっていました。
『自己紹介』は昔のHTTPアクセス時代に作成して、更新が漏れていたものです。これはURLをHTTPからHTTPSに切り替えるだけでOK。
『コンテンツ』も昔のHTTPアクセス時代に作成したままでした。こちらの更新はちょっと面倒くさい。いったんコンテンツの一覧から記事を削除して一覧を更新。その後再度一覧を組み直さないと更新されません。

ガジェットとか部品を作成するときは、通常 URLをブラウザのアドレスバーからコピペしています。この時、HTTPでアクセスしているか、HTTPSでアクセスしているかなんて、余り気にしていませんでした。HTTPSリダイレクトを有効にしておけば、常にHTTPS側でアクセスされるので、同様のミスは無くなるでしょう。


感想と構想


年明けからブログテンプレートをいじくりまわしてます。
ブログテンプレートは、今までに手を加えたカストマイズや、組み込まれたガジェットがHTTP/とHTTPS混在になっていました。セキュリティ上の問題があるので対策せよと警告も出ています。良い機会なので一気に対策しました。



記事の更新時に「https」と「http」が混在していると警告が表示されるので「https」に切り替えれば良いと思いました。でも良く考えたら全て「http」だと警告が出ません。
また、記事に貼り付けた写真のURLに大量の「http」があることが判りました。人手による修正は無理だな、これ。


syntaxhighlighterがまたしても

業務外


1月8日にブログテンプレートが破損し、ソースコードを表示するツール(syntaxhighlighter)の修正もリセットされてしまいました。ブログの記録を確認しながら、カストマイズを復旧しています。



前回は参照するライブラリのhttps化とバージョンの変更のみでした。ブログテンプレートの<head>部分に追記するだけです。復旧してみましょう。

2019年6月27日木曜日
syntaxhighlighterの修復

動きません。笑
バージョンがまた変わったのかな?chromeのデベロッパーツールでライブラリの呼び出し状況を確認してみましょう。見たことのない警告が表示されています。毎回毎回、面倒くさいな。

syntaxhighlighterの呼び出しエラーです。

A cookie associated with a cross-site resource at http://blogger.com was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
翻訳蒟蒻
http://blogger.com/のクロスサイトリソースに関連付けられたCookieは、 `SameSite`属性なしで設定されました。 Chromeの今後のリリースでは、「SameSite = None」と「Secure」が設定されている場合にのみ、クロスサイトリクエストでCookieを配信します。開発者ツールのCookieを[アプリケーション]> [ストレージ]> [Cookie]で確認し、https://www.chromestatus.com/feature/5088147346030592 及び https://www.chromestatus.com/feature/5633521622188032で詳細を確認できます。

『サイト間のCookieの受け渡しで、SameSite属性がないから配信しないよ』と言ってます。
調べてみると、2019年11月の記事ですが2020年2月のChrome 80 からセキュリティの一環でSameSite属性の扱いが変わるとあります。

新しい Cookie 設定 SameSite=None; Secure の準備を始めましょう
https://developers-jp.googleblog.com/2019/11/cookie-samesitenone-secure.html

現時点で使用しているブラウザはChrome 80未満ですが、試験運用版機能が既に組み込まれていました。
バージョン: 79.0.3945.117(Official Build) (64 ビット)
つまり、syntaxhighlighter V3.0 をホスティングしている、agorbatchevがSameSite属性のCookieの対応をしないとダメということらしいです。
https://agorbatchev.typepad.com/
V3.0 は相当古いので、V4.0ならSameSite属性の対応もできているかも知れません。でも自分で環境を準備しなければなりません。ちょっとハードル高い。どうすんべ。



syntaxhighlighter V4.0 をデプロイして、Github Pages で公開している方がいました。ちょっとここをお借りしましょう。以下を<head>部分に組み込みます。





syntaxhighlighterが復旧しました。


感想と構想


SyntaxHighlighter v4について、以下の記事を参照させていただきました。

SyntaxHighlighter v4 に更新しました
https://srz-zumix.blogspot.com/2018/05/syntaxhighlighter-v4.html

ブログカストマイズ復旧

業務外


1月8日にブログテンプレートが破損し、以前に設定したカストマイズがリセットされてしまいました。ブログの記録を確認しながら、カストマイズを復旧しています。



スマホ用のショートカットアイコンを復旧しました。

2016年6月29日水曜日
スマホ用のショートカットアイコンを設定しました

一応、ショートカットアイコンが表示されましたが、以前と違います。
画面のスクリーンショットを掲載します。右上が以前のショートカットアイコン、エンブレムのアイコンがそのまま表示されています。右下の2個がchromeブラウザとFirefoxブラウザで新たに作ったショートカットアイコンです。新たに作ったショートカットアイコンにはブラウザの小さなアイコンが乗っています。Android OSのバージョンアップの影響かしらん。

ショートカットアイコンの表示




ブラウザに表示されるブログタイトルの並びの変更、ブログ末尾の版権表示を復旧しました。

2016年7月5日火曜日
ブログを色々カスタマイズしています

ブログタイトルの並びの変更は投稿(data:blog.pageType == "item")だけが対象でしたが、今回はページ(data:blog.pageType == "static_page")のタイトルも並びを変更しました。


感想と構想


ページのタイトルの判定には以下の記事を参考にさせていただきました。
【第3回】これでわかった!Bloggerの制御タグ・データタグまとめ
https://bgt-48.blogspot.com/2018/01/3blogger.html
投稿日 2020年1月13日月曜日

編集アイコンを非表示にする

業務外


今回はブログオーナーの自己満足カスタマイズです。

Bloggerにログインしたままブログを表示すると、ブログのパーツ毎に編集アイコン(クイックエディット)が表示されます。
ブログのオーナーが、ブログを表示した状態から直ちにブログの設定を修正するための機能です。

いやー、そんなにブログの設定をひっきりなしに修正するか?
スマホ利用だとついクイックエディットに触れてしまい、画面遷移で苛つきます。これ、要らない。


編集アイコンが鬱陶しい

ブログテンプレートのCSSに以下を追加します。

ただし、現時点でBlogger管理ツールがまともに動かないので、今回はガジェットに組み込むことにしました。

.quickedit {
  display: none;
}

クイックエディットが消えました。スッキリしました。

編集アイコンを非表示にしました


井戸報告


クイックエディットの非表示は、以下の記事を参考にさせていただきました。
Bloggerの編集用マークを一気に消す方法
https://omoidasecom.blogspot.com/2016/02/quickedit.html


︿
blog.isMobileRequest=true, blog.local=ja がんばれ日本!!