FileFeild Image フィールドを使用して画像を取得し、File (Field) Pathsを使用してファイルの名前をランダムな文字に変更しています。
私がやろうとしていること
- 画像コンテンツ タイプ
- FileField 画像、field_image を持っています
- コンテンツ タイプ example.jpg を含む画像をアップロードする
- example.jpg は Ax54jk.jpg (ファイル フィールド パス) に名前が変更されました
- mysite.com/node/523 は mysite.com/Ax54jk に変更されます
問題
画像はファイル(フィールド)パスで名前が変更され、完全に機能します。問題は、新しく名前が変更されたファイル名と一致するようにノードの名前を変更できないことです。
私が試したこと
の Image コンテンツ タイプのパターンを設定する Pathauto を使用しようとしましたが[node:field_image]
、Pathauto は最初のノード作成時にエイリアスを追加できません。これは、フック呼び出しの順序に関係していると思われます。
私もこのフックを試しました
function MYMODULE_node_insert($node) {
if ($node->type == 'image') {
$filename = $node->field_image['und'][0]['filename'];
// do stuff
$node->path['alias'] = $result;
}
}
このフックで$node->field_image
は、この時点ですべてのファイル データが存在していないようで、まだ利用できません。
質問
カスタムモジュールを書いたとしても、これを行う方法を知っている人はいますか? これを可能にするフックは何ですか?
代わりにカスタムトークンでファイル名を取得する方法はありますか?
答え
私は最終的にファイル (フィールド) パス コードで実装するフックを追跡し、以下の @Clive のコードを使用して、エイリアスを作成することができました。File (Field) Paths は Pathauto で直接動作しないように見えるため、これを行うモジュールを作成しました。
hook_filefield_paths_process_file