**[[質問箱3/167]] [#ydf05182]
#author("2018-03-11T15:54:21+09:00;2010-05-25T18:14:38+09:00","","")
**[[質問箱/3167]] [#ydf05182]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|showrssプラグインでiTMSの詳細情報を表示させたい|
|~バージョン|1.4.5_1|
|~投稿者|[[ryo]]|
|~状態|完了|
|~投稿日|&new{2005-08-10 (水) 16:04:45};|
***質問 [#sbe6f473]
質問よろしくお願いします。

PukiWikiのデフォルトのプラグイン「showrss」についてなのですが、~
「[[iTunes Music Store RSS Feed Generator>http://phobos.apple.com/WebObjects/MZSearch.woa/wa/MRSS/rssGeneratorInput]]」
を使ってRSSを作成後、showrssのプラグインを使い

~#showrss(http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wpa/MRSS/topsongs/sf=143462/limit=10/rss.xml)

とすると
//----
//>
//#showrss(http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wpa/MRSS/topsongs/sf=143462/limit=10/rss.xml)
//----
//のようなRSSが表示されます。~
タイトルのみのRSSが表示されます。~
しかし、RSSのソースを見ると<item></item>の間までにアーティストの情報やアルバム、
ジャンル、ジャケットの画像と様々な情報が含まれていて、
これを何とかして表示させたいのですが何とかなりませんか?

それと、RSSで表示できる1~5までは表示。6~10番目までは、テキストだけの表示。
と言う風な設定もできると尚良いのですが

***回答 [#na5d982e]
-外部からのHTML要素を、何ら洗浄することなく出力することに関する問題点を理解した上でなら、簡単な改造で可能です。 --  &new{2005-08-10 (水) 22:12:01};
 --- showrss.inc.php.orig    Sun Jan 23 11:06:44 2005
 +++ showrss.inc.php    Wed Aug 10 22:06:16 2005
 @@ -36,9 +36,10 @@
      }
  
      $array  = func_get_args();
 -    $rssurl = $tmplname = $usecache = $usetimestamp = '';
 +    $rssurl = $tmplname = $usecache = $usetimestamp = $usecontent  = '';
  
      switch (func_num_args()) {
 +    case 5: $usecontent        = is_numeric(trim($array[4])) ? trim($array[4]): 0;
      case 4: $usetimestamp = trim($array[3]);
      case 3: $usecache     = $array[2];
      case 2: $tmplname     = strtolower(trim($array[1]));
 @@ -55,7 +56,7 @@
      if ($rss === FALSE)
          return '<p>showrss: cannot get rss from server.</p>' . "\n";
  
 -    $obj = new $class($rss);
 +    $obj = new $class($rss,$usecontent);
  
      $timestamp = '';
      if ($usetimestamp > 0) {
 @@ -71,16 +72,17 @@
      var $items = array();
      var $class = '';
  
 -    function ShowRSS_html($rss)
 +    function ShowRSS_html($rss,$usecontent)
      {
          foreach ($rss as $date=>$items) {
              foreach ($items as $item) {
                  $link  = $item['LINK'];
                  $title = $item['TITLE'];
 +                $cont  = $usecontent-- > 0 ? strtr($item['CONTENT:ENCODED'],
 +                array_flip(get_html_translation_table(HTML_ENTITIES))):'';
                  $passage = get_passage($item['_TIMESTAMP']);
                  $link = '<a href="' . $link . '" title="' .  $title . ' ' .
                      $passage . '" rel="nofollow">' . $title . '</a>';
 -                $this->items[$date][] = $this->format_link($link);
 +                $this->items[$date][] = $this->format_link($link).$cont;
              }
          }
      }
-個別の要望にあわせた改造ねたになる感じですね。しかしHTML混じりデータを送りつけるとはすごいですね (^^; 安直なインクルードを行っているサイトに対してサーバーないし中間にいる者からXSSで攻撃できますよ? -- [[henoheno]] &new{2005-08-10 (水) 23:17:05};
-引数のrssURLを、元のrssURLからのデータに攻撃コードを潜ませたものを送ってくるものに差し替える、というようなのもすぐに思いつきます。頻繁に編集するページでなければ、これはなかなか気付かないでしょう。凍結ページのみで有効になるようにするくらいはしておいた方が良いかったかな。 --  &new{2005-08-10 (水) 23:38:09};
  function plugin_showrss_convert()
  {
 +    global $vars;
で、
 +    case 5: $usecontent = is_freeze($vars['page']) &&
 +            is_numeric(trim($array[4])) ? trim($array[4]): 0;
とか。
-ありがとうございます。いろいろ試して自分でやっていたのですが、初めての分野でさっぱりでした。少し解ってきたのですが、showrssを改造した後に、アップロードした後確認してみると、はじめに投稿したshowrssとまったく変化してないんですが、showrss.inc.php自体が間違っているのか、#showrss(アドレス,,,0)と言う記述が間違っているのか。 -- [[ryo]] &new{2005-08-10 (水) 23:54:53};
-コンマが一個足りませんし、0ではダメです。 --  &new{2005-08-10 (水) 23:57:13};
-スミマセン。こっちに書いた時に一つ足りてなかったです。後もう一度showrssを改造し直してみたら無事動作しました。ありがとうございます。後は見やすいようにタグつけてみたりしてみます。 -- [[ryo]] &new{2005-08-11 (木) 00:09:57};

//#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.180 sec.

SourceForge