web-dev-qa-db-ja.com

アップロードした画像/ファイルのパスを変更して、画像フィールドを介して接続するノードのパスが含まれるようにするにはどうすればよいですか?

Nodeコンテンツタイプに画像フィールドを追加しました。ここで、ノードmysite.com/note/123に添付されている画像「image1.jpg」をアップロードすると、画像のパスをmysite.com/node/123/image1.jpgにするにはどうすればよいですか?トークンを使用して画像のサブフォルダーを変更しようとしました。トークン[current-page:path]を使用しましたが、これは、接続しているノードを返しませんが、最後にアクセスしたページを返します(ノード編集フォームか、ajaxとはまったく異なるものなど)。

2
Turion

ファイル(フィールド)パス モジュールを探しているようです:

ファイル(フィールド)パスモジュールは、宛先パスとファイル名でノードトークンを使用する機能を追加することにより、Drupalのコアアップロードモジュール、ファイルフィールドモジュール、およびその他の多くのファイルアップロードモジュールのデフォルト機能を拡張します。

簡単に言うと、ファイル(フィールド)パスを使用すると、トークンベースの置換パターンを使用してアップロードされたファイルを自動的に並べ替えて名前を変更し、Niceクリーンなファイルシステムを維持できます。

まだ安定していないことに注意してください。本番環境で使用する前に、集中的にテストしてください。一方、私はそれ以上何も知りませんし、それがうまくいくかもしれないという事実を知っています。

4
Mołot

プログラムによるソリューションが必要な場合は、画像フィールドインスタンスを作成するときに設定配列を使用できます。

'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,
      ),
0
Mouneer