2012-03-27 10 views
0

ノードを挿入または更新するたびにジオコードルックアップを実行するサイト(D6)を開発しています。ノードにはアドレス欄とlat/lngペアの非表示フィールドがあります、そしてhook_nodeapiの間に私はこのジオコーディング関数を呼びたいと思います。hook_nodeapi recusrion hell(更新時にnode_saveを呼び出す)

問題は、ジオコーダがこの新しいlatlngペアをノードに保存する必要があり、ノードがhook_nodeapiを呼び出すため、再帰の問題が発生したことです。

この頭痛を避ける最良の方法は?あなたはジオコーダの動作を変更することはできませんことを、completly確実な場合

答えて

0

は、あなたが簡単な回避策を使用することができます。

static $geocoded_nodes = array(); 

if (!$geocoded_nodes[$node->nid]) { 
    $geocoded_nodes[$node->nid] = TRUE; 
    call_geocoder_stuff(). 
} 

代替案として、あなたはまた、未使用のフィールドを追加しようとすることができロジックをジオコーダに渡されたノードに。

if (!isset($node->geocoding_done)) { 
    $node->geocoding_done = TRUE; 
    call_geocoder_stuff($node). 
} 

このフィールドをnode_saveロジックで破棄しないかどうかはわかりませんが、これはうまくいくはずです。

関連する問題