Drupal 如何使用Workbench将节分配给特定节点?

Drupal 如何使用Workbench将节分配给特定节点?,drupal,drupal-7,drupal-modules,drupal-permissions,Drupal,Drupal 7,Drupal Modules,Drupal Permissions,我正在使用自定义模块创建节点 $node = new stdClass(); $node->type = $link['content_type']; node_object_prepare($node); $node->uid = $user->uid; $node->name = $user->name; $node->title = $html['title']; $node->language = LANGUAGE_NONE; $node-

我正在使用自定义模块创建节点

$node = new stdClass();
$node->type = $link['content_type'];

node_object_prepare($node);

$node->uid = $user->uid;
$node->name = $user->name;

$node->title = $html['title'];
$node->language = LANGUAGE_NONE;
$node->body[$node->language][0]['value'] = $html['html'];
$node->body[$node->language][0]['summary'] = $html['summary'];
$node->body[$node->language][0]['format'] = 'filtered_html';

$node->menu['enabled'] = 0; // 1 to enable providing a link in main menu
$node->menu['link_title'] = urlencode($html['title']);
$node->menu['description'] = urlencode($html['summary']);
$node->menu['parent'] = 'main-menu:0';

$node->menu['weight'] = 5;
$node->path['alias'] = urlencode($html['title']) . time();
$node->comment = 1;

$node->status = 1;        // 1 means published
$node->promote = 0;
$node->revision = 0;

$node->changed = $_SERVER['REQUEST_TIME'];
$node->created = $_SERVER['REQUEST_TIME'];

node_submit($node);
@node_save($node);

$node->path['alias'] .= '+' . $node->nid;

node_submit($node);
@node_save($node);

db_update('node_revision')
    ->fields(array('uid' => $node->uid))
    ->condition('vid', $node->vid)
    ->execute();
但是现在我需要为每个节点分配一个工作台部分,所以我尝试这样做:

$node->workbench_access = array('66');

node_submit($node);
@node_save($node);

$node->path['alias'] .= '+' . $node->nid;

node_submit($node);
@node_save($node);

db_update('node_revision')
    ->fields(array('uid' => $node->uid))
    ->condition('vid', $node->vid)
    ->execute();

这会临时添加工作台访问id,但刷新页面时不会应用它。有没有一种方法可以使用php将节点分配给工作台部分?

我今天第一次安装了这个模块,很有趣,它看起来不错:-)

查看
workbench\u access\u node\u insert()
函数(在
workbench\u access.module
文件中),它查找的节点对象键似乎是
workbench\u access\u id
,而不是
workbench\u access

您还需要提供一个访问方案(根据您在
admin/config/workbench/access/settings
中选择的访问方案,
菜单
分类
)。我认为您的代码应该有点像这样:

$node->workbench_access_scheme['access_scheme'] = 'taxonomy'; // or 'menu'
$node->workbench_access_id = array('66');

这是未经测试的,但查看模块文件,它应该可以工作。

下面的一行对我不起作用

$node->workbench_access_id = array('66');
当我把它改成

$node->workbench_access = array('66');

谢谢,我似乎做了一些类似的功能已经在做。保存节点后,我将节点id、taxonomoy id(access\u id)和访问方案添加到表“workbench\u access\u node”中。这就是我的代码的样子:db_insert('workbench_access_node')->fields(数组('nid'=>$node->nid,'access_id'=>$tid,'access_scheme'=>'taxonomy')->execute();请考虑将此添加到注释中,而不是问题答案。谢谢