как получить значение и установить значение пользовательского поля cck - PullRequest
0 голосов
/ 06 октября 2011

Я знаю, что это может быть глупый вопрос, но у меня есть поле, скажем, a и b, теперь, как получить значение и установить значение для a и b. Прямо сейчас мой код похож на это ..

$n = node_load($node->id);
$n->title;

Я получаю заголовок узла, я хочу знать, как получить и установить значение для a и b, пожалуйста, и если я установлю значение a и b, оно будет сохранено с помощью

node_save ($ п);

??

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Это зависит от того, какую версию вы используете и какие типы полей вы используете, но что-то вроде этого:

// Drupal 6
$n = node_load($node->id);
$n->title = 'A title';
$n->field_my_field_a[0]['value'] = 'A value';
$n->field_my_field_b[0]['value'] = 'B value';
node_save($n);

// Drupal 7
$n = node_load($node->id);
$n->title = 'A title';
$n->field_my_field_a[LANGUAGE_NONE][0]['value'] = 'A value';
$n->field_my_field_b[LANGUAGE_NONE][0]['value'] = 'B value';
node_save($n);

В обоих случаях данные поля будут сохранены вместе с узлом при вызове node_save().

Стоит отметить, что индекс 0 в обоих случаях относится к первому элементу в поле. Если поле имеет несколько значений, вы можете просто добавлять их в массив. Клавиша value может потребоваться изменить в зависимости от типа данных, которые содержит поле (например, файловое поле будет содержать fid (идентификатор файла) файла, которое оно содержит, поэтому настройте его соответствующим образом.

Кроме того, LANGUAGE_NONE может потребоваться заменить требуемый код языка, если вы используете версию Drupal 7.

0 голосов
/ 06 октября 2011

Ваш вопрос немного сбивает с толку, потому что вы никогда не объясняете, что такое и что есть. Но доступ к полю cck обычно выглядит так:

$node = node_load($nid);
$field_value = $node->field_name[0]['value'];

Если это множественный выбор, значения смещаются после нуля. Вы можете установить значение, используя тот же метод:

$node = node_load($nid);
$node->field_name[0]['value'] = $field_value;
node_save($node);
...