2013-03-12 90 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;