WEB関連の知識や技術についての記事を書いています。

2010年1月23日 土曜日

Delicious × HeartRails Captureで作るBookmark

本日より新たなコンテンツとしてBookmarkページを追加しました。

このブックマークはソーシャルブックマークのDeliciousでブックマークした最新20件を自動的にWeb Diary.netに表示されるようRSSを取得しています。

Deliciousだけでは単にタイトルとURLの取得しかできないため、URLを入れるだけでキャプチャーを返してくれるAPI、HeartRails Captureを使用しています。

結構簡単にできるので簡単な導入方法をメモしておきます。

  1. まずDeliciousへの登録(yahoo.comにてアカウント作成が必要)を行い、好きなWebサイトをブックマーク。
  2. 各個別ページにRSSの取得ボタンがあるのでそこからRSSのURLを取得。
  3. wordpress内でincludeさせます。

    <?php // Get RSS Feed(s)
    include_once(ABSPATH . WPINC . ‘/rss.php’);
    $rss = fetch_rss(‘http://feeds.delicious.com/v2/rss/nishimura0913?count=20′);
    ?>

  4. 次にHeartRails CaptureのAPIを使う。
  5. この仕組が実に簡単です。

    例:http://capture.heartrails.com/?http://www.mozilla-japan.org

    頭に付いている赤文字のURLがキャプチャーするためのURL。なのでその後の青文字の部分にキャプチャーしたいURLを入力すればキャプチャーを返してくれます。
    その他キャプチャーサイズや角丸、ボーダーなんかの設定もできます。
    詳細はHeartRails Captureサイトで見てください。

  6. 仕組みがわかったところでWordpressへ組み込み
  7. <?php foreach ( $rss->items as $item ) : ?>
    <dl>
    <dt><a href=’<?php echo $item['link']; ?>’title=’<?php echo $item['title']; ?>’ target=”_blank”><img src=”http://capture.heartrails.com/310×230/shorten/?<?php echo $item['link']; ?>”></a></dt>
    <dd><a href=’<?php echo $item['link']; ?>‘title=’<?php echo $item['title']; ?>’ target=”_blank”><?php echo $item['title']; ?></a></dd>
    </dl>
    <?php endforeach; ?>

赤がHeartRails CaptureへのURL
青がDeliciousからRSSで取得するURL
このようにforeachを使ってリピートさせるとうまいことブックマークの完成です。

最後にひとつだけ問題点があります。このHeartRails CaptureはファーストビューをキャプチャーしてくるのでFlashサイトなど最初の画面が真っ白とかだとただの白い画像しか表示されません。 何か解決方法があればよいのですが・・・

興味のある方はぜひ使ってみてください。

2010年1月11日 月曜日

カテゴリーIDで記事を振り分ける

現在このWeb Diary.netはWordpressを使って構築しています。

トップページでDiaryとReferenceと言うカテゴリーで記事の振り分けを行っています。

このやり方がわからず作成まで時間がかかったので簡単にメモを残しておきます。

Aカテゴリーが、Bカテゴリーの祖先にあたるかどうかを返してくれるcat_is_ancestor_ofという関数があるようです。

<?php
$post_cats = get_the_category();
if ( $post_cats[0]->cat_ID == 1 || $post_cats[0]->category_parent == 1 || cat_is_ancestor_of( 1, (int)$post_cats[0]->category_parent ) ) { ?>
親カテゴリーAの記事の表示内容
<?php } elseif ( $post_cats[0]->cat_ID == 5 || $post_cats[0]->category_parent == 5 || cat_is_ancestor_of( 5, (int)$post_cats[0]->category_parent ) ) { ?>
親カテゴリーBの記事の表示内容
<?php } else { ?>
その他の記事の表示内容
<?php } ?>

参照元URL:http://ja.forums.wordpress.org/topic/1290