【发布时间】:2010-03-30 20:35:01
【问题描述】:
我一直在寻找如何在 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 );
当我执行此代码时,会创建节点,但是当我得到管理页面时,它会抛出以下错误:
警告:在第 258 行的 C:\wamp\www\steelylib\includes\menu.inc 中为 foreach() 提供的参数无效。
警告:在第 258 行的 C:\wamp\www\steelylib\includes\menu.inc 中为 foreach() 提供的参数无效。
用户警告:键 1 查询的重复条目“36”:在 C:\wamp\www\ 中插入到 node_comment_statistics (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (36, 1269980590, NULL, 1, 0) steelylib\sites\all\modules\nodecomment\nodecomment.module 在第 409 行。
警告:在第 258 行的 C:\wamp\www\steelylib\includes\menu.inc 中为 foreach() 提供的参数无效。
警告:在第 258 行的 C:\wamp\www\steelylib\includes\menu.inc 中为 foreach() 提供的参数无效。
我看过不同的教程,似乎都遵循相同的过程。我不确定我做错了什么。我正在使用 Drupal 6.15。当我回滚数据库时(在我进行更改之前),错误就消失了。
编辑:
在玩了一会儿之后,我确实发现我的 hook_menu() 中的“访问参数”有一个错误,但就重复条目而言,我永远无法弄清楚。
【问题讨论】:
-
您已经有一个具有
nid的36的节点。这就是它大喊大叫的原因。nid作为主键必须是唯一的。node_save是否还有其他参数需要传递? -
你的问题似乎是节点注释模块。
-
所有表在默认安装中都有自动增量 ID,因此错误来自未知事物(模块、手动更改数据库、托管问题......)。也尝试通过 drupal_execute 创建节点:drupal.org/search/apachesolr_search/…
-
我同意你所说的。但是,id 为 36 的节点是正在创建的节点。这几乎就像它试图插入两次一样。我想说错误出现在评论模块中,但是当任何其他模块创建节点时没有错误,所以我不能说它是评论模块。
标签: php drupal drupal-nodes