php :: 商品ページのpdfへリンクをサクサク挿入
2007/5/1 (Tue) at 2:36 pm
いまつくってるお客様のサイトで、各商品ページにそれぞれの商品を説明するpdfへのリンクがついてます。こんなかんじで↓
こういうのがすべてのカタログページの下部に出てくる。pdfの数は不定だ。多くて3つ、たいてい1つ、たまにないページもある。カタログページは30ページ以下なのでひとつひとつリンクを張っていってもよいが、今後の更新する手間を考えるとたいへんだし、そこの会社はバリバリ新商品を開発して、ガシガシ更新していきたいというヤルキに満ちあふれているので、そのたんびにいちいち<a href=なんちゃらなんてやっていたら日が暮れちゃうだろう。てわけでphpで自動にhtmlを吐き出すシカケをつくってみた。こりゃべんり。
各商品ページのディレクトリ内に "pdf" というディレクトリをつくり、そこにpdfファイルをガシガシ放り込んでいく。そのpdfファイルに対応する名前のテキストファイルを用意し(abc.pdfならabc.txt)、そこにはそのpdfのタイトルを一行書いとく。"pdf" ディレクトリの中はこんなかんじになる↓
abc.pdf
abc.txt
hello.pdf
hello.txt
happy.pdf
happy.txt
こうしとくと勝手にこんなhtmlを吐く↓
<h4>PDF/画像データ</h4>
abcのタイトル [<span class="pdf"><a href="./pdf/abc.pdf" title="abcのタイトル">PDFファイル ○○ MB</a></span> ]<br />
てかんじで残り同様
pdfフォルダがない場合はreturn nothingでスルーされる。これで不注意なリンク切れの心配はなくなるし、だいぶかんたんになった。どうせならpdfのタイトル名も自動取得したいが、ファイル名を日本語にするのはサーバの設定とかたいへんだし(wikipediaみたいにしないといけない)、pdfの中身を読むライブラリがあったような気がするけど、私はよく知らないしなんだか重くなりそうなので今回はこれでいいや。pdfのタイトル名自動取得は今後の課題としよう。
このスクリプトを下に挙げときます。似たような状況を打開したいひとは参考にどうぞ。
これをサーバのどっかにあげといて、使いたいページからincludeし、
echo grab_pdf_tag();
と書いとくとhtmlが自動挿入される。すべてのページにincludeナントカと書くのはめんどいなと思うかもしれないが、いまつくってるやつはMovable Typeでやってるので、エントリのテンプレに書いとくだけでぜんぶに挿入されるのだ。
これと似たパターンで、ディレクトリの中に画像ファイルをドバーと放り込んでおくと勝手にアルバムページをつくるというのもよくある。アレなサイトでよくやります。今回のはかなりイージーバージョンだが、これを発展させてフォルダの中のフォルダを読むようにしていけば何百とある画像フォルダの中身をイッパツでアルバム表示させるというのもかんたんにできるようになる。
ところで余談だが、このscriptの中にある関数の中で、ディレクトリ内のファイル名を取得するのに私は旧来のreaddir関数を使っているが、php5以降はscandir関数が使えるようになったのでべんりになった。でも、未だphp4のサーバも多いので、結局いつもこのreaddirでやることが多い。
もっと余談だが、パスを取得するのにrealpath関数を使うとシンボリックリンクを展開して常に正しい絶対パスを返してくれるのでほんとはこれでやったほうがよいのだろう。よくあるハマるパターンだと、Apacheの設定で、cgi-binとか特定ディレクトリをほんとは別の場所にあるんだけど、http://yourname.com /cgi-bin/でアクセスできるようにしてたりするじゃないですか!アレだと環境変数で取得したパスと変わったりしてトホホなことになる。バタバタしてると忘れてしまう。
もっと余談だが、grab_filesize()というユーザー関数が下の中にあるでしょう?これよく使う。ファイルへのパスを与えると、ファイルサイズを取得し、その大きさに応じてB/KB/MB/GBをくっつけて小数点をまるめて返してくれるというものだ。単純だけど重宝してます。
てわけで、社長〜!がんばってますです。
コメント・プリーズ!
PROFILE![]()
藤居ヒロヤ。ウェブデザイナー/ウェブディレクター。ウェブデザインオフィス、3OT NET主宰。名古屋市中区。「優しいデザイン」「激しいデザイン」「正しいデザイン」「セクシーなデザイン」「泣けるデザイン」「もっともなデザイン」... 。あなただけのウェブデザインを丹精込めておつくり致します。見積り依頼等、お気軽にお問い合わせ下さい。
- www. http://www.3ot.net/
- email. admin [atmark] 3ot.net
- phone. 052 323 7376
RECENT ENTRIES![]()
- トウモロコシがおいしい
- ダイコクドラッグが近所にできた
- ライブドアのBLOGOSをよく読みます
- jQuery :: 画像のリロード
- タムの絵
- Javascript :: ecl.jsにながらくお世話になりました
- サーバ移転&ブログのデザインをすこし変えました
- php :: 正規表現 :: 名前つきキャプチャというのを習った
- jQuery :: ネストしたリスト + ui.sortable.js
- jQuery :: event delegationてナニ?
RECENT COMMENTS![]()
- embedタグを使わずにYouTubeとかのFlashを貼る for W3C [6]
- Rusk (11/05)
- ふ (09/07)
- ふ (09/07)
- 3次元写真撮影機フォトシミリ (09/07)
- jQuery :: チェックボックスが並んだテーブルをjQueryでどーこーするサンプル [5]
- 初心者 (08/05)
- s-box.js - Lightbox-like Javascript with jQuery and SimpleModal plugin [6]
- Hiroya (05/04)
- Billie (05/04)
- CSS :: height:1pxのボックス要素をつくるには [2]
- ふ (02/19)
- にゃん (02/18)
- php :: MagpieRSS :: 他サイトのRSSを表示するクラスライブラリ [2]
- ふ (02/04)
- 青樹洋文 (02/03)
- トウモロコシがおいしい [4]
- ふ (07/09)
- いら (07/03)
- ふ (07/03)
- いら (07/03)
TOOLS![]()
- s-box.js
- Link2WikipediaEncoder
- QR_CodeGenerator
- PagerankChecker
- IntrocucePhpCodeOnBlog
- FaviconGenerator
- Whois
- SiteThumbnailGenerator (Beta)
- EmailAddressEncoder (Legacy!)
BOOKMARKS![]()
RESOURCES![]()
- 99designs
- COMPUTER ARTS
- CPAN
- PHP標準関数逆引き辞典
- SMASHING MAGAZINE
- UNIXコマンド
- ajaxload.info
- deviantART
- deviantART :: PS Brushes
- deviantART :: PS Shapes
- fotosearch.com
- hotscripts.com
- hotscripts.com :: php
- iconlet.com
- jQuery Reference
- php.net :: 関数レファレンス
- psbrushes.net
- turnkeyforms.com
ARCHIVE![]()
- 2010年7月 (1)
- 2010年1月 (1)
- 2009年12月 (2)
- 2009年11月 (3)
- 2009年10月 (1)
- 2009年9月 (9)
- 2009年8月 (7)
- 2009年6月 (7)
- 2009年5月 (1)
- 2009年4月 (8)
- 2009年3月 (1)
- 2009年1月 (1)
- 2008年12月 (3)
- 2008年11月 (1)
- 2008年4月 (1)
- 2008年1月 (3)
- 2007年12月 (1)
- 2007年10月 (3)
- 2007年9月 (5)
- 2007年8月 (4)
- 2007年7月 (13)
- 2007年6月 (22)
- 2007年5月 (30)
- 2007年4月 (15)
- 2007年3月 (12)
- 2007年2月 (7)
- 2007年1月 (16)
- 2006年12月 (23)
- 2006年11月 (9)
- 2006年10月 (3)
- 2006年9月 (2)
- 2006年8月 (6)
- 2006年7月 (4)
- 2006年6月 (6)
- 2006年5月 (10)
- 2006年3月 (17)
- 2006年2月 (8)
- すべての投稿 (266)
