最近のエントリを表示させる(seyDesignバージョン)

RW3.6検証済み
このエントリの内容は RapidWeaver 3.6 を使用して検証、カスタマイズされた時のものですが、このバージョンでの動作を保証するものではありませんのでご注意下さい。また、表示の無いバージョンでは動作しない、エラーが出ないという意味ではありません。
以前、akane's pageさんの「最近のエントリを表示させる」というものをご紹介しましたが、今回はもう一つ違うバージョンをご紹介します。
akane's pageさんのバージョンはタイトルのみの表示でしたが、今回ご紹介するseyDesign制作のものは、タイトルの他に投稿日とサマリーが表示されます。

では、導入の仕方を以下に説明します。

  1. はじめに、「Show Recent Posts2」というスニペットをダウンロードします。ダウンロードした「showrecentposts2」フォルダの中の「showrecentposts2.rwsnippet」をダブルクリックをするか、「~/Library/Application Support/RapidWeaver/Snippets」に直接インストールしてください。
    次に、SimplePieというサイトから「simplepie.inc」をダウンロードします。(青い"Downloads"というボタンをクリック。)
    「simplepie.inc」の入った「SimplePie 1.0.1」というフォルダがダウンロードされます。
  2. 「最近のエントリ」を表示させたいページのページインスペクタを表示させて、アセットに「simplepie.inc」を追加します。今回は「HTMLコード」でページを作成。(私の環境では「最近のエントリ」を表示させたいページの拡張子が「.php」でないと動作しませんでした。)
  3. 次に、キャッシュのページを作成します。「最近のエントリ」を表示するページと同じディレクトリに新規ページ(スタイルつきテキストか、HTMLコードで)を作成し、フォルダ名を「cache」、ファイル名を「cache.html」とします。同一ディレクトリにするというのは、Rapidweaverでいうところのサブページです。(キャッシュページを「最近のエントリ」を表示させたいページの中に入れればOK。)キャッシュのページには何も記述しません。
    キャッシュページはメニューに表示しないように、ページインスペクタで「メニューに表示」のチェックを外しておいてください。
    今回は「HTMLコード」でページを作成、念のためにページインスペクタ/HTMLエディタオプションの「テーマを適用」のチェックを外しました。

「最近のエントリ」を表示させたいページに、メニューバー/表示/スニペットを表示、または⌘5でスニペットを表示し、「Show Recent Posts2」をドロップしてその内容を編集します。
まず、

1行目の

Recent posts

タイトル部分、自由に変更できます。削除しても構いません。

30行目の

require_once('assets/simplepie.inc');

「simplepie.inc」のディレクトリの確認。「最近のエントリ」を表示するページと同じディレクトリに、既にファイルが存在する場合は、アセットフォルダ名が「assets」ではありません。その場合は、「最近のエントリ」を表示するページのファイル名を「assets」の前に付けます。
今回は、「最近のエントリ」を表示するページを「recent-posts.html」というファイル名にしたので、アセットフォルダ名は「recent-posts_assets」になります。(間にアンダーバーが入ります。)

32,33行目の

// Copy and past the URL of your RSS feed here (currently defaults to seyDesigns RSS feed)$feed = new SimplePie('http://www.seydesign.com/news/files/blogRSS.php');

RSSフィードアドレスの設定。「http://www.seydesign.com/news/files/blogRSS.php」の部分を自分のサイトのRSSフィードアドレスと入れ替えます。

39,40行目の

// to limit the number of posts that appear, add a number sequence like 0,5 between the brackets. This will get you 5 posts, 0,8 will get you 8, and so on...foreach ($feed->get_items(0,5) as $item) {

エントリの表示対象範囲と表示数の設定。ここでは「(0,5)」の数字の部分を編集します。「0」の部分は、どのエントリから以前を表示するかを設定します。「0」ならば最新のエントリから表示、「2」ならば最新のエントリから数えて2つのエントリは表示されません。「5」の部分は表示するエントリの数です。
例えば「(5,10)」とした場合、最新のエントリから遡った5つのエントリは非表示、それ以前の10のエントリが表示されます。

42,43行目の

// Calculate 7 days ago where 168 represents the hours, the rest is a bit of a mystery to me $thisweek = time() - (168*60*60);

エントリの表示対象期間を設定します。ここでは「(168*60*60)」の部分の「168」の数字を編集します。168というのは、168÷24=7、過去7日間にエントリされたものを対象にするという意味です。
範囲を過去30日間にしたい場合は、24×30=720ですので、「(720*60*60)」とします。

57行目の

echo '

';

エントリの投稿日時の設定。「('j M Y')」の中のアルファベットの部分を編集します。このページを参考にして下さい。
例えば、「2007/11/22 22:33:44」の様に表示したい場合は、 「('Y/m/d H:i:s')」と記述します。

59行目の

echo shortdesc($item->get_description(), 150); // Change 150 to the length of your choice

サマリーの文字数の設定。「get_description(), 150」と記述してあるので、エントリの先頭から150文字を表示します。今回は100としました。ただし、1バイトの文字を1と数えるようなので、日本語だと設定した数字の約1/3の文字数になります。(この辺は文字エンコードの設定によって変わってくると思います。多分…。

61行目の

echo '>> Read more.' . '';

サマリーのリンクの部分です。今回は「>> Read more.」を「>> 続きを読む」に置き換えました。

以上です。恐らくプレビューしてもまともに表示されませんが、アップしてブラウザで確認するとちゃんと表示されているともいます。

以下、注意事項と上手くいかない場合の解決策。
  • 「スタイルつきテキスト」ページなどに記述した場合は、対象コードに、メニューバー/書式から「書式を無視」を適用します。
  • サイドバーに記述する場合、「スタイルつきテキスト」に「書式を無視」を適用しても上手くいかない時は、「HTMLコード」に記述してください。
  • ファイルの拡張子が「.html」で上手くいかない場合は「.php」にしてみてください。
  • コード出力は「整頓」、xml宣言はオフにしておいたほうがよい?(かなり曖昧です。よくわかりませんでした。)
  • 表示が上手くいかない場合は、「cash」フォルダのパーミッションを「777」に変更。
  • 1つのページに1つしか表示できないみたいです。(サイドバーとコンテンツ部分?に同時表示などは無理。)
  • RSSフィードをメインパージだけにしておくと表示出来るフィードの上限が決まってしまいます。

以上です。サマリーの最後の文字が文字化けするのは直し方が分かりません。

→サンプルページ

blog comments powered by Disqus