このエントリーをはてなブックマークに追加
はてなブックマーク - WordPressに、Google AJAX Feed APIで画像を出す。
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
WordPressに、Google AJAX Feed APIで画像を出す。GettingOUT

普通のHTMLファイルに、下記の「Google AJAX Feed API」を使ってJavaScriptを仕込み、他のブログから画像を出すことはできるんですが・・・

・画像を出す場合は、Google AJAX Feed APIのJASONフォーマットのcontent内に画像があればいいんですが、そうでない場合はXMLフォーマットで取ってきて、画像タグを取得し表示させる必要があります。

<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR-API-KEY"></script>
<script type="text/javascript">

google.load("feeds", "1");

function initialize() {
var feed = new google.feeds.Feed("RSS URL");
feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
feed.setNumEntries(20);

feed.load(function(result) {
if (!result.error) {
      var container = document.getElementById("rssfeed");

      var items = result.xmlDocument.getElementsByTagName("item");

      htmlstr = "<ul>";
      for (var i = 0; i < items.length; i++) {

            // XMLフィールド取得
            var titleElement = items[i].getElementsByTagName("title")[0];
            var title = titleElement.firstChild.nodeValue;
            if (title.indexOf("PR:") == 0) {
                  continue;
            }
            var linkElement = items[i].getElementsByTagName("link")[0];
            var link = linkElement.firstChild.nodeValue;

            var dateElement = items[i].getElementsByTagName("dc:date")[0];
            var date = dateElement.firstChild.nodeValue;

            var enclosureElement = items[i].getElementsByTagName("enclosure")[0];
            var enclosure = enclosureElement.attributes.getNamedItem("url").value;

            var descriptionElement = items[i].getElementsByTagName("description")[0];
            var description = descriptionElement.firstChild.nodeValue;

            //html組み立て

            //見出し
            htmlstr += "<li>";
            htmlstr += "<div class='blog-date'>" + date + "</div>";
            htmlstr += "<div class='blog-title'><a href='" + link + "'>" + title + "</a></div>";
            htmlstr += "<div class='blog-clear'></div>";
            htmlstr += "</li>";

            //写真
            if (enclosure) {
                   htmlstr += "<div class='blog-img'>";
                   htmlstr += "<img alt='img-" + i + "' src='" + enclosure + "'></img>";
                   htmlstr += "</div>";
            }

            //本文
            htmlstr += "<div class='blog-content'><p>" + description + "</p></div>";
            if (enclosure) {
                  htmlstr += "<div class='blog-clear'></div>";
            }
      }
      htmlstr += "</ul>";

      //追加
      container.innerHTML = htmlstr;
}
});
}
google.setOnLoadCallback(initialize);

</script>

しか、上記で使ったのとほぼ同じJavaScriptを使っているのに、WordPress内で実行すると画像だけが出たり、出なかったりします・・・? (出ない場合が多いですが)

一旦、普通のHTMLファイルで表示させてから、WordPressを表示すると画像が出る場合が多いので、キャッシュがらみの問題か?と思ってはいるのですが・・・。

※一難去って、また一難。WordPress嫌いになりそう・・。
※誰か、解決案のある方、コメントをどうぞ。

————————————————————————————————–

自分で回答するのもなんですが、なんとなく原因がわかりました。
上記のfeed.loadの関数部分は別ファイルにしていたのですが、それをgoogle.setOnLoadCallback(initialize); より前に定義すると直りました・・・・。(ガーン・・・)

.

<script type="text/javascript" <script type="text/javascript"
           src="<?php bloginfo('template_url');?>/css/default.js"></script>
<script type="text/javascript">
google.load("feeds", "1");
function initialize() {
 var feed = new google.feeds.Feed("RSS Feed");
 feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
 feed.setNumEntries(5);
 feed.load(dispfeedXML);
}
google.setOnLoadCallback(initialize);
</script>