Как назначить раздел для конкретного узла с помощью Workbench? - PullRequest
1 голос
/ 01 ноября 2011

Я создаю узлы с использованием пользовательских модулей

$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();

Но теперь мне нужно назначить каждому узлу a я создаю раздел рабочей среды, поэтому я попытался сделать это:

$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 ]

2 голосов
/ 01 ноября 2011

Я только что установил этот модуль сегодня достаточно забавно, он выглядит неплохо: -)

Если посмотреть на функцию workbench_access_node_insert() (в файле workbench_access.module), она выглядит как узелКлюч объекта, который он ищет, это workbench_access_id, а не workbench_access.

Также вам необходимо указать схему доступа (либо menu, либо taxonomy в зависимости от того, какую схему доступа вы выбрали при admin/config/workbench/access/settings).Я думаю, ваш код должен выглядеть примерно так:

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

Это не проверено, но, глядя на файл модуля, оно должно работать.

0 голосов
/ 16 октября 2015

Следующая строка не работает для меня.

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

Это сработало, когда я изменил ее на

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