0

ノードが挿入または更新されるたびにジオコード ルックアップを実行するサイト (D6) を開発しています。ノードには住所テキスト フィールドと緯度/経度ペアの非表示フィールドがあり、hook_nodeapi 中にこのジオコーディング関数を呼び出したいと考えています。

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

この頭痛を避けるための最良の方法は何ですか?

4

1 に答える 1

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ロジックで破棄されないかどうかはわかりませんが、これは機能するはずです。

于 2012-03-28T10:23:29.203 に答える