質問箱/3167

カテゴリ
サマリshowrssプラグインでiTMSの詳細情報を表示させたい
バージョン1.4.5_1
投稿者ryo?
状態完了
投稿日2005-08-10 (水) 16:04:45

質問

質問よろしくお願いします。

PukiWikiのデフォルトのプラグイン「showrss」についてなのですが、
iTunes Music Store RSS Feed Generator」 を使ってRSSを作成後、showrssのプラグインを使い

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

とすると タイトルのみのRSSが表示されます。
しかし、RSSのソースを見ると<item></item>の間までにアーティストの情報やアルバム、 ジャンル、ジャケットの画像と様々な情報が含まれていて、 これを何とかして表示させたいのですが何とかなりませんか?

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

回答

  • 外部からのHTML要素を、何ら洗浄することなく出力することに関する問題点を理解した上でなら、簡単な改造で可能です。 -- 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 2005-08-10 (水) 23:17:05
  • 引数のrssURLを、元のrssURLからのデータに攻撃コードを潜ませたものを送ってくるものに差し替える、というようなのもすぐに思いつきます。頻繁に編集するページでなければ、これはなかなか気付かないでしょう。凍結ページのみで有効になるようにするくらいはしておいた方が良いかったかな。 -- 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? 2005-08-10 (水) 23:54:53
  • コンマが一個足りませんし、0ではダメです。 -- 2005-08-10 (水) 23:57:13
  • スミマセン。こっちに書いた時に一つ足りてなかったです。後もう一度showrssを改造し直してみたら無事動作しました。ありがとうございます。後は見やすいようにタグつけてみたりしてみます。 -- ryo? 2005-08-11 (木) 00:09:57

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-25 (火) 18:14:38
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u5. HTML convert time: 0.220 sec.

OSDN