如何使用Workbench将节分配给特定节点?
问题描述:
我使用的是自定义模块如何使用Workbench将节分配给特定节点?
$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();
这增加工作台临时访问标识,但是当页面刷新时,它不适用它。有没有办法使用PHP分配节点到工作台部分?
答
我刚安装了此模块今天第一次有趣的是,它看起来不错:-)
有一个看看workbench_access_node_insert()
功能(在workbench_access.module
文件),它看起来像它看起来的节点对象键是workbench_access_id
,而不是workbench_access
。
此外,您还需要提供访问方案(根据您在admin/config/workbench/access/settings
选择的访问方案,可以提供menu
或taxonomy
)。我觉得你的代码应该看起来有点像这样:
$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');
+0
请考虑将此添加到评论,但不是问题的答案。谢谢! – Eugene
谢谢,我还挺似乎做类似的功能已经在做一些事情。在保存节点后,我将节点id,taxonomoy id(access_id)和访问方案添加到表'workbench_access_node'中。 所以那么这是我的代码是什么样子: db_insert( 'workbench_access_node') - >字段(阵列( 'NID'=> $节点 - > NID, 'access_id'=> $ TID, 'access_scheme'=>'taxonomy', )) - > execute(); – samwell