Blogger Labo:【Hello, world!】最新記事ガジェットをトップページで表示させない方法

当サイトの自作テンプレートには「最新記事ガジェット」を設定していますが、デフォルトの設定ではトップページでも表示されるようになっています。しかし、トップページにはすでに最新記事が表示されているため、最新記事ガジェットの内容と重複してしまいます。

個人的にはあまり気になりませんが「トップページのみ最新記事ガジェットを非表示にしたい」という意見もあるようなので、今回は「最新記事ガジェットをトップページで表示させない方法」について解説してみたいと思います。


最新記事ガジェットのソース


<b:widget id='HTML1' locked='false' title='最新記事' type='HTML' version='2' visible='true'>
  <b:widget-settings>
    <b:widget-setting name='content'/>
  </b:widget-settings>
  <b:includable id='main'>
    <b:if cond='data:title'>
      <h3>
        <data:title/>
      </h3>
    </b:if>
    <div class='widget-content latest-articles'>

      <!-- 最新記事のコード(中略) -->
 
    </div>
  </b:includable>
</b:widget>

上記が最新記事ガジェットを構成するソースコードです。「title='最新記事'」なんかでテンプレート内を検索すると見つけられるかと思います。このソース部分に「トップページを除く場合に動作する」といった条件分岐を与えてやれば問題を解決できます。

トップページのみ除外するコード


<b:widget id='HTML1' locked='false' title='最新記事' type='HTML' version='2' visible='true'>
  <b:widget-settings>
    <b:widget-setting name='content'/>
  </b:widget-settings>
  <b:includable id='main'>
    <!-- トップページを除く -->
    <b:if cond='data:blog.url != data:blog.homepageUrl'>
      <b:if cond='data:title'>
        <h3>
          <data:title/>
        </h3>
      </b:if>
      <div class='widget-content latest-articles'>

        <!-- 最新記事のコード(中略) -->
   
      </div>
    </b:if>
  </b:includable>
</b:widget>

上記がトップページを除く条件分岐を加えたソースコードになります。この条件分岐は「<b:if cond='data:blog.url != data:blog.homepageUrl'>」とあるように「URLがトップページの場合を除く」という命令になっていますので、トップページURLの時はガジェットは表示されず、それ以外の場合は表示されるようになります。

補足:新しい文法を使う


<!-- トップページ以外 -->
<b:if cond='not data:view.isHomepage'>
<!-- 処理 -->
</b:if>

上記のような文法でも条件分岐は効きます。これはBloggerの新しい文法なのですが、公式ドキュメントで解説されていません。Bloggerの公式テンプレートで使用されているらしく、こうした新しい文法は有志の方々によってまとめています。