RSSにサムネイル画像を表示させたい

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
mokujin14
アクティブユーザー
記事: 26
登録日時: 2007年8月10日(金) 16:42

RSSにサムネイル画像を表示させたい

投稿記事 by mokujin14 » 2007年9月14日(金) 17:25

webmaster 様

いつもお世話になっております。

日記プログラムに投稿された画像(サムネイル)をRSSに反映させることは可能ですか?



宜しくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: RSSにサムネイル画像を表示させたい

投稿記事 by webmaster » 2007年9月17日(月) 18:06

 mokujin14さん、ご質問ありがとうございます。
 回答が遅れまして申し訳ありません。

 RSSに画像を含める方法にはいろいろありますが、オーソドックスな方法は
item要素のdescriptionをCDATAセクションにして、その中にHTMLを直接
書き込む方法です。

 例えば、スキーマに"description1"というtextarea項目があり、そこには
HTMLを直接書き込んでいて、imgタグなどもそこに書き込まれているという
場合には、rss用のデザイン定義で次のようにします。

コード: 全て選択

<item rdf:about="{$entryphp}{@href}">
    <title><xsl:value-of select="title" /></title>
    <link><xsl:value-of select="concat($entryphp,@href)" /></link>
    <description><xsl:value-of select="description1" /></description>
 となっている箇所を、

コード: 全て選択

<item rdf:about="{$entryphp}{@href}">
    <title><xsl:value-of select="title" /></title>
    <link><xsl:value-of select="concat($entryphp,@href)" /></link>
    <description><xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
        <xsl:value-of select="description1" disable-output-escaping="yes" />
    <xsl:text disable-output-escaping="yes">]]></xsl:text></description>
 のようにすればOKです。肝は、descriptionの中を、

コード: 全て選択

<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
 と、

コード: 全て選択

<xsl:text disable-output-escaping="yes">]]></xsl:text>
 で囲み、中のxsl:value-of には disable-output-escaping="yes" を指定する
という手順になります。

 もし、description1項目がHTMLではなく、画像ファイルがあればそれを自動的
にRSSに埋め込みたい、という場合には、上記と同様の手順で、description要素の
中にimgタグを直接記述して下さい。

コード: 全て選択

<item rdf:about="{$entryphp}{@href}">
    <title><xsl:value-of select="title" /></title>
    <link><xsl:value-of select="concat($entryphp,@href)" /></link>
    <description><xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
        <div><img src="{image1}" /></div>
        <xsl:value-of select="description1" disable-output-escaping="yes" />
    <xsl:text disable-output-escaping="yes">]]></xsl:text></description>
 img要素をdiv要素で囲ったのは、見栄えの為です。不要な場合には消して
下さい。

mokujin14
アクティブユーザー
記事: 26
登録日時: 2007年8月10日(金) 16:42

表示できました

投稿記事 by mokujin14 » 2007年9月18日(火) 15:20

webmaster 様

いつもありがとうございます。
教えていただいたCodeで画像の表示ができました。

以下、私が記述したCodeです。

コード: 全て選択

<description>

<!--画像が投稿された時の処理-->
<xsl:if test="photo1/text()">
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text> 
<div><img src="{photo1}&w=150&h=150" /></div> 
<xsl:value-of select="description1" disable-output-escaping="yes" /> 
<xsl:text disable-output-escaping="yes">]]></xsl:text>
<xsl:value-of select="body" />
</xsl:if>

<!--画像がない時の処理-->
<xsl:if test="photo1=''">
<xsl:value-of select="body" />
</xsl:if>

</description>
有り難うございました。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 表示できました

投稿記事 by webmaster » 2007年9月18日(火) 15:49

 mokujin14さん、ご報告ありがとうございます。
 うまく表示されたとのことで安心しました。

 Codeについてですが、description1というのはサンプル上での仮のものです
ので、今回mokujin14さんの使われている"body"という項目名に合わせて、

コード: 全て選択

<description>

<!--画像が投稿された時の処理-->
<xsl:if test="photo1/text()">
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text> 
<div><img src="{photo1}&w=150&h=150" /></div> 
<xsl:value-of select="body" disable-output-escaping="yes" /> 
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</xsl:if>

<!--画像がない時の処理-->
<xsl:if test="photo1=''">
<xsl:value-of select="body" />
</xsl:if>

</description>
 の方がよりうまく動作するかもしれません。
 お時間のある時にでも、一度お試し頂ければ幸いです。

返信