2013-03-12 76 views
0

我只想使用node_save()来更改我的文章中图像字段的值,并且使用下面的代码。更改图像字段的内容

$node = node_load(1); 
$node->field_image["und"][0]["filename"] = $file_name; 
node_save($node); 

当我按下F5时,我的文章中的图像没有改变。

我的代码有什么问题吗?

+0

[This] [1]可能有些帮助。 [1]:http://api.drupalize.me/api/drupal/function/EntityMetadataIntegrationTestCase::testImageFields/7 – 2013-03-13 08:26:48

回答

1

我找到应对的问题,像这些是使用Devel模块的最简单的方法。

在你的代码,你可以这样做:

$node = node_load(1); 
dsm($node); 
.... 
node_save($node); 
dsm($node); 

杰韦利DSM()函数将&,你将能够检查你想编辑的任何值输出节点的属性。

在上面的例子中,我可以在编辑之前检查&。如果一切看起来都正确,那么这只是一个清除缓存的问题。

0

一旦我做了这样的事情,它可能不是最好的,但它的工作对我来说:

$file = file_load($node->field_image['und'][0]['fid']); 
unset($node->field_image['und'][0]); 
file_delete($file); 

$file_path = drupal_realpath('sites/default/files/image.png'); 
$file = (object) array(
      'uid' => 1, 
      'uri' => $file_path, 
      'filemime' => file_get_mimetype($file_path), 
      'status' => 1, 
); 
$file = file_copy($file, 'public://'); 
$node->field_im['und'][0] = (array) $file;