Nodeコンテンツタイプに画像フィールドを追加しました。ここで、ノードmysite.com/note/123に添付されている画像「image1.jpg」をアップロードすると、画像のパスをmysite.com/node/123/image1.jpgにするにはどうすればよいですか?トークンを使用して画像のサブフォルダーを変更しようとしました。トークン[current-page:path]を使用しましたが、これは、接続しているノードを返しませんが、最後にアクセスしたページを返します(ノード編集フォームか、ajaxとはまったく異なるものなど)。
ファイル(フィールド)パス モジュールを探しているようです:
ファイル(フィールド)パスモジュールは、宛先パスとファイル名でノードトークンを使用する機能を追加することにより、Drupalのコアアップロードモジュール、ファイルフィールドモジュール、およびその他の多くのファイルアップロードモジュールのデフォルト機能を拡張します。
簡単に言うと、ファイル(フィールド)パスを使用すると、トークンベースの置換パターンを使用してアップロードされたファイルを自動的に並べ替えて名前を変更し、Niceクリーンなファイルシステムを維持できます。
まだ安定していないことに注意してください。本番環境で使用する前に、集中的にテストしてください。一方、私はそれ以上何も知りませんし、それがうまくいくかもしれないという事実を知っています。
プログラムによるソリューションが必要な場合は、画像フィールドインスタンスを作成するときに設定配列を使用できます。
'settings' => array(
'file_directory' => 'YOUR_DIRECTORY_HERE',
)
例えば:
// Create the instance.
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => 'article',
'label' => 'Article Image',
'description' => 'An image for the article.',
'required' => TRUE,
'settings' => array(
'file_extensions' => 'png jpg jpeg',
'file_directory' => 'myModule/news', //your wanted attribute
'max_filesize' => '20 MB',
'alt_field' => 1,
'title_field' => 1,
'max_resolution' => '300x200',
'min_resolution' => '200x125',
'default_image' => 0,
),