2011-08-07 5 views
0

誰かが私がプログラムでcckフィールドを更新する方法を教えてもらえますか?任意の成功なしプログラムでDrupalのCCKフィールドを更新する

$node->location[field_location][0][city] = 'tracker city'; 
    $node->location[field_location][0][latitude] = 8.888888; 
    $node->location[field_location][0][longitude] = 9.999999; 

私は、次のコードをしようとしています。 私はデータベースと直接対話することができますが、私は別の解決策を探しています。

誰でも手助けできますか?

+0

あなたはそのコードをどこに置いていますか?これによりノードオブジェクト内のフィールドの値が更新されますが、変更後もノードを保存する必要があります。 – loganfsmyth

+0

コードはhook_nodeapiのカスタムモジュールにあります。私はpresaveをチェックして、コードを実行しています。私もコードの後に​​node_saveを呼び出すことを試みましたが、ちょうどサイトを破壊し、 "接続が予期せず終了しました"というメッセージの白い画面に表示されます – sisko

+0

'system'テーブルのモジュールの重量が 'ロケーションモジュール。これにより、モジュールの 'presave'がロケーションモジュールによって上書きされます。私はあなたのモジュールと 'location'モジュールの重みの両方が 'system'テーブルで0に設定されていると推測しています。モジュールの重みを1に変更してみてください。 –

答えて

0

これをプレ保存に入れて、適切に保存する必要があります。私は、都市、緯度、経度が正しいキーであることを100%確信しているわけではありませんが、あなたがそれらを持っていたので、私はそれらを残しています。問題が解決しない場合、あなたはDevelのモジュールをインストールして、ノードオブジェクトを表示し、適切な形式があり、正確にものを見るためにNODE 'のDevel]タブを使用する必要があります

$node->field_location[0][city]  = 'tracker city'; 
$node->field_location[0][latitude] = 8.888888; 
$node->field_location[0][longitude] = 8.999999; 

+0

配列キーに関して、私はDevel出力を調べ、リストされた配列データを使用しました。それはすべて正しいようだが、気になることはちょうど協力しません。 – sisko

+0

多くの考えの後、私は、私が試して何かをしようとするとcck配列のインデックスが存在しないため、私のcckのアップデートがうまくいかない理由(特に新しいcckフィールドを挿入する)が来たと思った。$ node-> field_location [ 1] [市]。だから、私はこの問題を処理するために、より堅牢なプログラムソリューションが必要になります。実際の解決策が見つかったら、ここに投稿してください – sisko

0
<?php 
$node->language = LANGUAGE_NONE; 
$node->field_custom_name[$node->language][0]['value'] = 'This is a custom field value'; 
?> 

詳細はhereを参照してください。

関連する問題