我使用FileFeild Image字段获取图像,然后使用File (Field) Paths将文件重命名为随机字符。创建节点别名的正确方法是文件名
我试图做
- 图像内容类型
- 有一个FileField或图片,field_image 与内容类型
- 上传图像,example.jpg
- example.jpg是已更名为Ax54jk.jpg(File Field Paths)
- 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代替文件名?
回答
我最终的文件追查(场)路径代码钩来实现,并使用@下面克莱夫的代码,我能够创建一个别名。我创建了一个模块来执行此操作,因为文件(字段)路径似乎不直接与Pathauto一起工作。
hook_filefield_paths_process_file
我不幸遇到了Pathauto。如果你知道如何解决它,我会很乐意尝试。如果没有,我会尝试你建议的钩子。 – Kirk
我已经实现了这个钩子,并且它允许我按照您的建议将别名设置为文件名。但是,它将别名设置为mysite.com/example.jpg,而不是从mysite.com/Ax54jk.jpg的FileField Paths中重命名的文件名。对此有何建议? – Kirk
我发现了一个文件(字段)路径的钩子,可让我使用您的代码进行更新。我接受你的答案,因为我花了十年的时间才弄清楚如何在代码中完成文件加载。 – Kirk