【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>
<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: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>
<b:if cond='not data:view.isHomepage'>
<!-- 処理 -->
</b:if>
上記のような文法でも条件分岐は効きます。これはBloggerの新しい文法なのですが、公式ドキュメントで解説されていません。Bloggerの公式テンプレートで使用されているらしく、こうした新しい文法は有志の方々によってまとめています。
スポンサーリンク
スポンサーリンク
コメント
0 件のコメント :
コメントを投稿