ページ 11

他のブログのRSSから画像を表示する方法

Posted: 2008年2月25日(月) 18:02
by bcacsato
いつもお世話になってます。

他のブログのRSSをCMSDで組み込みたいと思っています。

しかし、エキサイトブログで試してみたところ、下記のようにタグがそのまま表示されるため
画像が表示されず、また日時につきましても表示されませんでした。
件名:シェリー
日時:年月日時分秒
内容: <center><img class="IMAGE_MID" src="http://pds.exblog.jp/pds/1/200802/23/62 ... 583375.jpg" border="0" width="240" height="320"/></center><br/> しょこたんです<br/> テーブルマウンテンで餓死したー大きなおにぎり合成の壷背中の壷、あとギザ強い武器キボンヌ(^ω^#)<br/> ワイファイ!<br/> 救助番号0000ー0029ー6722<br/> <br/> (^ω^#)<br/> パソコンの調子よくなーれよくなーれ!<br/> <br/> <br/> <br/>
画像や日時も表示されるようにするためには、どのようにすればよいのでしょうか?

Posted: 2008年2月25日(月) 18:22
by bcacsato
http://cms.al-design.jp/phpbb/viewtopic ... hlight=rss

こちらの質問を読んだところ、難しくて内容はよく分からないのですが、
RSSより画像を取得するためには、RSSを書き出すブログ側にて
それに対応したような書き出し方をしなければないということなのでしょうか?

一般の無料ブログなどからは、画像までは取得できないと考えたほうがよいのでしょうか?

RSSに関する知識が乏しくて恐縮ですが、アドバイスいただけますと幸いです。

Posted: 2008年2月26日(火) 14:19
by webmaster
 bcacsatoさん、いつもありがとうございます。

 外部XML/RSSの読み込み機能をご利用頂いているものと思います。
 http://cms.al-design.jp/phpbb/viewtopic.php?t=520

 上記トピックで掲載しているRSS表示用のデザイン定義サンプル中では、

コード: 全て選択

<xsl:value-of select="description" />
 のように、RSSの本文部分(description)をそのまま出力している為、
タグがエスケープされて文字として出力されているものと思います。
 タグはHTMLのタグとして出力したい場合は、

コード: 全て選択

<xsl:value-of select="description" disable-output-escaping="yes" />
 として頂く事で、可能になるかと思います。
 一度お試し下さい。
 (上記箇所は、RSS2.0用と1.0用とで2箇所存在します)

 尚、二つ目の投稿で示して頂いたトピックでは、CMSDから画像付きRSSを
出力する方法についての話題ですので、今回の件については特に意識して頂か
なくて大丈夫です。

補足

Posted: 2008年2月26日(火) 14:27
by webmaster
 尚、追記です。

 この、外部XML/RSS読み込み機能ですが、弊社でもいくつかの案件で導入して
おりますが、以下のような問題が生じました。

・XML/RSSを提供している側のサーバーが一時的に遅かったりすると、こちら側の
 ページのロードも(当然ですが)遅くなり、場合によってはタイムアウトしてエラー
 になってしまう。

 そこで、弊社では該当の外部XML/RSSを読み込んで表示する部分のみを独立した
ページにし、そのページをIFRAMEを使って読み込むという形にしたところ、ページ
のロードも早くなり、問題なくなりました。

 最近ではJavaScriptを使って外部XML/RSSを読み込むライブラリもたくさん配布
されているので、JavaScript依存でも問題ないサイトの場合にはそちらをご利用
頂くというのも併せてご検討下さい。

Posted: 2008年2月27日(水) 05:02
by bcacsato
webmasterさま、ありがとうございます。できました!

disable-output-escaping="yes"を付ければよかったんですね。
RSS以前に、基本的なことでしたね…すいません。
しかも、過去に同じ質問がありましたね…見逃してました :oops:

ただ、画像は表示されるようになったのですが、日時については
日時:年月日時分秒
のように表示されません。

この原因について何か思いつく点がありましたら、ご教授お願いします。

Posted: 2008年2月27日(水) 11:44
by webmaster
 bcacsatoさん、ご返信ありがとうございます。
 disable-output-escapingについては、元のサンプルに何も書いていないので、
なかなか気づきにくいと思います。m(__)m

 disable-output-escaping="yes"にするということは、配信元のRSSの内容が
完全に信頼できることが前提となりますので、その点ご注意下さい。
(元のRSSに故意に悪意あるscriptが含まれていた場合、そのまま表示することに
なります。disable-output-escaping="no"の場合には問題ありません。)

 日時が取得できない件を少し調べてみました。

 エキサイトブログが出力するRSSを調べたところ、RSS2.0にも関わらず、
日時情報だけがRSS1.0の仕様になっているようです…。
(本来pubDateで出力されているべき箇所が、dc:dateとして出力されている)

 これは恐らくRSS2.0の仕様に対する違反ではないかと思うのですが、有名な
ブログサービスが出力するRSSがこのような規定外のデータを出力しているとは
思っていなかった為、考慮しておりませんでした。

 こちらに対処済みのソースをアップロードしましたので、差し替えて頂いても
よろしいでしょうか。
 http://cms.al-design.jp/downloads/cmsd_pre_1_1_6f_1.zip

 同時に、デザイン定義の方も一部修正する必要があります。

 RSS0.91/2.0用の出力部分の中で、

コード: 全て選択

				<li>日時:<xsl:value-of select="pubDate/@year" />年<xsl:value-of select="pubDate/@month" />月<xsl:value-of select="pubDate/@day" />日<xsl:value-of select="pubDate/@hour" />時<xsl:value-of select="pubDate/@minute" />分<xsl:value-of select="pubDate/@second" />秒</li>
 という部分があるかと思いますが、これを、

コード: 全て選択

				<li>
				<xsl:choose>
				<xsl:when test="pubDate">
				日時:<xsl:value-of select="pubDate/@year" />年<xsl:value-of select="pubDate/@month" />月<xsl:value-of select="pubDate/@day" />日<xsl:value-of select="pubDate/@hour" />時<xsl:value-of select="pubDate/@minute" />分<xsl:value-of select="pubDate/@second" />秒
				</xsl:when>
				<xsl:when test="dc:date">
				日時:<xsl:value-of select="dc:date/@year" />年<xsl:value-of select="dc:date/@month" />月<xsl:value-of select="dc:date/@day" />日<xsl:value-of select="dc:date/@hour" />時<xsl:value-of select="dc:date/@minute" />分<xsl:value-of select="dc:date/@second" />秒
				</xsl:when>
				</xsl:choose>
				</li>
 のように変更して下さい。pubDateが存在しなかった場合、dc:dateを取得
するようにしてあります。

 以上、大変お手数ですが、一度お試し頂ければ幸いです。

Posted: 2008年2月27日(水) 21:04
by bcacsato
webmasterさま、ありがとうございます。
アドバイス通りにやったら、できました!


ところで、画像の話に戻るのですが、“description”の中から
画像のみを抜き出すなんてことは可能なものでしょうか?

“description”をそのまま表示するとなりますと、生成されるページも
元のブログ記事のレイアウトに順じててしまいますよね。

たとえば、次のような使い方をしたいと思っています。

・最新のブログ記事より、最初の画像1枚のみをページ左側に表示
・また、同じブログ記事の本文から最初の100文字を右側に表示

このようなことは可能なものでしょうか?


また、複数のブログのRSSを混合して表示するようなことは、
通常のCMSDの記事同様、無理でしょうか?

Posted: 2008年2月27日(水) 21:45
by webmaster
 bcacsatoさん、お返事ありがとうございます。

 RSS情報の中から画像のみを抜き出す方法ですが、申し訳ありません、CMSD
だけでは難しいと思います。

 ただ、レイアウトを変えるというだけであれば、JavaScriptやCSSなどを
使って、ブラウザ上でいじくる事はある程度可能かと思います。
(JavaScriptやCSSに精通している必要がありますが・・・)

 複数のRSSをまとめる機能についてもCMSDにはございませんが、RSSを
まとめるネットワーク上のツールがたくさん存在します。

 例えば Yahoo!Pipesなどを使えば、無料でしかも簡単に複数のRSSをまとめ、
しかも日付でソートするなどの前処理を行う事ができます。
 (但し、英語のサービスです)

 このようなツールのご利用もぜひご検討下さい。
 ご不明な点はまたご連絡いただければ幸いです。

Posted: 2008年2月27日(水) 21:48
by bcacsato
さっそくのご回答ありがとうございます。

レイアウトはCSSで無理矢理変更しました。

おかげさまで、なんとかサイトが完成しそうです!

いつも、ありがとうございます :lol:

Re: 他のブログのRSSから画像を表示する方法

Posted: 2019年8月06日(火) 10:46
by bcacsato
webmasterさま

エキサイトブログからのRSS取得表示に関して質問です。

エキサイトブログのRSSのURLが下記の通り変更になりました。
https://blog.excite.co.jp/staff/238506280/

そこで、新しいURLに変更したのですが、
「指定された外部XMLは存在しません。src=https://●●●●●.exblog.jp/index.xml 」
と表示されてしまいます。

URLを変更するだけでは、何か問題がありますでしょうか?
恐れ入りますが、よろしくお願いいたします。