Комментарии 15
Берем 3 функции (отлично документированные в API) и пишем топик на хабр. Profit!
В следующий раз напишите про другие 3 функции, вдруг кто-то о них не знает.
Да, я видел, что это перевод.
Да, обращение, скорее не к переводчику, а к автору.
В следующий раз напишите про другие 3 функции, вдруг кто-то о них не знает.
Да, я видел, что это перевод.
Да, обращение, скорее не к переводчику, а к автору.
А по моему нормальная и достаточно полезная статья, особенно для начинающих друпалистов.
Читайте api.drupal.org, посоны! Там еще много интересного!
Хотя не, не читайте, меньше конкурентов.
Хотя не, не читайте, меньше конкурентов.
Уж лучше читать. Чтобы конкуренты не разбегались по другим ЦМС и не уводили к ним клиентов
Тут чувствуется, что у автора наболело :-), чёткое выражение того, что ему не очень хочется теперь работать с кодом, который ему достался вместе с заказчиком от предыдущих команд и этакий крик души «ребята, давайте API использовать». На самом деле, я за свою историю тоже повидал всяких извращений и не только с полями. Автор молодец, писать надо правильно!
Получается, что для получения одного значения одного поля ноды мне нужно загрузить весь объект ноды. Может я чего-то не понимаю, но как тут насчет производительности? Выдернуть это значение строчкой запроса как бы легче.
Значения полей сущности актуальны в контексте вывода самой сущности. В моей практике не возникало необходимости выводить значения полей отдельно от самой сущности.
Но если стоит именно такая задача — да, сделать запрос к БД предпочтительнее.
Но если стоит именно такая задача — да, сделать запрос к БД предпочтительнее.
Не нужно панически бояться загрузки ноды, поскольку она кешируется. Когда речь идет о сотнях нод, то конечно нужно искать какие то альтернативы.
… а как правильно сделать:
$node->field_name['und'][0]['value'] = $content;
Точно так же, как и для safe_value:
$content = field_view_field('node', $node, 'field_name');
Или я неверно понял Ваш вопрос?
$content = field_view_field('node', $node, 'field_name');
Или я неверно понял Ваш вопрос?
Все, дошло. Чтобы сохранить программно значение поля, необходимо загрузить объект сущности(ноды в Вашем случае), присвоить значение полям и сохранить сущность. Примерно так:
$node = node_load($nid);
$node->field_name[$node->language][0]['value'] = $value;
$node->field_name[$node->language][0]['safe_value'] = check_plain($value);
node_save($node);
Если нода имеет нейтральный язык, вместо $node->language используйте «und».
$node = node_load($nid);
$node->field_name[$node->language][0]['value'] = $value;
$node->field_name[$node->language][0]['safe_value'] = check_plain($value);
node_save($node);
Если нода имеет нейтральный язык, вместо $node->language используйте «und».
Странное форматирование в тэгах «code», но всё же код прикреплю =)
создание/редактирование field collection: drupal.org/node/1842304
создание/редактирование обычного материала: www.leveltendesign.com/blog/randall-knutson/if-you-arent-using-entity-api-create-nodes-you-are-doing-it-wrong#.UPjgNx02YcQ
создание/редактирование field collection: drupal.org/node/1842304
$fc_item = entity_create('field_collection_item', array('field_name' => 'field_text_files'));
$fc_item->setHostEntity('node', $my_node);
$fc_wrapper = entity_metadata_wrapper('field_collection_item', $fc_item);
$fc_wrapper->field_source_txt_filename->set('my_text_file.txt');
$fc_wrapper->save(true);
node_save($my_node);
создание/редактирование обычного материала: www.leveltendesign.com/blog/randall-knutson/if-you-arent-using-entity-api-create-nodes-you-are-doing-it-wrong#.UPjgNx02YcQ
$node = new EntityDrupalWrapper('node', 1);
$node->field_reference[0]->set(463); // Note that this is a multi value field.
$node->field_text->set('Some Value'); // Note that this is a single value field.
$node->save();
Какой-то Хабр злой стал. Нормальная статья для начинающих друпалистов.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Правильный вывод полей в Drupal 7