Please Sign In or Register

Google AJAX Feed API + drupal.org Issues Feed

Google AJAX Feed API + CCK + Contemplate で各モジュールページの最下部にそれぞれの Issues Feed を表示させてみた。

  1. CCK で Issues Feed の URL を入力するフィールド ( google_feed ) を作成し、そこに入力した URL を google.feeds.Feed クラスのアーギュメントとして指定することで、ページによって異なる URL を指定できるようにする。
  2. Contemplate には、Issues Feed URL に入力があれば、それを含めた JavaScript コードを XHTML の <head>~<head> 部分に出力し、さらに URL から取得したフィードの内容を本文に出力するという PHP コードを追記する。

というのが、この作業の全体的なイメージだ。コードは以下のもので動作している。
なお、わざわざ Google AJAX Feed API を利用しなくても Aggregator モジュールで実現できそうなことや、コードの記述がまだ未熟であることなどは容赦願いたい。

<?php
foreach ((array)$field_google_feed as $item){
    $feed_url = $item['view'];
};

$google_feed_api = <<<EOS
<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR-KEY"></script>
<script type="text/javascript">
<!--
  google.load("feeds", "1");
  function initialize() {
    var feed = new google.feeds.Feed("{$feed_url}");
	feed.setNumEntries(10);
    feed.load(function(result) {
      if (!result.error) {
        var container = document.getElementById("feed");
        for (var i = 0; i < result.feed.entries.length; i++) {
          var entry = result.feed.entries[i];
          var div = document.createElement("div");
		  div.innerHTML = '<a href="' + entry.link + '">' + entry.title + '<\/a>';
          container.appendChild(div);
        }
      }
    });
  }
  google.setOnLoadCallback(initialize);
//-->
</script>
EOS;

if ($feed_url !== "") {
  drupal_set_html_head($google_feed_api . "\n");
  print "<div id=\"feed\"><h2>バグや問題点についての情報</h2></div>";
}
?>

Google AJAX Feed API が公開されてから Drupal の何かに利用できないかとは考えていたのだが、以下の発言を頼りになんとか 「使えそう」 なものにすることができた。この場を借りてお礼を申し上げたい。

[参考]
Google AJAX Feed API

トラックバック

トラックバックは承認後に表示されます。

URLから "-nospam" を削除してトラックバックを送信してください。

コメント

コメントアウトなどの微調整

ちょっと冷静に内容を見直してみました。で、以下の部分を変更。マーキングしてる場所が変更箇所。

  • 一応、<script> に対応していないブラウザが <script></script> の内容をそのまま出力してしまうことを考慮して <!--//--> でコメントアウトするように。
    (コメントの終了タグを "-->" ではなく "//-->" とするのは、スクリプトが "-->" を出力してしまうのを防ぐため。)
  • ブラウザによっては、<script> の後に最初に記述されている </hoge> をスクリプトの終了タグだと認識してしまう場合があることを考慮して、</a><\/a> に。

[追記]
head 部分に出力するようにしているのだから、<script> に対応していないブラウザが <script></script> の内容をそのまま出力してしまうなどということがないことに気づきました。 が、コメントにしていても問題ないでしょうから、コンテンツ自体の内容は修正しません。
どこが冷静だったのか...

hook_footer()

スクリプトの読み込みに時間がかかる場合などは hook_footer() で </body> の直前に挿入するといいかも…

ついにできたのですね(^_^)b

ついに、件の物事が一大成果を上げることができたのですね。おめでとうございます。
いやぁ、すごいですね。
ワタシなんて、tabsで苦労したせいか、しばらくソースコードを見たくない症ですが(笑)
実にすばらしいです。(すばらしいのですが、英文を読めないのが難点です(^_^;))

ワタシも何かの刺激にさせていただきます。何かできるかなぁ(^_^;)

ありがとうございました。

amayadori さんのアドバイスがなかったら、あまり使えないな…と断念していたかもしれません。
実際、自分にはあまり期待していなかったので上手くできるとは思っていなかったのですが、なんとか動作しました。

先日、複数のフィードも扱える google.feeds.FeedControl というクラスが追加されたようなので、Aggregator モジュールの機能を代行できないかな、などと目論んでいます。

ワタシの方が感謝しております<(_ _)>

ワタシの方が感謝しております。
色々、アドバイスいただいたり、無茶なお願いを聞いていただいたりと。
そもそも、Captchaの改造なんて、本当に0829@drupal.orgさんのが無かったらやろうなんて思っていなかったですから。(本音言うと、改造のポイントすら判らなかった)
本当に感謝しております。こっそりとpoファイルを落とさせて使わせていたりもしてますし(笑)

本当に、ありがとうございます。

これからも、たくさん、刺激ください(笑)
いや、ホントに。

シナプス…

他から受けた刺激を、また他への刺激として伝える…みんなシナプスみたいですね。人体の構造には詳しくないですが…
ということで、これからもよろしくお願いします。

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。