我正在使用 FileFeild Image 字段来获取图像,然后我正在使用文件(字段)路径将文件重命名为随机字符。
我正在尝试做的事情
- 图片内容类型
- 有一个 FileField 图像,field_image
- 上传内容类型为 example.jpg 的图片
- example.jpg 重命名为 Ax54jk.jpg(文件字段路径)
- mysite.com/node/523 更改为 mysite.com/Ax54jk
问题
该图像确实使用文件(字段)路径重命名,并且效果很好。问题是我无法让节点重命名以匹配新重命名的文件名。
我试过的
我尝试使用 Pathauto,在其中为 Image 内容类型设置了模式[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 代码,我能够创建一个别名。我创建了一个模块来执行此操作,因为文件(字段)路径似乎不能直接与 Pathauto 一起使用。
hook_filefield_paths_process_file