web-dev-qa-db-ja.com

テンプレート内のimagecacheパスへのアクセス

ImageFieldモジュールをImagecacheと一緒に使用して、コンテンツタイプの1つの画像を表示しています。

Contemplateを使用しているコンテンツ本文を表示するために、次の方法で画像へのパスにアクセスしています。

'[...]/imagecache/[preset]/[...]/'.$node->field_picture[0]['filename'] 

これは通常は機能しますが、誰かが既存の画像と同じファイル名で画像をアップロードすると壊れます。ファイル自体には、filename_0.jpgではなくfilename.jpgという名前が自動的に付けられますが、アクセスしているImageFieldのファイル名変数はfilename.jpgのままです。

もちろん、これにより古い画像が表示されます。 filename変数が期待どおりに機能しないようですが、Imagecacheで生成されたファイルにアクセスする正しい方法は何でしょうか。

1
Mad Scientist

Contemplateモジュールの使用は、PHPコードをデータベースに配置するため、お勧めできません。これは、一般にセキュリティの脆弱性と見なされ、パフォーマンスが低いと考えられています。

代わりに theme( 'imagecache'、...) を使用すると、適切なパスを持つHTMLimgタグが返されます。

3
c4rl