単純に分岐させるだとか。
やってみるとサイズが合わんかったり色々大変なのです。
※
フリーのBloggerテンプレート「QooQ」のカスタマイズについてまとめています。
参考程度に。
尚、カスタマイズはバックアップを取った上、自己責任で行うようにしてください。
完成イメージ
「Noimage」という仮画像を別途アップロードしています。
画像があるかどうかの分岐作成
「list-item-img」がある場所までジャンプ。「<b:if cond='data:post.thumbnailUrl'>~</b:if>」のところを
「<b:if cond='data:post.thumbnailUrl'>~<b:else/>~</b:if>」に。
以前の記事、
【Blogger/QooQ】トップページ記事一覧:最新記事を大きく表示させる
【Bloggerカスタマイズ】最新記事を大きく表示させる方法
これでとりあえずの分岐はできるので、imgを挿入する、でも良い。が、
ここに直接urlを書くのは少々メンテナンス性に欠ける。
私はcss側にurlを持ってくるように改造することにする。
とりあえず画像がくっつけられれば良い、という人は以下の修正まで。
元のコード
- <b:if cond='data:post.thumbnailUrl'>
- <a expr:href='data:post.url'>
- <img class='list-item-img' expr:src='resizeImage(data:post.firstImageUrl, 480, "2:1")'/>
- </a>
- </b:if>
修正後のコード
- <a expr:href='data:post.url'>
- <b:if cond='data:post.thumbnailUrl'>
- <img class='list-item-img' expr:src='resizeImage(data:post.firstImageUrl, 480, "2:1")'/>
- <b:else/>
- <img class='自由に' src='画像のURL' />
- </b:if>
- </a>
デフォルト画像と通常画像の表示サイズの差異をなくす工夫
さらにdivで一つくくるってだけなんだけども。ちなみに画像サイズは2:1を想定しています。「list-item-img-contents:before」の「padding-top」を適宜変更してください。
元のcss
- .list-item-img{
- display : block;
- width : 100%;
- }
修正後のcss
- .list-item-img-contents {
- position : relative;
- width : 100%;
- }
- .list-item-img-contents:before {
- content : "";
- display : block;
- padding-top : 50%;
- }
- .list-item-img-contents img {
- position : absolute;
- top : 0;
- left : 0;
- bottom : 0;
- right : 0;
- width : 100%;
- height : 100%;
- }
- .list-item-img-contents div {
- position : absolute;
- background-image : url(デフォルト画像のurl);
- background-repeat : no-repeat;
- background-size : contain;
- top : 0;
- left : 0;
- bottom : 0;
- right : 0;
- width : 100%;
- }
先程と同様に、
【Blogger/QooQ】トップページ記事一覧:最新記事を大きく表示させる
【Bloggerカスタマイズ】最新記事を大きく表示させる方法
これで多少は画像差し替えが起きた時など対処しやすいのでは?と。これ以上は今のところわからん。
元のコード
- <b:if cond='data:post.thumbnailUrl'>
- <a expr:href='data:post.url'>
- <img class='list-item-img' expr:src='resizeImage(data:post.firstImageUrl, 480, "2:1")'/>
- </a>
- </b:if>
修正後のコード
- <a expr:href='data:post.url'>
- <b:if cond='data:post.thumbnailUrl'>
- <div class='list-item-img-contents'><img expr:src='resizeImage(data:post.firstImageUrl,960,"2:1")'/></div>
- <b:else/>
- <!-- 画像がないときのデフォルト画像 -->
- <div class='list-item-img-contents' ><div/></div>
- </b:if>
- </a>