在Drupal 6中程序化更新节点路径的正确方式

3

我正在使用Drupal6编程方式编辑节点路径,代码如下:

$node = node_load(3);
$node->path = 'some/new/path';
node_save( $node );

当然,这种方法是可行的,但旧别名仍然存在。最好的方法是什么?我没有看到任何路径函数或pathauto函数可以删除旧的别名。难道我只需要在url_alias表上使用SQL来删除别名吗?

1个回答

4

您应该使用path_set_alias来设置别名。

要更新路径,请查看path_nodeapi,例如:

path_set_alias('node/' . $node->nid, $node->path, isset($node->pid) ? $node->pid : NULL, isset($node->language) ? $node->language : '');

但这并不会删除旧的别名,对吗? - Aaron
好的,所以我改用路径函数来代替在节点上保存路径属性,但是是否有一种内部函数可以使用,而不是直接在url_alias表上进行删除SQL操作,因为path_set_alias似乎无法删除旧别名。 - Aaron
如果您提供节点pid,path_set_alias将更新别名(无需删除它)。回答已更新。 - soju

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接