ImageFieldモジュールをImagecacheと一緒に使用して、コンテンツタイプの1つの画像を表示しています。
Contemplateを使用しているコンテンツ本文を表示するために、次の方法で画像へのパスにアクセスしています。
'[...]/imagecache/[preset]/[...]/'.$node->field_picture[0]['filename']
これは通常は機能しますが、誰かが既存の画像と同じファイル名で画像をアップロードすると壊れます。ファイル自体には、filename_0.jpg
ではなくfilename.jpg
という名前が自動的に付けられますが、アクセスしているImageFieldのファイル名変数はfilename.jpg
のままです。
もちろん、これにより古い画像が表示されます。 filename変数が期待どおりに機能しないようですが、Imagecacheで生成されたファイルにアクセスする正しい方法は何でしょうか。
Contemplateモジュールの使用は、PHPコードをデータベースに配置するため、お勧めできません。これは、一般にセキュリティの脆弱性と見なされ、パフォーマンスが低いと考えられています。
代わりに theme( 'imagecache'、...) を使用すると、適切なパスを持つHTMLimgタグが返されます。