ホームページ内でのRSS表示方法

このQ&Aのポイント
  • ホームページ内にGoogleのBloggerでの各記事のタイトルを表示する方法について調べています。
  • 最新記事から5件を流れる文字で表示させる方法と、最新記事から5件を常に表示させる方法があります。
  • PHPとJavaScriptの両方での実装方法を知りたいです。リンク先の表示方法や停止表示させる秒数などもカスタマイズしたいです。
回答を見る
  • ベストアンサー

ホームページ内でのRSS表示の方法

  自分のホームページ内に、GoogleのBlogger(ブログ)での各記事のタイトルを表示させたいと考えています。 表示させたい内容は下記の2通りです。 ★最新記事から5件を流れる文字で表示させたい 例.  2010年11月15日 記事1件目のタイトル ↑上記のように西暦年月日と1件目のタイトルが右から左に流れてきて止まる。(間は半角で)  4~5秒表示後、次の2件目が流れてくる。 ※表示させたい件数が変わる事があると思うので、たとえば2~5件とかの設定ができるようにしたい。  また、停止表示させる秒数や流れてくる速度を変更できるようにしたい。  日付とタイトルの間に時間を挿入できるようにしたい。 ⇒ 2010年11月15日 21:15 記事1件目のタイトル  また、日付を表示しないで時間だけを表示できるようにしたい。 ⇒ 21:15 記事1件目のタイトル  基本的には各記事のページにリンクさせたいのですが、リンク先を自由に変更できるようにしたい。  リンク先の表示方法を変更できるようにしたい。 ⇒ target="_blank" など ★最新記事から5件を常に表示させたい 例.  2010年11月15日 最新記事のタイトル 例.  2010年11月14日 記事2件目のタイトル 例.  2010年11月13日 記事3件目のタイトル 例.  2010年11月12日 記事4件目のタイトル 例.  2010年11月11日 記事5件目のタイトル ↑上記のように西暦年月日と1~5件目のタイトルを表示させたい。(間は半角で) ※表示させたい件数が変わる事があると思うので、たとえば2~5件とかの設定ができるようにしたい。  日付とタイトルの間に時間を挿入できるようにしたい。 ⇒ 2010年11月15日 21:15 記事1件目のタイトル  また、日付を表示しないで時間だけを表示できるようにしたい。 ⇒ 21:15 記事1件目のタイトル  基本的には各記事のページにリンクさせたいのですが、リンク先を自由に変更できるようにしたい。  リンク先の表示方法を変更できるようにしたい。 ⇒ target="_blank" など ○PHPとJavaScript両方でのやり方を知りたいので、詳しい方がいましたらよろしくお願いします。    

  • fi7
  • お礼率54% (25/46)

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.5

各処理ごとの解説や設置方法をご教授頂ければ... =>設置方法については、HTMLまるごとのサンプルが https://gist.github.com/701552 にある(まだ消されて無いみたい)ので、参考にしてほしい。  各処理ごとの解説といっても、それほど高度な技法は使ってないです。 っていうかそんなスキルは私には無いです。むしろ好ましくない部分が あったりするので、解説なんておこがましいです。 ほとんどベタコーディングなので、1行づつ、初心者向けのjavascript リファレンスなんかで確認してけば、やってる事がわかると思います。 (GoogleのAPI利用の部分は、本人も把握しきっていませんが(無責任))  この質問をクローズした上で、解らない部分を別途の質問で部分的に、 投稿されれば、解りやすく解説されたり、もっといいコードを書いてくれる 人がたくさんいるでしょう。

その他の回答 (4)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

