**[[続・質問箱/463]] [#w3e82199] |RIGHT:70|LEFT:410|c |~サマリ|指定したフォルダに入ってる画像をランダムに表示させたい| |~バージョン|PukiWiki 1.4.4| |~投稿者|[[はるほ]]| |~状態|質問| |~投稿日|&new{2004-12-03 (金) 16:45:47};| ***質問 [#wc1f19f0] 指定したフォルダに入ってる画像をランダムに表示させたいのですが、いい方法はないでしょうか? ***回答 [#o9878309] -普通に特定のディレクトリを検索して特定の拡張子のファイルをつかまえ、ランダムにひとつ抜き出して中身が本当に画像なのかをチェックして、出力するというPHPスクリプトを個別に書くのが一番軽いと思います。乱数以外の基本的な手法についてはrefプラグインのソースがそのまま使えると思います。 -- [[henoheno]] &new{2004-12-03 (金) 23:32:11}; -「特定のページに添付されたファイルの中から」という場合は、refプラグインの改造でいけると思いますよ。attachよりも軽いです -- [[henoheno]] &new{2004-12-03 (金) 23:33:08}; -拙作で申し訳ないのですが、[[自作プラグイン/rothtml.inc.php]]で事足りませんか? -- [[teanan]] &new{2004-12-04 (土) 03:13:36}; -では、henohenoさんの「特定ページに添付されたファイルの中から」案でも一つ。 &ref(randimg.inc.php); -- [[ARAI]] &new{2004-12-04 (土) 08:00:25}; -みなさまどうもありがとうございます。そのものズバリの機能やプラグインはないのですね。PHPスクリプトを作る技術は持ってないです。rothtml.inc.phpはhtml作成が必要、randimg.inc.phpはどこかのページに添付する必要があるんですね。 -- [[はるほ]] &new{2004-12-04 (土) 22:16:44}; -ref でページにフォルダ内にファイルの一覧をURLで書くという条件なら[[自作プラグイン/randommes.inc.php]]があります。 -- [[みこ]] &new{2004-12-04 (土) 22:34:28}; -ただ、サーバ内のフォルダを自動的にピックアップするなら、ちゃんと添付してrandimg.inc.phpを使用するほうがいいかとおもいます。((なぜなら、その画像はサーバ管理下であろうがなかろうが、PukiWiki管理下の画像ではないということになるから・・・)) -- [[みこ]] &new{2004-12-04 (土) 22:40:05}; -訪問者が飽きないように、画像ファイルを1000枚くらい置きたいので、添付していくのはちょっと骨ですね。ありがとうございます。 -- [[はるほ]] &new{2004-12-04 (土) 22:53:46}; -あまり好みの手ではありませんが… &ref(randimg2.inc.php); -- [[ARAI]] &new{2004-12-04 (土) 23:23:34}; -ああ、同一ページに多数置くなら、 -- &new{2004-12-04 (土) 23:35:06}; function randimg2_get_image( $page) { static $img; if ( $img == '' ) { foreach ( glob(RANDIMG2_SEARCHDIR.'*.*') as $afile ) { if (preg_match('/\.(jpe?g|png|gif|bmp)$/i',$afile)) { $img[] = basename($afile); } } list($usec) = explode(' ',microtime()); srand($usec*100000000); } return RANDIMG2_BASEURL.$img[rand(0,count($img)-1)]; } とした方が良いかもしれないです。 -ありがとうございます。さっそくrandimg2を試したんですが、画像が表示されるのではなく、添付されたファイルが出てきました。これでいいんでしょうか? -- [[はるほ]] &new{2004-12-05 (日) 15:28:35}; -良くありません。&worried; 他の問題もあったので、多少見直した2版 &ref(randimg2.inc.php.2);に差し替え、RANDIMG2_BASEURLの設定を見直してみて下さい。 -- [[ARAI]] &new{2004-12-05 (日) 17:35:57}; -ニーズが「画像ファイルを1000枚くらい置きたい(入れ替えの簡便さも暗に含む)」というという事ですので、PukiWikiの機能を使わないこと(最初のコメント)も念頭に置いた方がいいですよ (^^; -- [[henoheno]] &new{2004-12-05 (日) 19:00:09}; --出来るだけ短く済ます、プラグインを書換えなくとも多少は体裁変更等が可能、管理者以外に大したことは出来ない、そういう条件で考えたらこうなりました。この程度のPukiWiki機能利用はご容赦を。&worried; -- [[ARAI]] &new{2004-12-05 (日) 20:09:52}; -どうもです。早速試してみたんですが、not foundと表示されてしまいます。フォルダの指定の仕方をもう少し詳しく教えて頂けないでしょうか? -- [[はるほ]] &new{2004-12-05 (日) 19:02:41}; -う~む &worried; これもディレクトリ指定云々の抱える問題なのです。 PHPスクリプト実行におけるパスが掴めていないと分かり難い。 -+- [pukiwiki] + COPYING.txt | + README.en.txt.gz | … | + wiki.en.tgz | +- [img] + image1.jpg + image2.jpg … のようなディレクトリ構成だとして、PukiWikiのURLが http://example.org/pukiwiki/pukiwiki.php だとすると、 RANDIMG2_SEARCHDIR → ../img/ RANDIMG2_BASEURL → http://example.org/img/ です。末尾の'/'は省略しないで下さい。~ これで分からなければ、設置しているPukiWikiのURL、表示したい画像の 内一つのURLを教えてください。 -- [[ARAI]] &new{2004-12-05 (日) 19:39:36}; --追伸、先頭部のコメント // ページ名が省略された場合は、現在のページ は消し忘れです。意味はありません。オプションに関しては、このプラグインは #randimg(300x200,ランダム画像) とすれば #ref(http://example.org/img/XXXXX.jpg,300x200,ランダム画像) と等価(勿論XXXXX.jpgはランダムに変化する)な出力が得られるものですので、 refプラグインのヘルプを見てください。~ 'not found.'は、対象となる画像ファイルを一つも発見できなかった場合、 refプラグインに渡す前に出力されるので、RANDIMG2_SEARCHDIRの指定を 誤っているものと思われます。~ 画像が表示されず、代替テキストのみの場合は、その画像が閲覧 可能なものであるならば、RANDIMG2_BASEURL設定の問題です。 -- &new{2004-12-05 (日) 19:47:16}; -丁寧な解説ありがとうございます。おかげさまで解決しました。 pukiwiki付属のロゴとかで -+-pukiwiki.php +-[images] +img01.jpg +img02.jpg をテストしようとしてたので // 検索ディレクトリ指定 (絶対、あるいはpukiwiki.phpのある場所からの相対) define( RANDIMG2_SEARCHDIR, './image/'); // 検索ディレクトリのURL define( RANDIMG2_BASEURL, 'http://example.org/image/'); として解決しました。また pukiwiki.php と lib/pukiwiki.php とどっちなのかも混乱してましたが、ぶじ解決しました。ありがとうございます。-- [[はるほ]] &new{2004-12-05 (日) 20:21:31}; -&worried; そういえば、1.4.4以降にはlib/にもpukiwiki.phpがあったのですね。解決して良かったです。画像ディレクトリに変なものを入れられないようお気をつけ下さい。 -- [[ARAI]] &new{2004-12-05 (日) 20:50:26}; #comment