2011-11-01 99 views
1

我使用的是自定義模塊如何使用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分配節點到工作臺部分?

回答

2

我剛安裝了此模塊今天第一次有趣的是,它看起來不錯:-)

有一個看看workbench_access_node_insert()功能(在workbench_access.module文件),它看起來像它看起來的節點對象鍵是workbench_access_id,而不是workbench_access

此外,您還需要提供訪問方案(根據您在admin/config/workbench/access/settings選擇的訪問方案,可以提供menutaxonomy)。我覺得你的代碼應該看起來有點像這樣:

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

這是未經測試,但我們看到的模塊文件,它應該工作。

+0

謝謝,我還挺似乎做類似的功能已經在做一些事情。在保存節點後,我將節點id,taxonomoy id(access_id)和訪問方案添加到表'workbench_access_node'中。 所以那麼這是我的代碼是什麼樣子: db_insert( 'workbench_access_node') - >字段(陣列( 'NID'=> $節點 - > NID, 'access_id'=> $ TID, 'access_scheme'=>'taxonomy', )) - > execute(); – samwell

0

以下行對我不起作用。

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

它工作時,我把它改成

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

請考慮將此添加到評論,但不是問題的答案。謝謝! – Eugene

相關問題