What is incorrect with this HOOK_node_presave method ?? Trying to modify a FAPI textfield
Your structure is wrong, you are missing the 'value' part. Something like this should work:

$node-&gt;field_product_short['und'][0]['value'] = 'test';


I'd recommend to explicitly use [0] instead of [], the first always writes the first field value while the second appends a new one (which is 0 if it is the first). Within it are the actual values of the field, which is, in case of a text field the mentioned 'value'. A term refernence would be tid, a node reference nid and so on.

The reason you are getting 't' is because the field structure is now a string where Drupal expects an array. Example:

$string = 'abc';
echo $string['value'];


This prints 'a', because only integers are supported when accessing strings like this which means 'value' is casted to a 0 and the first character of the $string is 'a'. Welcome to the strange world of PHP.

And another hint. The callback stuff is there because there also exists a function 't'. krumo doesn't know if something is a callback or not (as this is not possible to know in PHP), it simply checks if a function with the same name exists.