「長年日記っぽい」拡張版の解説です。
本来は「同月日」の記事を引き当てる機能で、「去年の今ごろはどんなことを書いていたかな」と年余にわたってブログを更新した際の楽しみとなるものです。
今回は拡張した結果「FC2ブログ 関連エントリサジェスタ」的になりました。
外部スクリプトにしてますので、今後機能を変更してしまうかもしれませんが、現行の仕様について以下に記載します。
(機能が更新されたくない場合は、スクリプトソースをコピーして自分のブログに上げ直してくださってもOKです。)
まず、”「長年日記っぽい」拡張版・関連エントリサジェスタ”を公開することになったきっかけ、出人さんの記事から。
耳呈さんの「LongTimeDiary」(仮称)を試す~同一月日の過去記事(2)
>テンプレートを作ったことがない側には「別テンプレートを作る」ってところからして、すでにハードルが高かったりします
>わたしがそもそも欲しいと思ったものは、1年前に限定する必要はなく、過去の記事を全部を対象にしているもの
今回、この2点の問題は解消しています。
前の「長年日記っぽい」には、2つモデルがありました。
ひとつは公開したタイプの、「いま表示させてる1年前の記事を引き当てる」ものです。
FC2ブログではあまり使われてませんが、実は日別参照用のURLがあります。
blog-date-yyyymmdd.html と言う形式の、月別アーカイブに「日」の分を追加した書式です。
この「yyyy」から1引いたURLにアクセスすれば、ちょうど1年前の同月同日の記事は引き当てられます。
利点は非常にシンプルなことですが、年を跨いで同月同日を探すことができないのが欠点です。
もうひとつは、全記事リスト(achives.html)から、同月同日に投稿された記事を引き当てる方法です。
これなら年を跨いだエントリも抽出できるのですが、欠点は全記事ぶんのデータを取得するので動作が重いことと、上限2000件なので、それより多くの記事を投稿してるブログでは、足切り分が出てしまうことです。
今回のスクリプトでは後者の全記事リストから引き当てをする方式です。
iframe に別のテンプレートを読み込んで… という方法も、上記で指摘されたように手間がかかるので、スクリプトを貼るだけで稼働する方法を検討しました。
それとiframeだと、読み込んだタイトルなどのテキスト文字数が収まるように、幅・高さを調整するのが難しい面でも、この方式は採用しませんでした。
[設置方法]
前回の記事(blog-entry-283.html)に掲載してるコードを、テンプレートのHTML内、もしくはプラグインのHTMLに貼るだけです。
投稿記事内に入れても動作しません。
[動作仕様]
【1】
JavaScript で現在の年月日を取得して、投稿日が同月日の記事を引き当てます。
【2】
記事個別ページ(blog-entry-xxx.html)では、その表示している記事の投稿日と同月日の記事を引き当てます。
(1)(2) いずれも未来・過去の同月日が対象です。「同年」の記事は除外しています。
【3】
(2)がなかった場合、同じ月、もしくは前後の月に投稿された、同カテゴリの記事を引き当てます。
これが、今回追加された「関連記事サジェスタ」です。
「日付+カテゴリ」の条件で抽出してるので、カテゴリやタグだけから表示させる関連エントリよりは精度の高いものが出るかも。
逆に前後の月にも投稿されてないようなのだと何も出てきません。
[その他]
・いま気づいたんですが、個別記事に ?no=xxx 形式でアクセスした場合は機能しません。あとで対応させるかも。
・(1)の「現在と同月日」で対象がなかった場合は、1年前の日付が近い記事を引き当てる拡張を構想中。
本来は「同月日」の記事を引き当てる機能で、「去年の今ごろはどんなことを書いていたかな」と年余にわたってブログを更新した際の楽しみとなるものです。
今回は拡張した結果「FC2ブログ 関連エントリサジェスタ」的になりました。
外部スクリプトにしてますので、今後機能を変更してしまうかもしれませんが、現行の仕様について以下に記載します。
(機能が更新されたくない場合は、スクリプトソースをコピーして自分のブログに上げ直してくださってもOKです。)
まず、”「長年日記っぽい」拡張版・関連エントリサジェスタ”を公開することになったきっかけ、出人さんの記事から。
耳呈さんの「LongTimeDiary」(仮称)を試す~同一月日の過去記事(2)
>テンプレートを作ったことがない側には「別テンプレートを作る」ってところからして、すでにハードルが高かったりします
>わたしがそもそも欲しいと思ったものは、1年前に限定する必要はなく、過去の記事を全部を対象にしているもの
今回、この2点の問題は解消しています。
前の「長年日記っぽい」には、2つモデルがありました。
ひとつは公開したタイプの、「いま表示させてる1年前の記事を引き当てる」ものです。
FC2ブログではあまり使われてませんが、実は日別参照用のURLがあります。
blog-date-yyyymmdd.html と言う形式の、月別アーカイブに「日」の分を追加した書式です。
この「yyyy」から1引いたURLにアクセスすれば、ちょうど1年前の同月同日の記事は引き当てられます。
利点は非常にシンプルなことですが、年を跨いで同月同日を探すことができないのが欠点です。
もうひとつは、全記事リスト(achives.html)から、同月同日に投稿された記事を引き当てる方法です。
これなら年を跨いだエントリも抽出できるのですが、欠点は全記事ぶんのデータを取得するので動作が重いことと、上限2000件なので、それより多くの記事を投稿してるブログでは、足切り分が出てしまうことです。
今回のスクリプトでは後者の全記事リストから引き当てをする方式です。
iframe に別のテンプレートを読み込んで… という方法も、上記で指摘されたように手間がかかるので、スクリプトを貼るだけで稼働する方法を検討しました。
それとiframeだと、読み込んだタイトルなどのテキスト文字数が収まるように、幅・高さを調整するのが難しい面でも、この方式は採用しませんでした。
[設置方法]
前回の記事(blog-entry-283.html)に掲載してるコードを、テンプレートのHTML内、もしくはプラグインのHTMLに貼るだけです。
投稿記事内に入れても動作しません。
[動作仕様]
【1】
JavaScript で現在の年月日を取得して、投稿日が同月日の記事を引き当てます。
【2】
記事個別ページ(blog-entry-xxx.html)では、その表示している記事の投稿日と同月日の記事を引き当てます。
(1)(2) いずれも未来・過去の同月日が対象です。「同年」の記事は除外しています。
【3】
(2)がなかった場合、同じ月、もしくは前後の月に投稿された、同カテゴリの記事を引き当てます。
これが、今回追加された「関連記事サジェスタ」です。
「日付+カテゴリ」の条件で抽出してるので、カテゴリやタグだけから表示させる関連エントリよりは精度の高いものが出るかも。
逆に前後の月にも投稿されてないようなのだと何も出てきません。
[その他]
・いま気づいたんですが、個別記事に ?no=xxx 形式でアクセスした場合は機能しません。あとで対応させるかも。
・(1)の「現在と同月日」で対象がなかった場合は、1年前の日付が近い記事を引き当てる拡張を構想中。