Доброе утро Drupal сообществу.
1. Подскажите, есть ли возможность через drupal api изменить содержимое имеющейся ноды и ее дополнительных CCK-полей?
2. И вопрос второй - как задать конкретный термин (уже имеющийся) словаря при создании ноды через node_save [решено].
Спасибо.
Комментарии
Не будет тебе ответа, вопросы задавать не умеешь
RxB по делу бы.
По делу вопрошать надо, иначе твой вопрос можно сократить до "42?".
Изменить ноду, поля?
Что ноду? Что поля?
Изменить значения? Изменить настройки поля? Добавить поля? Удалить поля?
Отвечающие вам, сэр, все варианты расписывать должны?
Понял, вопрос отредактировал.
Сам не пользовался, но если вы не пробывали, то попробуйте, вдруг то, что ищите:)
1. http://api.drupal.ru/api/function/taxonomy_node_save/6 сохраняет связь ноды и термина.
2. Пример кода. Взято здесь.Там в комментариях и по первому вопросу есть пояснения.
<?php$node = new stdClass();
$node->title = 'Node title';
$node->body = 'Node body';
$node->type = 'book';
$node->uid = 1;
$node->filter = 1;
$node->status = 1;
$node->comment = 2;
$node->field_publisher[0]['value'] = 'Foo'; // текстовое cck поле field_publisher
$node->field_author[0]['value'] = 'Bar'; // текстовое cck поле field_author
node_save($node);?>
razz спасибо! Но пример показывает как создать ноду с cck, а мне нужно отредактировать уже имеющиеся ноды, поля.
Но зато по таксономии нашлась инфа в комменте.
Осталось пока что открытым - редактирование содержимого полей через api.
А почему нельзя изменить ноду таким же образом?
Вы вытаскиваете ноду http://api.drupal.ru/api/function/node_load/6 и присваиваете новые значения свойствам ноды, после чего сохраняете. Попробуйте, я этого ни разу не делал:)
Заработало :).
Спасибо широко известному XandeadX, вот тут коммент, который помог.
И так, все вопросы решены, всем спасибо.
Возможному кому-то из новичков будут полезны коды создания, редактирования нод через API.
1. Создание ноды, присваивание ее к таксономии. В примере таксономия "товар". Можно писать ее без переменной, это для другого нужно мне. :
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$node = new stdClass();
$node->title = "Заголовок новости";
$node->body = "jjjjjjJJJJJJJJJjjjjjjjjjj";
$node->teaser = $node->body;
$node->type = "product";
$node->created = time(); // дата создания
$node->changed = $node->created; // дата обновления
$node->status = 1; // нода опубликована
$node->format = 1; // используется фильтр Filtered HTML
$node->comment = 2; // комментарии разрешены
$node->uid = 1; // ноду добавил "Гость", можно поставить uid=1, тогда ноду добавит админ сайта
$node->language = 'ru'; // нода на русском языке
$node->field_v[0]['value']='Gutenberg';
$te = Товар;
$terms = taxonomy_get_term_by_name($te);
if (count($terms)) {
foreach ($terms as $value) {
$node->taxonomy[$value->tid] = $value;
}
}
node_save($node);
$new_id = $node->nid;
2. Изменение полей ноды, в данном случае изменяем титл и новое cck-поле "V" ноды номер 162.
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$node = node_load(162);
$node->title = "Заголовок измененный";
$node->field_v[0]['value']='ололол';
node_save($node);
В том случае, если URL генерируются модулем патчавто, то URL соотв. изменится. Видимо это тоже как-то можно решить, но сейчас это не требуется.