【发布时间】:2012-12-22 05:09:50
【问题描述】:
我使用 FileFeild Image 字段获取图像,然后使用File (Field) Paths 将文件重命名为随机字符。
我要做什么
- 图片内容类型
- 有一个 FileField 图像,field_image
- 上传内容类型为example.jpg的图片
- example.jpg 重命名为 Ax54jk.jpg(文件字段路径)
- mysite.com/node/523 更改为 mysite.com/Ax54jk
问题
图像确实使用File (Field) Paths 重命名,并且效果很好。问题是我无法让节点重命名以匹配新重命名的文件名。
我的尝试
我尝试使用 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 此时似乎还没有所有的文件数据并且还不可用。
问题
有没有人知道怎么做,即使我写了一个自定义模块?什么钩子可以让我这样做?
有没有办法用Custom Tokens 来获取文件名?
回答
我最终在文件(字段)路径代码中找到了一个要实现的钩子,并使用下面的@Clive 代码,我能够创建一个别名。我创建了一个模块来执行此操作,因为文件(字段)路径似乎不能直接与 Pathauto 一起使用。
hook_filefield_paths_process_file
【问题讨论】: