我一直在寻找如何在Drupal 6中创建节点的方法。我在stackoverflow上找到了一些条目,但问题似乎要么是针对旧版本的,要么解决方案对我不起作用。好的,那么这是我当前尝试创建节点的过程:
$node = new stdClass();
$node->title = "test title";
$node->body = "test body";
$node->type= "story";
$node->created = time();
$node->changed = $node->created;
$node->status = 1;
$node->promote = 1;
$node->sticky = 0;
$node->format = 1;
$node->uid = 1;
node_save( $node );
当我执行这段代码时,节点被创建了,但当我进入管理页面时,它会抛出以下错误:
警告:在C:\ wamp \ www \ steelylib \ includes \ menu.inc的第258行foreach()提供了无效的参数。
警告:在C:\ wamp \ www \ steelylib \ includes \ menu.inc的第258行foreach()提供了无效的参数。
用户警告:在C:\ wamp \ www \ steelylib \ sites \ all \ modules \ nodecomment \ nodecomment.module的第409行中,重复输入“36”以获取键1查询:INSERT INTO node_comment_statistics(nid,last_comment_timestamp,last_comment_name,last_comment_uid,comment_count)VALUES(36,1269980590,NULL,1,0)。
警告:在C:\ wamp \ www \ steelylib \ includes \ menu.inc的第258行foreach()提供了无效的参数。
警告:在C:\ wamp \ www \ steelylib \ includes \ menu.inc的第258行foreach()提供了无效的参数。
我查看了不同的教程,所有教程似乎都遵循相同的过程。我不确定我做错了什么。我正在使用Drupal 6.15。当我回滚数据库(回到更改之前)时,错误消失了。
编辑: 经过一番尝试后,我发现我的hook_menu()中的“access arguments”有误,但是关于重复输入,我从未能够找到原因。
nid
为36
的节点了。这就是为什么它在报错。nid
必须是唯一的,因为它是主键。你是否需要传递其他参数给node_save
函数? - prodigitalson