続き、 feedout.prototype.scrolling = function(){  this.scroll_timer = setInterval((function(that){   return function(){    that.scr_count += 10;    var pos = that.width - that.scr_count;    if (pos < 0){    pos = 0;    clearInterval(that.scroll_timer);    that.scroll_timer = null;    }    that.data[that.rot_count].style.left = pos + "px";   }  })(this),this.scr_int); } と作っておいて、例えば <div id="my_blog_info" style="position:relative;width:30em;height:1em;overflow:hidden;border:1px solid gray"> に対して、    my_output = new feedout(blogEntries);    my_output.scroll(document.getElementById("my_blog_info"),    5,    {hizuke:true,jikan:true},    "_blank",    20000,  //ローテーションのインターバル(ミリ秒)    100 //スクロールのインターバル(ミリ秒)    ); と指定して使う。 ※一気通貫のリストは、 https://gist.github.com/701552 を見てくれ。 あんまり、テストしてないよ!

fi7
質問者

お礼

コーディングして頂きありがとうございます。 こんな時間になってしまいましたが、教えて頂いた事を自分なりに解析&実践してみました。 まだまだ勉強不足で、なかなかうまくいかないのですが、もう少し時間をかけてがんばってみようと思います。 お手数をおかけして申し訳ないのですが、各処理ごとの解説や設置方法をご教授頂ければありがたいです。 なにとぞよろしくお願いします。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

マーキースクロールみたいなのも一応出来た。 ↓だ。 feedout.prototype.scroll = function(cotainer,No,format,lnk_target,rot_int,scr_int){  this.cotainer = cotainer;  this.idx = No?Math.min(this.entry.length,No):Math.min(this.entry.length,5);  this.format = format;  this.lnk_target = lnk_target;  this.rot_int = rot_int;  this.rot_count = 0;  this.rot_timer = null;  this.scr_int = scr_int;  this.scr_count = 0;  this.scroll_timer = null;  this.data = [];  this.width = this.cotainer.clientWidth;  var a,dataobj,hizuke,jikan,str,span;  for(var i=0;i<this.idx;i++){   a = document.createElement("a");   a.href = this.entry[0].getHtmlLink().getHref();   a.target = this.lnk_target;   a.appendChild(document.createTextNode(this.entry[i].getTitle().getText()));   dateobj = this.entry[i].getUpdated().getValue().date;   hizuke = dateobj.getFullYear() + "年"        + (dateobj.getMonth() + 1) + "月"        + dateobj.getDate() + "日" + " ";   jikan = ((dateobj.getHours() < 10)?"0"+dateobj.getHours():dateobj.getHours())      + ":"      + ((dateobj.getMinutes() < 10)?"0"+dateobj.getMinutes():dateobj.getMinutes())      + " ";   str = (this.format.hizuke?hizuke:"") + (this.format.jikan?jikan:"");   span = document.createElement("span");   span.appendChild(document.createTextNode(str));   span.appendChild(a);   span.style.position = 'absolute';   span.style.left = this.width + 'px';   this.data[i] = span;  }  this.cotainer.appendChild(this.data[this.rot_count]);  this.scrolling();  this.rot_timer = setInterval((function(that){   return function(){    while(that.cotainer.hasChildNodes())    that.cotainer.removeChild(that.cotainer.firstChild);    that.rot_count += 1;    if(that.rot_count > that.idx - 1) that.rot_count = 0;    that.cotainer.appendChild(that.data[that.rot_count]);    that.scr_count = 0;    that.scrolling();   }  })(this),this.rot_int); } やはり、長すぎて投稿制限オーバーしたのでので続く。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

リスト表示の方は、簡単にかたずいた ↓でよいだろう。 function feedout(blogEntries){  this.entry = blogEntries; } feedout.prototype.list = function(cotainer,No,format,lnk_target){  this.cotainer = cotainer;  this.idx = No?Math.min(this.entry.length,No):Math.min(this.entry.length,5);  this.format = format;  this.lnk_target = lnk_target;  var a,dataobj,hizuke,jikan,str,li;  for(var i=0;i<this.idx;i++){   a = document.createElement("a");   a.href = this.entry[0].getHtmlLink().getHref();   a.target = this.lnk_target;   a.appendChild(document.createTextNode(this.entry[i].getTitle().getText()));   dateobj = this.entry[i].getUpdated().getValue().date;   hizuke = dateobj.getFullYear() + "年"        + (dateobj.getMonth() + 1) + "月"        + dateobj.getDate() + "日" + " ";   jikan = ((dateobj.getHours() < 10)?"0"+dateobj.getHours():dateobj.getHours())      + ":"      + ((dateobj.getMinutes() < 10)?"0"+dateobj.getMinutes():dateobj.getMinutes())      + " ";   str = (this.format.hizuke?hizuke:"") + (this.format.jikan?jikan:"");   var li = document.createElement("li");   li.appendChild(document.createTextNode(str));   li.appendChild(a);   this.cotainer.appendChild(li);  } } <ul id="my_blog_list" style="margin:0px;padding:0px;list-style:none;"></ul> に対して、    my_output = new feedout(blogEntries);    my_output.list(document.getElementById("my_blog_list"), // Ulのコンテナー    5, // 表示する記事の件数    {hizuke:true,jikan:true}, // 日付・時間の表示の有無    "_blank" // リンクの開き先    ); と指定すれば、仕様をみたしてるかな。 ※スクロール(マーキー表示?)はどうするか、<marquee>要素使えば  楽だが、芸が無いし、廃止されるかもしれないし、  前に作った1行スクロールのやつを利用するかと.... (続く)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Google Blogger API Sample</title> <style type="text/css"></style> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("gdata","1.x");</script> <script type="text/javascript"> google.setOnLoadCallback(function(){  var bloggerService = new google.gdata.blogger.BloggerService('GoogleInc-jsguide-1.0');  var feedUri = 'http://XXXXX.blogspot.com/feeds/posts/default';  var handleBlogFeed = function(blogFeedRoot) {   var blogEntries = blogFeedRoot.feed.getEntries();   if(!blogEntries.length){    alert("記事が1件もありません");    return;   }else    my_output = new feedout(blogEntries);    my_output.list(document.getElementById("my_blog_list"),    5,    {hizuke:true,jikan:true},    "_blank")    );  };  var handleError = function(error) {   alert(error);  };  bloggerService.getBlogFeed(feedUri,handleBlogFeed,handleError); }); function feedout(blogEntries){  this.entry = blogEntries; /*  alert(this.entry[0].getTitle().getText());  alert(this.entry[0].getHtmlLink().getHref());  alert(this.entry[0].getUpdated().getValue().getDate()); */ } feedout.prototype.list = function(contanir,no,format,lnk_target){ } </script> </head> <body> <h1>Google Blogger API Sample</h1> <ul id="my_blog_list"></ul> </body> </html> 後は、明日...

fi7
質問者

お礼

ありがとうございます。 よろしくお願いします。

関連するQ&A

  • アメブロのRSS連携について

    HPにアメブロの最新記事のタイトルと日付、1枚目の画像を5件分表示したいと考えています。 RSSfeedを簡単に表示できるプラグイン「zRSS Feed」を試してみて、 タイトルと日付は問題なく表示できたのですが、画像の取得はどうすればよいのかわかりません。 どなたかわかる方はいらっしゃいませんでしょうか? 「zRSS Feed」を使わなくてもOKですし、「zRSS Feed」のこの部分をカスタマイズすればいい、などよろしくお願いします。

  • RSSリーダーの記事情報取得件数について

    RSSリーダーとは「最新の記事の見出しや日付、概要をリストとして表示する」もののようですが、 最新の記事だけではなく、そのブログの全ての記事を(または30件等、件数を指定して)rdfファイルに変更する事は可能でしょうか? それを可能にするソフトってあるのでしょうか? それともそれは無理な話でしょうか?

  • PHPを使ったRSS表示件数について

    php初心者です。 外部サイトのRSSを取得し、サイト上で表示をしようと思っています。(外部サイトの最新記事をまとめたもの) http://antenna.wcb.jp/ 上記のようなサイトをベースに、50件ごとに最新記事を表示させ、それよりも前の記事は【前の50件】、それよりも後の記事は【次の50件】というように表示させたいのですが、何か良い方法はないでしょうか。 ご存じの方がいましたらお答えいただけると助かります。

    • 締切済み
    • PHP
  • rssを取得したいのですが

    wordpressで書いたブログの最新記事をRSSで取得したいのですが、なかなかできません・・・ 取得してタイトルと日付けを取り出したいのですが、どなたかアドバイスいただけないでしょうか? 記事のページのURLの後に/feedとつけるのは分かったのですが・・・ どうかお願いします^^

    • ベストアンサー
    • PHP
  • javascriptで入力フォームに日付(和暦)を入力して西暦表示にする方法と曜日を表示させる方法を教えて下さい。

    凄く悩んでいるのですが、良かったら教えてください。 入力フォームに 日付 平成16年07月28日なら 『160728』 と入力し、そのすぐ横に 曜日を『(月)』と表示させたい のですが、どうもうまくいきません。 教えてください。 以前教えていただいた西暦「20040728」 と入力したら、(水)と出たのですが、 和暦入力の場合でわからなくて、困っています。 テキストフォームに(月)と表示させたいのでは なく、<span>タグを使用して作成したいのです。 また、和暦を『160728』入力したら、 表示先には、西暦「20040728」と表示させる には、どうしたらいいでしょうか? ご伝授お願いします。

  • MovableTypeでブログを作っているのですが

    MT4.1で質問です。 インデックスで最新記事5件を表示して、そのタイトルをクリックすると、 個別のその記事に飛ぶようにしてるのですが、すべて同じ最新の記事しか表示されません。。。 インデックスでのリンク先URLは別々になっているのに飛んだ先はすべて同じ内容のブログです。 (URLは違うものなのに) これは個別テンプレートに問題があるのでしょうか? 思いつくものは色々やりましたが出来なかったので質問させていただきました。 よろしくお願いします。

  • Seesaaブログ 記事の日付表示について

    Seesaaブログを利用しています。 【1】 日付表示について 例えば、2005/10/7に2つの記事をUPしたとします。 するとTOPページには・・・ 2005年10月07日 「記事タイトル1」 (記事の本文) ------------------------- 「記事タイトル2」 (記事の本文) ------------------------- となります。 これを、 2005年10月07日 「記事タイトル1」 (記事の本文) ------------------------- 2005年10月07日 「記事タイトル2」 (記事の本文) ------------------------- このように、記事ごとに日付が表示される方法を教えて頂ければ幸いです。 【2】 画像の重さについて 一つの記事に、画像をupするとします。 この時、どのくらいの大きさの画像になると、表示されるのが重いと感じますか? (*ネット環境によって異なるというのは承知しています) 一つの記事に、いくつかの画像ファイルを挿入して、その画像の大きさの合計が150KB~200KBあっても大丈夫なのか知りたいです。 もしくは、○KBまでにしておくのが無難、というのがあれば、教えて下さい。

  • カテゴリの記事を最新記事一件だけ表示したい

    MovableTypeのカスタマイズで困ってます。 カテゴリにおいて、記事数が数件ある時に、 最新の記事一件だけを表示させて、 残りの記事は、 「このカテゴリの記事一覧」のように、 エントリーページへのリンクを張るようにしたいと思います。 カテゴリの記事一覧はできたのですが、 カテゴリにおいて最新の記事を一件だけ表示する方法が分かりません。 ご存知の方がおりましたら、ぜひ教えてください。 よろしくお願いします。

  • operaで新しいタブにホームページを表示させたい

    タイトルのまんまです。 タブブラウザOperaを使い始めたのですが、 新しいタブを開くとblank状態で表示されます。 いちいちホームページボタンをおさないと何も表示されません。 しかし、どこを探しても設定の変更方法がわかりません。 案外簡単なのかもしれませんが、私にはわかりません。 どなたか設定変更の仕方をおしえてください。

  • エクセルで日付け表示

    エクセルで日付け表示にすると西暦まで入力されてしまいます。 たとえば 4/8で打ち込むと4月8日と表示はされますが データーとしては打ち込んだ西暦が反映されてしまいます。 この西暦を反映させない方法はありませんか? 誕生日で並べ替えがしたいのですが打ち込んだ西暦が反映されてしまい 日付順に並べ替えられません。よろしくお願いします。

専門家に質問してみよう