Как установить значение настраиваемого поля для узла в Drupal 7? - PullRequest
4 голосов
/ 26 ноября 2011

Я пытаюсь использовать следующий код для добавления нового узла из внешнего скрипта:

    define('DRUPAL_ROOT', getcwd());
    include_once './includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    $node = new stdClass();
    $node->title = "Your node title";
    $node->body = "The body text of your node.";
    $node->type = 'rasskazi';
    $node->created = time();
    $node->changed = $node->created;
    $node->status = 1; // Published?
    $node->promote = 0; // Display on front page?
    $node->sticky = 0; // Display top of page?
    $node->format = 1; // Filtered HTML?
    $node->uid = 1; // Content owner uid (author)?
    $node->language = 'en';
    node_submit($node);
    node_save($node);

Но как установить значение настраиваемого поля (например, целое число 'sup_id')?

Ответы [ 2 ]

7 голосов
/ 26 ноября 2011

Вот так:

$node->field_sup_id[LANGUAGE_NONE] = array(
  0 => array('value' => $the_id)
);

Если ваше поле имеет несколько кардиналов, вы можете добавить дополнительные элементы, например:

$node->field_sup_id[LANGUAGE_NONE] = array(
  0 => array('value' => $the_id),
  1 => array('value' => $other_id)
);

И вы можете использовать элемент language массивачтобы определить, к какому языку относится это конкретное значение поля:

$lang = $node->language; // Or 'en', 'fr', etc.
$node->field_sup_id[$lang] = array(
  0 => array('value' => $the_id),
  1 => array('value' => $other_id)
);

Добавьте их перед вызовом на node_save(), и содержимое поля будет добавлено / обновлено, когда вы его вызовите.

0 голосов
/ 25 июня 2014

Клайв на месте. Вы также можете использовать сокращенный синтаксис массива, который лучше обозначать IMHO ... например,

$node->field_sup_id[LANGUAGE_NONE][0]['value'] = "2499";
...