イントロダクション
記事「Bloggerのナビゲータ「次の投稿-ホーム-前の投稿」 の並び順に違和感を感じたので左右を交換」では、投稿の下にあるナビゲータ「次の投稿-ホーム-前の投稿」 の並び順を「前の投稿-ホーム-次の投稿」に変更しました。しかしこのナビゲータ、前の投稿や、次の投稿がどんなものかわからないので、あまりクリックしたいとは思わないのではないのでしょうか?
ナビゲータ「前の投稿-ホーム-次の投稿」
ということで、Blogger の「次の投稿」「前の投稿」ナビゲータに、それぞれの記事のタイトルを付与する方法を探しましたが、なかなか簡単に実現する方法が見つかりませんでした。
何かいい方法はないかと探していたところ、Blogger のレイアウト用ページ要素タグを使用すれば、「次の投稿」「前の投稿」ナビゲータに、それぞれの記事のタイトルを付与することができるのはないかという考えに至りました!(*1)
処理方式
考えた処理は以下の内容です。次の投稿へに投稿タイトルを付与する処理方式
(1) data:postsを検索し、data:newerPageUrlと同じ url を特定する(2) (1) で特定した要素の title を投稿タイトルとして出力する
試しに data:posts を列挙する以下のようなプログラムを作成してみました。
<b:loop values='data:posts' var='post'> <data:post.title/> - <data:post.url/><br/> </b:loop>
結果は次のようになりました。
あれ?1件しか取得できていない。
もう一度公式の解説(*1)を読んでみたところ、原因がわかりました。
引用ここから
posts: このページのすべての投稿のリスト。引用ここまで
「"このページの" すべての投稿のリスト」とあります。
つまり記事としてそのページで表示している投稿しか data:posts にはすくまれていないということです。
試しに、10件分の記事が表示されるトップページで試したところ、その 10 件分の記事は列挙できました。
このことからわかるのは、ブログの投稿ウィジット内で「前の投稿」「次の投稿」のデータにアクセスすることは不可能だということです。
では、ブログ内の全投稿にアクセスできるブログのアーカイブやフィードのようなウィジットを使えばできるのか?考えてみました。
しかし、それらでは現在の投稿に対して「前の投稿」「次の投稿」がどのページになるのか取得できません。
また、現在のページの前後のアイテムが「前の投稿」「次の投稿」だと判断して処理を行おうにも、現在のページの URL を元に 検索データ内で現在のページのアイテムを発見しても、その前後のアイテムにアクセスする手段がないので、そのような処理方法を取ることもできません。
結局のところ、Bloggerのレイアウト用ページ要素タグを使用して、「前の投稿」「次の投稿」に記事のタイトルを付与することはできなさそうです。
まとめ
Bloggerのレイアウト用ページ要素タグを使用して、「前の投稿」「次の投稿」に記事のタイトルを付与することはできないことがわかりました。そのようなことをやりたい場合には、手動で前後のページのタイトルをページに埋め込むか、JavaScript を使用して処理するしかなさそうです。
→ JavaScript を使用して処理する方法を考えました。
参考文献
*1
レイアウト データ タグ - Blogger ヘルプ
https://support.google.com/blogger/answer/47270?hl=ja#posts
レイアウト用ウィジット タグ - Blogger ヘルプ
https://support.google.com/blogger/answer/46995?hl=ja
https://support.google.com/blogger/answer/47270?hl=ja#posts
レイアウト用ウィジット タグ - Blogger ヘルプ
https://support.google.com/blogger/answer/46995?hl=ja
コメントを投稿 (ここをクリックしてコメント投稿フォームを表示)
コメント投稿機能について